Loading mm/vmscan.c +11 −0 Original line number Diff line number Diff line Loading @@ -349,6 +349,17 @@ static unsigned long do_shrink_slab(struct shrink_control *shrinkctl, delta = freeable >> priority; delta *= 4; do_div(delta, shrinker->seeks); /* * Make sure we apply some minimal pressure on default priority * even on small cgroups. Stale objects are not only consuming memory * by themselves, but can also hold a reference to a dying cgroup, * preventing it from being reclaimed. A dying cgroup with all * corresponding structures like per-cpu stats and kmem caches * can be really big, so it may lead to a significant waste of memory. */ delta = max_t(unsigned long long, delta, min(freeable, batch_size)); total_scan += delta; if (total_scan < 0) { pr_err("shrink_slab: %pF negative objects to delete nr=%ld\n", Loading Loading
mm/vmscan.c +11 −0 Original line number Diff line number Diff line Loading @@ -349,6 +349,17 @@ static unsigned long do_shrink_slab(struct shrink_control *shrinkctl, delta = freeable >> priority; delta *= 4; do_div(delta, shrinker->seeks); /* * Make sure we apply some minimal pressure on default priority * even on small cgroups. Stale objects are not only consuming memory * by themselves, but can also hold a reference to a dying cgroup, * preventing it from being reclaimed. A dying cgroup with all * corresponding structures like per-cpu stats and kmem caches * can be really big, so it may lead to a significant waste of memory. */ delta = max_t(unsigned long long, delta, min(freeable, batch_size)); total_scan += delta; if (total_scan < 0) { pr_err("shrink_slab: %pF negative objects to delete nr=%ld\n", Loading