Suggested by Manfred Spraul.Does it work for order != 0 allocations? It's important that the big hash tables do not end up all in node 0. AFAICS alloc_pages_current() calls interleave_nodes() only for order==0 allocs.
__get_free_pages had a hack to do node interleaving allocation at boot time.
This patch sets an interleave process policy using the NUMA API for init
and the idle threads instead. Before entering the user space init the policy
is reset to default again. Result is the same.
Advantage is less code and removing of a check from a fast path.
Removes more code than it adds.
I verified that the memory distribution after boot is roughly the same.