> + /* > + * If an allocation failed after direct reclaim, it could be because > + * pages are pinned on the per-cpu lists. Drain them and try again > + */ > + if (!page && !drained) { > + drain_all_pages(); > + drained = true; > + goto retry; > + } nit: when slub, get_page_from_freelist() failure is frequently happen than slab because slub try to allocate high order page at first. So, I guess we have to avoid drain_all_pages() if __GFP_NORETRY is passed. >From 9209ceb1d48446b031576ba9360036ddabc1a0e5 Mon Sep 17 00:00:00 2001 From: KOSAKI Motohiro <kosaki.motohiro@xxxxxxxxxxxxxx> Date: Fri, 10 Sep 2010 03:29:05 +0900 Subject: [PATCH] mm: don't call drain_all_pages() when __GFP_NORETRY SLUB try to allocate high order pages at first. therefore page allocator eventually call drain_all_pages() frequently. We don't hope IPI storm. Thus, we don't call drain_all_pages() when caller passed __GFP_NORETRY. Signed-off-by: KOSAKI Motohiro <kosaki.motohiro@xxxxxxxxxxxxxx> --- mm/page_alloc.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/mm/page_alloc.c b/mm/page_alloc.c index 8587c10..b9eafb1 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c @@ -1878,7 +1878,7 @@ retry: * If an allocation failed after direct reclaim, it could be because * pages are pinned on the per-cpu lists. Drain them and try again */ - if (!page && !drained) { + if (!page && !drained && !(gfp_mask & __GFP_NORETRY)) { drain_all_pages(); drained = true; goto retry; -- 1.6.5.2 -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxxx For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href