bcachefs: Enable automatic shrinking for rhashtables
Since the key cache shrinker walks the rhashtable, a mostly empty rhashtable leads to really nasty reclaim performance issues. Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
This commit is contained in:
parent
26447d224a
commit
5ae67abcdf
@ -91,10 +91,11 @@ static int bch2_btree_cache_cmp_fn(struct rhashtable_compare_arg *arg,
|
||||
}
|
||||
|
||||
static const struct rhashtable_params bch_btree_cache_params = {
|
||||
.head_offset = offsetof(struct btree, hash),
|
||||
.key_offset = offsetof(struct btree, hash_val),
|
||||
.key_len = sizeof(u64),
|
||||
.obj_cmpfn = bch2_btree_cache_cmp_fn,
|
||||
.head_offset = offsetof(struct btree, hash),
|
||||
.key_offset = offsetof(struct btree, hash_val),
|
||||
.key_len = sizeof(u64),
|
||||
.obj_cmpfn = bch2_btree_cache_cmp_fn,
|
||||
.automatic_shrinking = true,
|
||||
};
|
||||
|
||||
static int btree_node_data_alloc(struct bch_fs *c, struct btree *b, gfp_t gfp)
|
||||
|
@ -32,10 +32,11 @@ static int bch2_btree_key_cache_cmp_fn(struct rhashtable_compare_arg *arg,
|
||||
}
|
||||
|
||||
static const struct rhashtable_params bch2_btree_key_cache_params = {
|
||||
.head_offset = offsetof(struct bkey_cached, hash),
|
||||
.key_offset = offsetof(struct bkey_cached, key),
|
||||
.key_len = sizeof(struct bkey_cached_key),
|
||||
.obj_cmpfn = bch2_btree_key_cache_cmp_fn,
|
||||
.head_offset = offsetof(struct bkey_cached, hash),
|
||||
.key_offset = offsetof(struct bkey_cached, key),
|
||||
.key_len = sizeof(struct bkey_cached_key),
|
||||
.obj_cmpfn = bch2_btree_key_cache_cmp_fn,
|
||||
.automatic_shrinking = true,
|
||||
};
|
||||
|
||||
__flatten
|
||||
|
@ -84,9 +84,10 @@ struct promote_op {
|
||||
};
|
||||
|
||||
static const struct rhashtable_params bch_promote_params = {
|
||||
.head_offset = offsetof(struct promote_op, hash),
|
||||
.key_offset = offsetof(struct promote_op, pos),
|
||||
.key_len = sizeof(struct bpos),
|
||||
.head_offset = offsetof(struct promote_op, hash),
|
||||
.key_offset = offsetof(struct promote_op, pos),
|
||||
.key_len = sizeof(struct bpos),
|
||||
.automatic_shrinking = true,
|
||||
};
|
||||
|
||||
static inline int should_promote(struct bch_fs *c, struct bkey_s_c k,
|
||||
|
@ -35,9 +35,10 @@ struct buckets_in_flight {
|
||||
};
|
||||
|
||||
static const struct rhashtable_params bch_move_bucket_params = {
|
||||
.head_offset = offsetof(struct move_bucket_in_flight, hash),
|
||||
.key_offset = offsetof(struct move_bucket_in_flight, bucket.k),
|
||||
.key_len = sizeof(struct move_bucket_key),
|
||||
.head_offset = offsetof(struct move_bucket_in_flight, hash),
|
||||
.key_offset = offsetof(struct move_bucket_in_flight, bucket.k),
|
||||
.key_len = sizeof(struct move_bucket_key),
|
||||
.automatic_shrinking = true,
|
||||
};
|
||||
|
||||
static struct move_bucket_in_flight *
|
||||
|
Loading…
Reference in New Issue
Block a user