Skip to content

Commit

Permalink
slub: Move node determination out of hotpath
Browse files Browse the repository at this point in the history
If the node does not change then there is no need to recalculate
the node from the page struct. So move the node determination
into the places where we acquire a new slab page.

Signed-off-by: Christoph Lameter <cl@linux.com>
Signed-off-by: Pekka Enberg <penberg@kernel.org>
  • Loading branch information
Christoph Lameter authored and Pekka Enberg committed Apr 17, 2011
1 parent 01ad8a7 commit dc1fb7f
Showing 1 changed file with 5 additions and 4 deletions.
9 changes: 5 additions & 4 deletions mm/slub.c
Original file line number Diff line number Diff line change
Expand Up @@ -1828,7 +1828,6 @@ static void *__slab_alloc(struct kmem_cache *s, gfp_t gfpflags, int node,
c->freelist = get_freepointer(s, object);
page->inuse = page->objects;
page->freelist = NULL;
c->node = page_to_nid(page);

unlock_out:
slab_unlock(page);
Expand All @@ -1845,8 +1844,10 @@ static void *__slab_alloc(struct kmem_cache *s, gfp_t gfpflags, int node,
new_slab:
page = get_partial(s, gfpflags, node);
if (page) {
c->page = page;
stat(s, ALLOC_FROM_PARTIAL);
load_from_page:
c->node = page_to_nid(page);
c->page = page;
goto load_freelist;
}

Expand All @@ -1867,8 +1868,8 @@ static void *__slab_alloc(struct kmem_cache *s, gfp_t gfpflags, int node,

slab_lock(page);
__SetPageSlubFrozen(page);
c->page = page;
goto load_freelist;

goto load_from_page;
}
if (!(gfpflags & __GFP_NOWARN) && printk_ratelimit())
slab_out_of_memory(s, gfpflags, node);
Expand Down

0 comments on commit dc1fb7f

Please sign in to comment.