Re: weird allocation pattern in alloc_ila_locks

From: Eric Dumazet
Date: Sat Jan 07 2017 - 13:37:53 EST


On Sat, Jan 7, 2017 at 1:27 AM, Michal Hocko <mhocko@xxxxxxxxxx> wrote:
> On Fri 06-01-17 14:14:49, Eric Dumazet wrote:

>> I believe the intent was to get NUMA spreading, a bit like what we have
>> in alloc_large_system_hash() when hashdist == HASHDIST_DEFAULT
>
> Hmm, I am not sure this works as expected then. Because it is more
> likely that all pages backing the vmallocked area will come from the
> local node than spread around more nodes. Or did I miss your point?

Well, you missed that vmalloc() is aware of NUMA policies.

If current process has requested interleave on 2 nodes (as it is done
at boot time on a dual node system),
then vmalloc() of 8 pages will allocate 4 pages on each node.

If you force/attempt a kmalloc() of one order-3 page, chances are very
high to get all memory on one single node.