lkml.org 
[lkml]   [2014]   [Apr]   [17]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH 5/5] hugetlb: add support for gigantic page allocation at runtime
    On Thu, 10 Apr 2014 13:58:45 -0400 Luiz Capitulino <lcapitulino@redhat.com> wrote:

    > HugeTLB is limited to allocating hugepages whose size are less than
    > MAX_ORDER order. This is so because HugeTLB allocates hugepages via
    > the buddy allocator. Gigantic pages (that is, pages whose size is
    > greater than MAX_ORDER order) have to be allocated at boottime.
    >
    > However, boottime allocation has at least two serious problems. First,
    > it doesn't support NUMA and second, gigantic pages allocated at
    > boottime can't be freed.
    >
    > This commit solves both issues by adding support for allocating gigantic
    > pages during runtime. It works just like regular sized hugepages,
    > meaning that the interface in sysfs is the same, it supports NUMA,
    > and gigantic pages can be freed.
    >
    > For example, on x86_64 gigantic pages are 1GB big. To allocate two 1G
    > gigantic pages on node 1, one can do:
    >
    > # echo 2 > \
    > /sys/devices/system/node/node1/hugepages/hugepages-1048576kB/nr_hugepages
    >
    > And to free them all:
    >
    > # echo 0 > \
    > /sys/devices/system/node/node1/hugepages/hugepages-1048576kB/nr_hugepages
    >
    > The one problem with gigantic page allocation at runtime is that it
    > can't be serviced by the buddy allocator. To overcome that problem, this
    > commit scans all zones from a node looking for a large enough contiguous
    > region. When one is found, it's allocated by using CMA, that is, we call
    > alloc_contig_range() to do the actual allocation. For example, on x86_64
    > we scan all zones looking for a 1GB contiguous region. When one is found,
    > it's allocated by alloc_contig_range().
    >
    > One expected issue with that approach is that such gigantic contiguous
    > regions tend to vanish as runtime goes by. The best way to avoid this for
    > now is to make gigantic page allocations very early during system boot, say
    > from a init script. Other possible optimization include using compaction,
    > which is supported by CMA but is not explicitly used by this commit.

    Why aren't we using compaction?



    \
     
     \ /
      Last update: 2014-04-18 01:21    [W:9.656 / U:0.112 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site