page allocator: do not check NUMA node ID when the caller knows the node is valid
Callers of alloc_pages_node() can optionally specify -1 as a node to mean "allocate from the current node". However, a number of the callers in fast paths know for a fact their node is valid. To avoid a comparison and branch, this patch adds alloc_pages_exact_node() that only checks the nid with VM_BUG_ON(). Callers that know their node is valid are then converted. Signed-off-by: Mel Gorman <mel@csn.ul.ie> Reviewed-by: Christoph Lameter <cl@linux-foundation.org> Reviewed-by: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com> Reviewed-by: Pekka Enberg <penberg@cs.helsinki.fi> Acked-by: Paul Mundt <lethal@linux-sh.org> [for the SLOB NUMA bits] Cc: Peter Zijlstra <a.p.zijlstra@chello.nl> Cc: Nick Piggin <nickpiggin@yahoo.com.au> Cc: Dave Hansen <dave@linux.vnet.ibm.com> Cc: Lee Schermerhorn <Lee.Schermerhorn@hp.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:

committed by
Linus Torvalds

parent
b3c466ce51
commit
6484eb3e2a
@@ -1707,7 +1707,7 @@ static void *kmem_getpages(struct kmem_cache *cachep, gfp_t flags, int nodeid)
|
||||
if (cachep->flags & SLAB_RECLAIM_ACCOUNT)
|
||||
flags |= __GFP_RECLAIMABLE;
|
||||
|
||||
page = alloc_pages_node(nodeid, flags, cachep->gfporder);
|
||||
page = alloc_pages_exact_node(nodeid, flags, cachep->gfporder);
|
||||
if (!page)
|
||||
return NULL;
|
||||
|
||||
@@ -3261,7 +3261,7 @@ retry:
|
||||
if (local_flags & __GFP_WAIT)
|
||||
local_irq_enable();
|
||||
kmem_flagcheck(cache, flags);
|
||||
obj = kmem_getpages(cache, local_flags, -1);
|
||||
obj = kmem_getpages(cache, local_flags, numa_node_id());
|
||||
if (local_flags & __GFP_WAIT)
|
||||
local_irq_disable();
|
||||
if (obj) {
|
||||
|
Reference in New Issue
Block a user