mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-01-17 15:26:07 -05:00
bcachefs: Leave a buffer in the btree key cache to avoid lock thrashing
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
This commit is contained in:
@@ -915,6 +915,14 @@ static unsigned long bch2_btree_key_cache_count(struct shrinker *shrink,
|
||||
long nr = atomic_long_read(&bc->nr_keys) -
|
||||
atomic_long_read(&bc->nr_dirty);
|
||||
|
||||
/*
|
||||
* Avoid hammering our shrinker too much if it's nearly empty - the
|
||||
* shrinker code doesn't take into account how big our cache is, if it's
|
||||
* mostly empty but the system is under memory pressure it causes nasty
|
||||
* lock contention:
|
||||
*/
|
||||
nr -= 128;
|
||||
|
||||
return max(0L, nr);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user