diff options
| author | David S. Miller <davem@davemloft.net> | 2018-09-25 20:35:29 +0300 |
|---|---|---|
| committer | David S. Miller <davem@davemloft.net> | 2018-09-25 20:35:29 +0300 |
| commit | a06ee256e5d6f03fffbd088de9bf84035658cc5a (patch) | |
| tree | 9b88044cd4a46496d15a05b43246810c8b677f46 /mm/vmscan.c | |
| parent | bd6207202db8974ca3d3183ca0d5611d45b2973c (diff) | |
| parent | 846e8dd47c264e0b359afed28ea88e0acdee6818 (diff) | |
| download | linux-a06ee256e5d6f03fffbd088de9bf84035658cc5a.tar.xz | |
Merge ra.kernel.org:/pub/scm/linux/kernel/git/davem/net
Version bump conflict in batman-adv, take what's in net-next.
iavf conflict, adjustment of netdev_ops in net-next conflicting
with poll controller method removal in net.
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'mm/vmscan.c')
| -rw-r--r-- | mm/vmscan.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/mm/vmscan.c b/mm/vmscan.c index 7e7d25504651..c7ce2c161225 100644 --- a/mm/vmscan.c +++ b/mm/vmscan.c @@ -476,6 +476,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", |
