[PATCH 3/5] Revert "Revert "mm, oom: protect !costly allocations some more for !CONFIG_COMPACTION""
Paolo Pisati
paolo.pisati at canonical.com
Wed Aug 23 15:31:50 UTC 2017
BugLink: http://bugs.launchpad.net/bugs/1712598
This reverts commit 7b84469d8206394eace2ce2fc04417bb69b0f012.
Signed-off-by: Paolo Pisati <paolo.pisati at canonical.com>
---
mm/page_alloc.c | 18 ++++++++++++++++++
1 file changed, 18 insertions(+)
diff --git a/mm/page_alloc.c b/mm/page_alloc.c
index 7460e81..ebaf218 100644
--- a/mm/page_alloc.c
+++ b/mm/page_alloc.c
@@ -2927,6 +2927,24 @@ should_compact_retry(struct alloc_context *ac, unsigned int order, int alloc_fla
enum migrate_mode *migrate_mode,
int compaction_retries)
{
+ struct zone *zone;
+ struct zoneref *z;
+
+ if (!order || order > PAGE_ALLOC_COSTLY_ORDER)
+ return false;
+
+ /*
+ * There are setups with compaction disabled which would prefer to loop
+ * inside the allocator rather than hit the oom killer prematurely.
+ * Let's give them a good hope and keep retrying while the order-0
+ * watermarks are OK.
+ */
+ for_each_zone_zonelist_nodemask(zone, z, ac->zonelist, ac->high_zoneidx,
+ ac->nodemask) {
+ if (zone_watermark_ok(zone, 0, min_wmark_pages(zone),
+ ac->classzone_idx, alloc_flags))
+ return true;
+ }
return false;
}
#endif /* CONFIG_COMPACTION */
--
2.7.4
More information about the kernel-team
mailing list