aboutsummaryrefslogtreecommitdiffstats
path: root/mm
diff options
context:
space:
mode:
Diffstat (limited to 'mm')
-rw-r--r--mm/vmscan.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/mm/vmscan.c b/mm/vmscan.c
index f51a33e8ed89..7e0f05797388 100644
--- a/mm/vmscan.c
+++ b/mm/vmscan.c
@@ -2125,6 +2125,22 @@ static void shrink_zones(int priority, struct zonelist *zonelist,
2125 continue; 2125 continue;
2126 if (zone->all_unreclaimable && priority != DEF_PRIORITY) 2126 if (zone->all_unreclaimable && priority != DEF_PRIORITY)
2127 continue; /* Let kswapd poll it */ 2127 continue; /* Let kswapd poll it */
2128 if (COMPACTION_BUILD) {
2129 /*
2130 * If we already have plenty of memory
2131 * free for compaction, don't free any
2132 * more. Even though compaction is
2133 * invoked for any non-zero order,
2134 * only frequent costly order
2135 * reclamation is disruptive enough to
2136 * become a noticable problem, like
2137 * transparent huge page allocations.
2138 */
2139 if (sc->order > PAGE_ALLOC_COSTLY_ORDER &&
2140 (compaction_suitable(zone, sc->order) ||
2141 compaction_deferred(zone)))
2142 continue;
2143 }
2128 /* 2144 /*
2129 * This steals pages from memory cgroups over softlimit 2145 * This steals pages from memory cgroups over softlimit
2130 * and returns the number of reclaimed pages and 2146 * and returns the number of reclaimed pages and