mm: vmscan: do not apply pressure to slab if we are =
BugLink: http://bugs.launchpad.net/bugs/808509
commit d7868dae893c83c50c7824bc2bc75f93d114669f
During allocator-intensive workloads, kswapd will be woken frequently
causing free memory to oscillate between the high and min watermark. Thi=
s
is expected behaviour.
When kswapd applies pressure to zones during node balancing, it checks if
the zone is above a high+balance_gap threshold. If it is, it does not
apply pressure but it unconditionally shrinks slab on a global basis whic=
h
is excessive. In the event kswapd is being kept awake due to a high smal=
l
unreclaimable zone, it skips zone shrinking but still calls shrink_slab()=
.
Once pressure has been applied, the check for zone being unreclaimable is
being made before the check is made if all_unreclaimable should be set.
This miss of unreclaimable can cause has_under_min_watermark_zone to be
set due to an unreclaimable zone preventing kswapd backing off on
congestion_wait().
Signed-off-by: Mel Gorman <mgorman@suse.de>
Reported-by: P=C3=A1draig Brady <P@draigBrady.com>
Tested-by: P=C3=A1draig Brady <P@draigBrady.com>
Tested-by: Andrew Lutomirski <luto@mit.edu>
Acked-by: Rik van Riel <riel@redhat.com>
Reviewed-by: Minchan Kim <minchan.kim@gmail.com>
Reviewed-by: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
Cc: Johannes Weiner <hannes@cmpxchg.org>
Cc: <stable@kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Tim Gardner <tim.gardner@canonical.com>
---
mm/vmscan.c | 25 ++++++++++++++-----------
1 files changed, 14 insertions(+), 11 deletions(-)