From: Nishanth Aravamudan <nacc@us.ibm.com>
To: Christoph Lameter <clameter@sgi.com>
Cc: Lee Schermerhorn <Lee.Schermerhorn@hp.com>,
akpm@linux-foundation.org, linux-mm@kvack.org, ak@suse.de
Subject: Re: [patch 2/3] Fix GFP_THISNODE behavior for memoryless nodes
Date: Wed, 13 Jun 2007 16:11:53 -0700 [thread overview]
Message-ID: <20070613231153.GW3798@us.ibm.com> (raw)
In-Reply-To: <Pine.LNX.4.64.0706131535200.32399@schroedinger.engr.sgi.com>
On 13.06.2007 [15:46:11 -0700], Christoph Lameter wrote:
> On Wed, 13 Jun 2007, Lee Schermerhorn wrote:
>
> > SLUB early allocation, included in the patch. Works on HP ia64 platform
> > with small DMA only node and "zone order" zonelists. Will test on
> > x86_64 real soon now...
>
> I do not see the difference?? How does this work? node_memory(x) fails
> there?
>
> > The map of nodes with memory may include nodes with just
> > DMA/DMA32 memory. Using this map/mask together with
> > GFP_THISNODE will not guarantee on-node allocations at higher
> > zones. Modify checks in alloc_pages_node() to ensure that the
> > first zone in the selected zonelist is "on-node".
>
> That check is already done by __alloc_pages.
>
> > This change will result in alloc_pages_node() returning NULL
> > when GFP_THISNODE is specified and the first zone in the zonelist
> > selected by (nid, gfp_zone(gfp_mask) is not on node 'nid'. This,
> > in turn, BUGs out in slub.c:early_kmem_cache_node_alloc() which
> > apparently can't handle a NULL page from new_slab(). Fix SLUB
> > to handle NULL page in early allocation.
>
> Ummm... Slub would need to consult node_memory_map instead I guess.
>
> > Index: Linux/mm/slub.c
> > ===================================================================
> > --- Linux.orig/mm/slub.c 2007-06-13 16:36:02.000000000 -0400
> > +++ Linux/mm/slub.c 2007-06-13 16:38:41.000000000 -0400
> > @@ -1870,16 +1870,18 @@ static struct kmem_cache_node * __init e
> > /* new_slab() disables interupts */
> > local_irq_enable();
> >
> > - BUG_ON(!page);
> > - n = page->freelist;
> > - BUG_ON(!n);
> > - page->freelist = get_freepointer(kmalloc_caches, n);
> > - page->inuse++;
> > - kmalloc_caches->node[node] = n;
> > - setup_object_debug(kmalloc_caches, page, n);
> > - init_kmem_cache_node(n);
> > - atomic_long_inc(&n->nr_slabs);
> > - add_partial(n, page);
> > + if (page) {
> > + n = page->freelist;
> > + BUG_ON(!n);
> > + page->freelist = get_freepointer(kmalloc_caches, n);
> > + page->inuse++;
> > + kmalloc_caches->node[node] = n;
> > + setup_object_debug(kmalloc_caches, page, n);
> > + init_kmem_cache_node(n);
> > + atomic_long_inc(&n->nr_slabs);
> > + add_partial(n, page);
> > + } else
> > + kmalloc_caches->node[node] = NULL;
> > return n;
> > }
>
> It would be easier to modify SLUB to loop over node_memory_map instead of
> node_online_map? Potentially we have to change all loops over online node
> in the slab allocators.
So, I think we are really close to closing the gaps here. Just need to
figure out how to fix Lee's platform so it does what he wants, I think.
I've tested the current set (which is going to change again, once we
figure out how to deal with SLUB (I'm guessing we'll go with your patch
Christoph, but it didn't exist when I was testing earlier :) and Lee's
platform properly). But everything, including the sysfs allocator, works
with a 4-node x86_64, with all nodes populated and a 4-node ppc64, with
only 2 nodes populated.
I would like to roll up the patches and small fixes into a set of 4 or 5
patches that Andrew can pick up, so once this is all stable, I'll post a
fresh series. Sound good, Andrew?
Thanks,
Nish
--
Nishanth Aravamudan <nacc@us.ibm.com>
IBM Linux Technology Center
--
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/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
next prev parent reply other threads:[~2007-06-13 23:11 UTC|newest]
Thread overview: 40+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-06-12 20:48 [patch 0/3] Fixes for NUMA allocations on " clameter
2007-06-12 20:48 ` [patch 1/3] NUMA: introduce node_memory_map clameter
2007-06-12 21:03 ` David Rientjes
2007-06-12 21:08 ` Christoph Lameter
2007-06-12 21:10 ` David Rientjes
2007-06-12 21:27 ` Christoph Lameter
2007-06-12 21:34 ` David Rientjes
2007-06-12 21:37 ` Christoph Lameter
2007-06-12 21:38 ` David Rientjes
2007-06-12 21:36 ` Nishanth Aravamudan
2007-06-12 21:39 ` Christoph Lameter
2007-06-12 21:42 ` Nishanth Aravamudan
2007-06-12 21:45 ` David Rientjes
2007-06-12 22:26 ` Christoph Lameter
2007-06-12 22:32 ` Nishanth Aravamudan
2007-06-13 9:14 ` Andy Whitcroft
2007-06-12 20:48 ` [patch 2/3] Fix GFP_THISNODE behavior for memoryless nodes clameter
2007-06-12 21:03 ` David Rientjes
2007-06-12 21:07 ` Christoph Lameter
2007-06-12 21:08 ` David Rientjes
2007-06-12 21:25 ` Christoph Lameter
2007-06-12 21:34 ` David Rientjes
2007-06-12 21:51 ` Nishanth Aravamudan
2007-06-13 21:10 ` Lee Schermerhorn
2007-06-13 21:57 ` Nishanth Aravamudan
2007-06-13 22:46 ` Christoph Lameter
2007-06-13 23:11 ` Nishanth Aravamudan [this message]
2007-06-13 23:15 ` Christoph Lameter
2007-06-13 23:20 ` Nishanth Aravamudan
2007-06-13 23:26 ` Christoph Lameter
2007-06-13 23:32 ` Nishanth Aravamudan
2007-06-13 23:53 ` Christoph Lameter
2007-06-14 0:04 ` Nishanth Aravamudan
2007-06-14 14:18 ` Lee Schermerhorn
2007-06-14 14:24 ` Christoph Lameter
2007-06-14 14:55 ` Lee Schermerhorn
2007-06-14 15:51 ` Christoph Lameter
2007-06-14 7:07 ` Christoph Lameter
2007-06-14 14:23 ` Nishanth Aravamudan
2007-06-12 20:48 ` [patch 3/3] Fix MPOL_INTERLEAVE " clameter
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20070613231153.GW3798@us.ibm.com \
--to=nacc@us.ibm.com \
--cc=Lee.Schermerhorn@hp.com \
--cc=ak@suse.de \
--cc=akpm@linux-foundation.org \
--cc=clameter@sgi.com \
--cc=linux-mm@kvack.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox