Messages in this thread |  | | Date | Fri, 14 Feb 2014 15:14:22 -0800 (PST) | From | David Rientjes <> | Subject | Re: [PATCH 4/4] hugetlb: add hugepages_node= command-line option |
| |
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=<#>
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.
|  |