linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
From: Luiz Capitulino <lcapitulino@redhat.com>
To: David Rientjes <rientjes@google.com>
Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org,
	akpm@linux-foundation.org, mtosatti@redhat.com, mgorman@suse.de,
	aarcange@redhat.com, andi@firstfloor.org, riel@redhat.com,
	davidlohr@hp.com, isimatu.yasuaki@jp.fujitsu.com,
	yinghai@kernel.org
Subject: Re: [PATCH 4/4] hugetlb: add hugepages_node= command-line option
Date: Fri, 14 Feb 2014 22:58:10 -0500	[thread overview]
Message-ID: <20140214225810.57e854cb@redhat.com> (raw)
In-Reply-To: <alpine.DEB.2.02.1402141511200.13935@chino.kir.corp.google.com>

On Fri, 14 Feb 2014 15:14:22 -0800 (PST)
David Rientjes <rientjes@google.com> wrote:

> On Thu, 13 Feb 2014, Luiz Capitulino wrote:
> 
> > From: Luiz capitulino <lcapitulino@redhat.com>
> > 
> > The HugeTLB command-line option hugepages= allows a user to specify how
> > many huge pages should be allocated at boot. This option is needed because
> > it improves reliability when allocating 1G huge pages, which are better
> > allocated as early as possible due to fragmentation.
> > 
> > However, hugepages= has a limitation. On NUMA systems, hugepages= will
> > automatically distribute memory allocation equally among nodes. For
> > example, if you have a 2-node NUMA system and allocate 200 huge pages,
> > than hugepages= will try to allocate 100 huge pages from node0 and 100
> > from node1.
> > 
> > This is very unflexible, as it doesn't allow you to specify which nodes
> > the huge pages should be allocated from. For example, there are use-cases
> > where the user wants to specify that a 1GB huge page should be allocated
> > from node 2 or that 300 2MB huge pages should be allocated from node 0.
> > 
> > The hugepages_node= command-line option introduced by this commit allows
> > just that.
> > 
> > The syntax is:
> > 
> >   hugepages_node=nid:nr_pages:size,...
> > 
> 
> Again, I think this syntax is horrendous and doesn't couple well with the 
> other hugepage-related kernel command line options.  We already have 
> hugepages= and hugepagesz= which you can interleave on the command line to 
> get 100 2M hugepages and 10 1GB hugepages, for example.
> 
> This patchset is simply introducing another variable to the matter: the 
> node that the hugepages should be allocated on.  So just introduce a 
> hugepagesnode= parameter to couple with the others so you can do
> 
> 	hugepagesz=<size> hugepagesnode=<nid> hugepages=<#>

That was my first try but it turned out really bad. First, for every node
you specify you need three options. So, if you want to setup memory for
three nodes you'll need to specify nine options. And it gets worse, because
hugepagesz= and hugepages= have strict ordering (which is a mistake, IMHO) so
you have to specify them in the right order otherwise things don't work as
expected and you have no idea why (have been there myself).

IMO, hugepages_node=<nid>:<nr_pages>:<size>,... is good enough. It's concise,
and don't depend on any other option to function. Also, there are lots of other
kernel command-line options that require you to specify multiple fields, so
it's not like hugepages_node= is totally different in that regard.

> 
> instead of having completely confusing interfaces where you want to do 
> hugepages_node=1:1:1G for a 1GB hugepage on page 1 (and try remembering 
> which "1" means what, yuck) and "hugepagesz=1GB hugepages=1" if you're 
> indifferent to the node.
> 

--
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>

  reply	other threads:[~2014-02-15  4:02 UTC|newest]

Thread overview: 34+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-02-14  1:02 [PATCH v2 0/4] hugetlb: add hugepages_node= command-line option Luiz Capitulino
2014-02-14  1:02 ` [PATCH 1/4] memblock: memblock_virt_alloc_internal(): add __GFP_THISNODE flag support Luiz Capitulino
2014-02-14  1:02 ` [PATCH 2/4] memblock: add memblock_virt_alloc_nid_nopanic() Luiz Capitulino
2014-02-14  1:02 ` [PATCH 3/4] hugetlb: add parse_pagesize_str() Luiz Capitulino
2014-02-14  1:02 ` [PATCH 4/4] hugetlb: add hugepages_node= command-line option Luiz Capitulino
2014-02-14 23:14   ` David Rientjes
2014-02-15  3:58     ` Luiz Capitulino [this message]
2014-02-15 10:06       ` David Rientjes
2014-02-17 13:56         ` Luiz Capitulino
2014-02-17 23:23           ` David Rientjes
2014-02-18 12:30             ` Marcelo Tosatti
2014-02-18 22:16               ` David Rientjes
2014-02-20  2:22                 ` Marcelo Tosatti
2014-02-20  3:46                   ` David Rientjes
2014-02-20  4:42                     ` Luiz Capitulino
2014-02-20  4:51                       ` David Rientjes
2014-02-20 15:06                         ` Luiz Capitulino
2014-02-20 21:34                     ` Marcelo Tosatti
2014-02-20 23:15                       ` David Rientjes
2014-02-21  2:28                         ` Marcelo Tosatti
2014-02-21 10:07                           ` David Rientjes
2014-02-21 19:10                             ` Marcelo Tosatti
2014-02-21 22:04                               ` David Rientjes
2014-02-21 22:36                                 ` Andi Kleen
2014-02-21 22:44                                   ` David Rientjes
2014-02-21 22:55                                     ` Andi Kleen
2014-02-21  3:35                         ` Luiz Capitulino
2014-02-20 21:38                     ` Marcelo Tosatti
2014-02-20 23:17                       ` David Rientjes
2014-02-18  5:47         ` Davidlohr Bueso
2014-02-21 23:54           ` Andrew Morton
2014-02-22  4:03             ` Andi Kleen
2014-02-22  4:31               ` Davidlohr Bueso
2014-02-22  4:40               ` Andrew Morton

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=20140214225810.57e854cb@redhat.com \
    --to=lcapitulino@redhat.com \
    --cc=aarcange@redhat.com \
    --cc=akpm@linux-foundation.org \
    --cc=andi@firstfloor.org \
    --cc=davidlohr@hp.com \
    --cc=isimatu.yasuaki@jp.fujitsu.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=mgorman@suse.de \
    --cc=mtosatti@redhat.com \
    --cc=riel@redhat.com \
    --cc=rientjes@google.com \
    --cc=yinghai@kernel.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;
as well as URLs for NNTP newsgroup(s).