• Lee Schermerhorn's avatar
    hugetlb: restore interleaving of bootmem huge pages · 57dd28fb
    Lee Schermerhorn authored
    I noticed that alloc_bootmem_huge_page() will only advance to the next
    node on failure to allocate a huge page, potentially filling nodes with
    huge-pages.  I asked about this on linux-mm and linux-numa, cc'ing the
    usual huge page suspects.
    
    Mel Gorman responded:
    
    	I strongly suspect that the same node being used until allocation
    	failure instead of round-robin is an oversight and not deliberate
    	at all. It appears to be a side-effect of a fix made way back in
    	commit 63b4613c ["hugetlb: fix
    	hugepage allocation with memoryless nodes"]. Prior to that patch
    	it looked like allocations would always round-robin even when
    	allocation was successful.
    
    This patch--factored out of my "hugetlb mempolicy" series--moves the
    advance of the hstate next node from which to allocate up before the test
    for success of the attempted allocation.
    
    Note that alloc_bootmem_huge_page() is only used for order > MAX_ORDER
    huge pages.
    
    I'll post a separate patch for mainline/stable, as the above mentioned
    "balance freeing" series renamed the next node to alloc function.
    Signed-off-by: default avatarLee Schermerhorn <lee.schermerhorn@hp.com>
    Reviewed-by: default avatarMel Gorman <mel@csn.ul.ie>
    Reviewed-by: default avatarAndy Whitcroft <apw@canonical.com>
    Reviewed-by: default avatarAndi Kleen <andi@firstfloor.org>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    57dd28fb
hugetlb.c 62.4 KB