mm: fix check for reclaimable pages in PF_MEMALLOC reclaim throttling
authorJohannes Weiner <[email protected]>
Wed, 3 May 2017 21:51:54 +0000 (14:51 -0700)
committerLinus Torvalds <[email protected]>
Wed, 3 May 2017 22:52:07 +0000 (15:52 -0700)
PF_MEMALLOC direct reclaimers get throttled on a node when the sum of
all free pages in each zone fall below half the min watermark.  During
the summation, we want to exclude zones that don't have reclaimables.
Checking the same pgdat over and over again doesn't make sense.

Fixes: 599d0c954f91 ("mm, vmscan: move LRU lists to node")
Link: http://lkml.kernel.org/r/[email protected]
Signed-off-by: Johannes Weiner <[email protected]>
Acked-by: Hillf Danton <[email protected]>
Acked-by: Michal Hocko <[email protected]>
Cc: Jia He <[email protected]>
Cc: Mel Gorman <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
mm/vmscan.c

index 667644e53b5c488ffa2c8e8bb90e7d0bc3bd5510..52832bedb2ed9eaacfedd97fbb7146e51755733a 100644 (file)
@@ -2835,8 +2835,10 @@ static bool allow_direct_reclaim(pg_data_t *pgdat)
 
        for (i = 0; i <= ZONE_NORMAL; i++) {
                zone = &pgdat->node_zones[i];
-               if (!managed_zone(zone) ||
-                   pgdat_reclaimable_pages(pgdat) == 0)
+               if (!managed_zone(zone))
+                       continue;
+
+               if (!zone_reclaimable_pages(zone))
                        continue;
 
                pfmemalloc_reserve += min_wmark_pages(zone);