The patch titled hugetlb: restore interleaving of bootmem huge pages has been added to the -mm tree. Its filename is hugetlb-restore-interleaving-of-bootmem-huge-pages.patch Before you just go and hit "reply", please: a) Consider who else should be cc'ed b) Prefer to cc a suitable mailing list as well c) Ideally: find the original patch on the mailing list and do a reply-to-all to that, adding suitable additional cc's *** Remember to use Documentation/SubmitChecklist when testing your code *** See http://userweb.kernel.org/~akpm/stuff/added-to-mm.txt to find out what to do about this The current -mm tree may be found at http://userweb.kernel.org/~akpm/mmotm/ ------------------------------------------------------ Subject: hugetlb: restore interleaving of bootmem huge pages From: Lee Schermerhorn <Lee.Schermerhorn@xxxxxx> 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 63b4613c3f0d4b724ba259dc6c201bb68b884e1a ["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: Lee Schermerhorn <lee.schermerhorn@xxxxxx> Reviewed-by: Mel Gorman <mel@xxxxxxxxx> Reviewed-by: Andy Whitcroft <apw@xxxxxxxxxxxxx> Cc: Andi Kleen <andi@xxxxxxxxxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> --- mm/hugetlb.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff -puN mm/hugetlb.c~hugetlb-restore-interleaving-of-bootmem-huge-pages mm/hugetlb.c --- a/mm/hugetlb.c~hugetlb-restore-interleaving-of-bootmem-huge-pages +++ a/mm/hugetlb.c @@ -1031,6 +1031,7 @@ int __weak alloc_bootmem_huge_page(struc NODE_DATA(h->next_nid_to_alloc), huge_page_size(h), huge_page_size(h), 0); + hstate_next_node_to_alloc(h); if (addr) { /* * Use the beginning of the huge page to store the @@ -1040,7 +1041,6 @@ int __weak alloc_bootmem_huge_page(struc m = addr; goto found; } - hstate_next_node_to_alloc(h); nr_nodes--; } return 0; _ Patches currently in -mm which might be from Lee.Schermerhorn@xxxxxx are hugetlb-use-free_pool_huge_page-to-return-unused-surplus-pages-fix.patch hugetlb-restore-interleaving-of-bootmem-huge-pages.patch -- To unsubscribe from this list: send the line "unsubscribe mm-commits" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html