From: David Rientjes <rientjes@google.com>
To: Lee Schermerhorn <Lee.Schermerhorn@hp.com>
Cc: linux-mm@kvack.org, linux-numa@vger.kernel.org,
akpm@linux-foundation.org, Mel Gorman <mel@csn.ul.ie>,
Randy Dunlap <randy.dunlap@oracle.com>,
Nishanth Aravamudan <nacc@us.ibm.com>,
Adam Litke <agl@us.ibm.com>, Andy Whitcroft <apw@canonical.com>,
eric.whitney@hp.com
Subject: Re: [PATCH 1/11] hugetlb: rework hstate_next_node_* functions
Date: Tue, 22 Sep 2009 13:13:26 -0700 (PDT) [thread overview]
Message-ID: <alpine.DEB.1.00.0909221310390.24191@chino.kir.corp.google.com> (raw)
In-Reply-To: <1253650095.4973.12.camel@useless.americas.hpqcorp.net>
On Tue, 22 Sep 2009, Lee Schermerhorn wrote:
> > > static int hstate_next_node_to_alloc(struct hstate *h)
> > > {
> > > - int next_nid;
> > > - next_nid = next_node(h->next_nid_to_alloc, node_online_map);
> > > - if (next_nid == MAX_NUMNODES)
> > > - next_nid = first_node(node_online_map);
> > > + int nid, next_nid;
> > > +
> > > + nid = h->next_nid_to_alloc;
> > > + next_nid = next_node_allowed(nid);
> > > h->next_nid_to_alloc = next_nid;
> > > - return next_nid;
> > > + return nid;
> > > }
> > >
> > > static int alloc_fresh_huge_page(struct hstate *h)
> >
> > I thought you had refactored this to drop next_nid entirely since gcc
> > optimizes it away?
>
> Looks like I handled that in the subsequent patch. Probably you had
> commented about removing next_nid on that patch.
>
Ah, I see it in 2/11, thanks.
> > > @@ -693,7 +711,7 @@ static int free_pool_huge_page(struct hs
> > > int next_nid;
> > > int ret = 0;
> > >
> > > - start_nid = h->next_nid_to_free;
> > > + start_nid = hstate_next_node_to_free(h);
> > > next_nid = start_nid;
> > >
> > > do {
> > > @@ -715,9 +733,10 @@ static int free_pool_huge_page(struct hs
> > > }
> > > update_and_free_page(h, page);
> > > ret = 1;
> > > + break;
> > > }
> > > next_nid = hstate_next_node_to_free(h);
> > > - } while (!ret && next_nid != start_nid);
> > > + } while (next_nid != start_nid);
> > >
> > > return ret;
> > > }
> > > @@ -1028,10 +1047,9 @@ int __weak alloc_bootmem_huge_page(struc
> > > void *addr;
> > >
> > > addr = __alloc_bootmem_node_nopanic(
> > > - NODE_DATA(h->next_nid_to_alloc),
> > > + NODE_DATA(hstate_next_node_to_alloc(h)),
> > > huge_page_size(h), huge_page_size(h), 0);
> > >
> > > - hstate_next_node_to_alloc(h);
> > > if (addr) {
> > > /*
> > > * Use the beginning of the huge page to store the
> >
> > Shouldn't that panic if hstate_next_node_to_alloc() returns a memoryless
> > node since it uses node_online_map?
>
> Well, the code has always been like this. And, these allocs shouldn't
> panic given a memoryless node. The run time ones don't anyway. If
> '_THISNODE' is specified, it'll just fail with a NULL addr, else it's
> walk the generic zonelist to find the first node that can provide the
> requested page size. Of course, we don't want that fallback when
> populating the pools with persistent huge pages, so we always use the
> THISNODE flag.
>
Whether NODE_DATA() exists for a memoryless node is arch-dependent, I
think, so the panic I was referring to was a NULL pointer in bootmem. I
think you're safe with the conversion to N_HIGH_MEMORY in patch 9/11 upon
further inspection, though.
> Having said that, I've only recently started to [try to] create the
> gigabyte pages on my x86_64 [Shanghai] test system, but haven't been
> able to allocate any GB pages. 2.6.31 seems to hang early in boot with
> the command line options: "hugepagesz=1GB, hugepages=16". I've got
> 256GB of memory on this system, so 16GB shouldn't be a problem to find
> at boot time. Just started looking at this.
>
I can try to reproduce that on one of my systems too, I've never tried it
before.
Thanks.
--
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:[~2009-09-22 20:13 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-09-15 20:43 [PATCH 0/11] hugetlb: V7 constrain allocation/free based on task mempolicy Lee Schermerhorn
2009-09-15 20:43 ` [PATCH 1/11] hugetlb: rework hstate_next_node_* functions Lee Schermerhorn
2009-09-22 18:08 ` David Rientjes
2009-09-22 20:08 ` Lee Schermerhorn
2009-09-22 20:13 ` David Rientjes [this message]
2009-09-15 20:44 ` [PATCH 2/11] hugetlb: add nodemask arg to huge page alloc, free and surplus adjust fcns Lee Schermerhorn
2009-09-15 20:44 ` [PATCH 3/11] hugetlb: introduce alloc_nodemask_of_node Lee Schermerhorn
2009-09-15 20:44 ` [PATCH 4/11] hugetlb: derive huge pages nodes allowed from task mempolicy Lee Schermerhorn
2009-09-15 20:44 ` [PATCH 5/11] hugetlb: add generic definition of NUMA_NO_NODE Lee Schermerhorn
2009-09-17 13:28 ` Mel Gorman
2009-09-15 20:44 ` [PATCH 6/11] hugetlb: add per node hstate attributes Lee Schermerhorn
2009-09-15 20:45 ` [PATCH 7/11] hugetlb: update hugetlb documentation for mempolicy based management Lee Schermerhorn
2009-09-16 13:37 ` Mel Gorman
2009-09-15 20:45 ` [PATCH 8/11] hugetlb: Optionally use mempolicy for persistent huge page allocation Lee Schermerhorn
2009-09-16 13:48 ` Mel Gorman
2009-09-15 20:45 ` [PATCH 9/11] hugetlb: use only nodes with memory for huge pages Lee Schermerhorn
2009-09-15 20:45 ` [PATCH 10/11] hugetlb: handle memory hot-plug events Lee Schermerhorn
2009-09-15 20:45 ` [PATCH 11/11] hugetlb: offload per node attribute registrations Lee Schermerhorn
2009-10-06 3:17 [PATCH 0/11] hugetlb: V9 numa control of persistent huge pages alloc/free Lee Schermerhorn
2009-10-06 3:17 ` [PATCH 1/11] hugetlb: rework hstate_next_node_* functions Lee Schermerhorn
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=alpine.DEB.1.00.0909221310390.24191@chino.kir.corp.google.com \
--to=rientjes@google.com \
--cc=Lee.Schermerhorn@hp.com \
--cc=agl@us.ibm.com \
--cc=akpm@linux-foundation.org \
--cc=apw@canonical.com \
--cc=eric.whitney@hp.com \
--cc=linux-mm@kvack.org \
--cc=linux-numa@vger.kernel.org \
--cc=mel@csn.ul.ie \
--cc=nacc@us.ibm.com \
--cc=randy.dunlap@oracle.com \
/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