• Mike Kravetz's avatar
    hugetlb: restructure pool allocations · d67e32f2
    Mike Kravetz authored
    Allocation of a hugetlb page for the hugetlb pool is done by the routine
    alloc_pool_huge_page.  This routine will allocate contiguous pages from a
    low level allocator, prep the pages for usage as a hugetlb page and then
    add the resulting hugetlb page to the pool.
    
    In the 'prep' stage, optional vmemmap optimization is done.  For
    performance reasons we want to perform vmemmap optimization on multiple
    hugetlb pages at once.  To do this, restructure the hugetlb pool
    allocation code such that vmemmap optimization can be isolated and later
    batched.
    
    The code to allocate hugetlb pages from bootmem was also modified to
    allow batching.
    
    No functional changes, only code restructure.
    
    Link: https://lkml.kernel.org/r/20231019023113.345257-3-mike.kravetz@oracle.comSigned-off-by: default avatarMike Kravetz <mike.kravetz@oracle.com>
    Reviewed-by: default avatarMuchun Song <songmuchun@bytedance.com>
    Tested-by: default avatarSergey Senozhatsky <senozhatsky@chromium.org>
    Cc: Anshuman Khandual <anshuman.khandual@arm.com>
    Cc: Barry Song <21cnbao@gmail.com>
    Cc: David Hildenbrand <david@redhat.com>
    Cc: David Rientjes <rientjes@google.com>
    Cc: James Houghton <jthoughton@google.com>
    Cc: Joao Martins <joao.m.martins@oracle.com>
    Cc: Konrad Dybcio <konradybcio@kernel.org>
    Cc: Matthew Wilcox (Oracle) <willy@infradead.org>
    Cc: Miaohe Lin <linmiaohe@huawei.com>
    Cc: Michal Hocko <mhocko@suse.com>
    Cc: Naoya Horiguchi <naoya.horiguchi@linux.dev>
    Cc: Oscar Salvador <osalvador@suse.de>
    Cc: Usama Arif <usama.arif@bytedance.com>
    Cc: Xiongchun Duan <duanxiongchun@bytedance.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    d67e32f2
hugetlb.c 213 KB