linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/4] hugetlb: add hugepagesnid= command-line option
@ 2014-02-10 17:27 Luiz Capitulino
  2014-02-10 17:27 ` [PATCH 1/4] memblock: memblock_virt_alloc_internal(): alloc from specified node only Luiz Capitulino
                   ` (7 more replies)
  0 siblings, 8 replies; 32+ messages in thread
From: Luiz Capitulino @ 2014-02-10 17:27 UTC (permalink / raw)
  To: linux-mm; +Cc: linux-kernel, akpm, mtosatti, mgorman, aarcange, andi, riel

HugeTLB command-line option hugepages= allows the user to specify how many
huge pages should be allocated at boot. On NUMA systems, this argument
automatically distributes huge pages allocation among nodes, which can
be undesirable.

The hugepagesnid= option introduced by this commit allows the user
to specify which NUMA nodes should be used to allocate boot-time HugeTLB
pages. For example, hugepagesnid=0,2,2G will allocate two 2G huge pages
from node 0 only. More details on patch 3/4 and patch 4/4.

Luiz capitulino (4):
  memblock: memblock_virt_alloc_internal(): alloc from specified node
    only
  memblock: add memblock_virt_alloc_nid_nopanic()
  hugetlb: add hugepagesnid= command-line option
  hugetlb: hugepagesnid=: add 1G huge page support

 Documentation/kernel-parameters.txt |   8 +++
 arch/x86/mm/hugetlbpage.c           |  35 ++++++++++++
 include/linux/bootmem.h             |   4 ++
 include/linux/hugetlb.h             |   2 +
 mm/hugetlb.c                        | 103 ++++++++++++++++++++++++++++++++++++
 mm/memblock.c                       |  41 ++++++++++++--
 6 files changed, 190 insertions(+), 3 deletions(-)

-- 
1.8.1.4

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

^ permalink raw reply	[flat|nested] 32+ messages in thread
* [PATCH v2 0/4] hugetlb: add hugepages_node= command-line option
@ 2014-02-14  1:02 Luiz Capitulino
  2014-02-14  1:02 ` [PATCH 2/4] memblock: add memblock_virt_alloc_nid_nopanic() Luiz Capitulino
  0 siblings, 1 reply; 32+ messages in thread
From: Luiz Capitulino @ 2014-02-14  1:02 UTC (permalink / raw)
  To: linux-mm
  Cc: linux-kernel, akpm, mtosatti, mgorman, aarcange, andi, riel,
	davidlohr, isimatu.yasuaki, yinghai, rientjes

On a NUMA system, HugeTLB provides support for allocating per-node huge pages
through sysfs. For example, to allocate 300 2M huge pages on node1, one can do:

  echo 300 > /sys/devices/system/node/node1/hugepages/hugepages-2048kB/nr_hugepages

This works as long as you have enough contiguous pages. Which may work for
2M pages, but for 1G huge pages this is likely to fail due to fragmentation
or won't even work actually, as allocating more than MAX_ORDER pages at runtime
doesn't seem to work out of the box for some archs. For 1G huge pages it's
better or even required to reserve them during the kernel boot, which is when
the allocation is more likely to succeed.

To this end we have the hugepages= command-line option, which works but misses
the per node allocation support. This option evenly distributes huge pages
among nodes on a NUMA system. This behavior is very limiting and unflexible.
There are use-cases where users wants to be able to specify which nodes 1G
huge pages should be allocated from.

This series addresses this problem by adding a new kernel comand-line option
called hugepages_node=, which users can use to configure initial huge page
allocation on NUMA. The new option syntax is:

 hugepages_node=nid:nr_pages:size,...

For example, this command-line:

 hugepages_node=0:300:2M,1:4:1G

Allocates 300 2M huge pages from node0 and 4 1G huge pages from node1.

hugepages_node= is non-intrusive (it doesn't touch any core HugeTLB code).
Indeed, all functions and the array added by this series are run only once
and discarded after boot. All the hugepages_node= option does it to set
initial huge page allocation among NUMA nodes.

Changelog:

o v2

 - Change syntax to hugepages_node=nid:nr_pages:size,... [Andi Kleen]
 - Several small improvements [Andrew Morton]
 - Validate node index [Yasuaki Ishimatsu]
 - Use GFP_THISNODE [Mel Gorman]
 - Fold 2MB support patch with 1GB support patch
 - Improve logs and intro email

Luiz capitulino (4):
  memblock: memblock_virt_alloc_internal(): add __GFP_THISNODE flag
    support
  memblock: add memblock_virt_alloc_nid_nopanic()
  hugetlb: add parse_pagesize_str()
  hugetlb: add hugepages_node= command-line option

 Documentation/kernel-parameters.txt |   8 +++
 arch/x86/mm/hugetlbpage.c           |  77 ++++++++++++++++++++++++--
 include/linux/bootmem.h             |   4 ++
 include/linux/hugetlb.h             |   2 +
 mm/hugetlb.c                        | 106 ++++++++++++++++++++++++++++++++++++
 mm/memblock.c                       |  44 ++++++++++++++-
 6 files changed, 232 insertions(+), 9 deletions(-)

-- 
1.8.1.4

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

^ permalink raw reply	[flat|nested] 32+ messages in thread

end of thread, other threads:[~2014-02-14  1:02 UTC | newest]

Thread overview: 32+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-02-10 17:27 [PATCH 0/4] hugetlb: add hugepagesnid= command-line option Luiz Capitulino
2014-02-10 17:27 ` [PATCH 1/4] memblock: memblock_virt_alloc_internal(): alloc from specified node only Luiz Capitulino
2014-02-10 23:27   ` Andrew Morton
2014-02-11  9:20   ` Mel Gorman
2014-02-10 17:27 ` [PATCH 2/4] memblock: add memblock_virt_alloc_nid_nopanic() Luiz Capitulino
2014-02-10 17:27 ` [PATCH 3/4] hugetlb: add hugepagesnid= command-line option Luiz Capitulino
2014-02-10 23:27   ` Andrew Morton
2014-02-11 15:26     ` Luiz Capitulino
2014-02-12  3:44   ` Yasuaki Ishimatsu
2014-02-12 19:39     ` Luiz Capitulino
2014-02-10 17:27 ` [PATCH 4/4] hugetlb: hugepagesnid=: add 1G huge page support Luiz Capitulino
2014-02-10 23:30   ` Andrew Morton
2014-02-11 15:27     ` Luiz Capitulino
2014-02-10 17:55 ` [PATCH 0/4] hugetlb: add hugepagesnid= command-line option Luiz Capitulino
2014-02-10 23:13 ` Andrew Morton
2014-02-11  3:58   ` Davidlohr Bueso
2014-02-11 15:10   ` Luiz Capitulino
2014-02-11  2:54 ` David Rientjes
2014-02-11  9:25   ` Mel Gorman
2014-02-11 15:26     ` Marcelo Tosatti
2014-02-11 17:10       ` Mel Gorman
2014-02-11 20:15         ` Marcelo Tosatti
2014-02-12 10:39           ` Mel Gorman
2014-02-11 15:36   ` Luiz Capitulino
2014-02-12  3:59     ` David Rientjes
2014-02-12 20:09       ` Luiz Capitulino
2014-02-11 21:17 ` Andi Kleen
2014-02-11 21:31   ` Luiz Capitulino
2014-02-12  2:37     ` Andi Kleen
2014-02-12  4:01       ` David Rientjes
2014-02-12 19:33       ` Luiz Capitulino
  -- strict thread matches above, loose matches on Subject: below --
2014-02-14  1:02 [PATCH v2 0/4] hugetlb: add hugepages_node= " Luiz Capitulino
2014-02-14  1:02 ` [PATCH 2/4] memblock: add memblock_virt_alloc_nid_nopanic() Luiz Capitulino

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