MIGRATE_HIGHATOMIC page blocks are reserved for an atomic high-order allocation, so use it as late as possible. Signed-off-by: Xishi Qiu <qiuxishi@xxxxxxxxxx> --- mm/page_alloc.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/mm/page_alloc.c b/mm/page_alloc.c index 40d79a6..2331840 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c @@ -2714,14 +2714,12 @@ struct page *rmqueue(struct zone *preferred_zone, spin_lock_irqsave(&zone->lock, flags); do { - page = NULL; - if (alloc_flags & ALLOC_HARDER) { + page = __rmqueue(zone, order, migratetype); + if (!page && alloc_flags & ALLOC_HARDER) { page = __rmqueue_smallest(zone, order, MIGRATE_HIGHATOMIC); if (page) trace_mm_page_alloc_zone_locked(page, order, migratetype); } - if (!page) - page = __rmqueue(zone, order, migratetype); } while (page && check_new_pages(page, order)); spin_unlock(&zone->lock); if (!page) -- 1.8.3.1 -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>