When a high-order allocation fails, kswapd is kicked so that it reclaims
at a higher-order to avoid direct reclaimers stall and to help GFP_ATOMIC
allocations. Something has changed in recent kernels that affect the timing
where high-order GFP_ATOMIC allocations are now failing with more frequency,
particularly under pressure. This patch forces kswapd to notice sooner that
high-order allocations are occuring.

Signed-off-by: Mel Gorman <[email protected]>
---
 mm/vmscan.c |    9 +++++++++
 1 files changed, 9 insertions(+), 0 deletions(-)

diff --git a/mm/vmscan.c b/mm/vmscan.c
index 64e4388..cd68109 100644
--- a/mm/vmscan.c
+++ b/mm/vmscan.c
@@ -2016,6 +2016,15 @@ loop_again:
                                        priority != DEF_PRIORITY)
                                continue;
 
+                       /*
+                        * Exit quickly to restart if it has been indicated
+                        * that higher orders are required
+                        */
+                       if (pgdat->kswapd_max_order > order) {
+                               all_zones_ok = 1;
+                               goto out;
+                       }
+
                        if (!zone_watermark_ok(zone, order,
                                        high_wmark_pages(zone), end_zone, 0))
                                all_zones_ok = 0;
-- 
1.6.3.3

--
To unsubscribe from this list: send the line "unsubscribe kernel-testers" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to