From mboxrd@z Thu Jan 1 00:00:00 1970 From: Christoph Lameter Subject: Re: [PATCH 02/15] mm: sl[au]b: Add knowledge of PFMEMALLOC reserve pages Date: Fri, 10 Feb 2012 16:07:57 -0600 (CST) Message-ID: References: <1328568978-17553-3-git-send-email-mgorman@suse.de> <20120208144506.GI5938@suse.de> <20120208163421.GL5938@suse.de> <20120208212323.GM5938@suse.de> <20120209125018.GN5938@suse.de> <20120210102605.GO5938@suse.de> Mime-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Cc: Andrew Morton , Linux-MM , Linux-Netdev , LKML , David Miller , Neil Brown , Peter Zijlstra , Pekka Enberg To: Mel Gorman Return-path: In-Reply-To: Sender: owner-linux-mm@kvack.org List-Id: netdev.vger.kernel.org Proposal for a patch for slub to move the pfmemalloc handling out of the fastpath by simply not assigning a per cpu slab when pfmemalloc processing is going on. Subject: [slub] Fix so that no mods are required for the fast path Remove the check for pfmemalloc from the alloc hotpath and put the logic after the election of a new per cpu slab. For a pfmemalloc page do not use the fast path but force use of the slow path (which is also used for the debug case). Signed-off-by: Christoph Lameter --- mm/slub.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) Index: linux-2.6/mm/slub.c =================================================================== --- linux-2.6.orig/mm/slub.c 2012-02-10 09:58:13.066125970 -0600 +++ linux-2.6/mm/slub.c 2012-02-10 10:06:07.114113000 -0600 @@ -2273,11 +2273,12 @@ new_slab: } } - if (likely(!kmem_cache_debug(s))) + if (likely(!kmem_cache_debug(s) && pfmemalloc_match(c, gfpflags))) goto load_freelist; + /* Only entered in the debug case */ - if (!alloc_debug_processing(s, c->page, object, addr)) + if (kmem_cache_debug(s) && !alloc_debug_processing(s, c->page, object, addr)) goto new_slab; /* Slab failed checks. Next slab needed */ c->freelist = get_freepointer(s, object); @@ -2327,8 +2328,7 @@ redo: barrier(); object = c->freelist; - if (unlikely(!object || !node_match(c, node) || - !pfmemalloc_match(c, gfpflags))) + if (unlikely(!object || !node_match(c, node))) object = __slab_alloc(s, gfpflags, node, addr, c); else { -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Fight unfair telecom internet charges in Canada: sign http://stopthemeter.ca/ Don't email: email@kvack.org