Commit 5ae67abc authored by Kent Overstreet's avatar Kent Overstreet
Browse files

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: default avatarKent Overstreet <kent.overstreet@linux.dev>
parent 26447d22
Loading
Loading
Loading
Loading
+5 −4
Original line number Diff line number Diff line
@@ -95,6 +95,7 @@ static const struct rhashtable_params bch_btree_cache_params = {
	.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)
+5 −4
Original line number Diff line number Diff line
@@ -36,6 +36,7 @@ static const struct rhashtable_params bch2_btree_key_cache_params = {
	.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
+4 −3
Original line number Diff line number Diff line
@@ -87,6 +87,7 @@ 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),
	.automatic_shrinking	= true,
};

static inline int should_promote(struct bch_fs *c, struct bkey_s_c k,
+4 −3
Original line number Diff line number Diff line
@@ -38,6 +38,7 @@ 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),
	.automatic_shrinking	= true,
};

static struct move_bucket_in_flight *