mem: change default per socket memory allocation
authorDidier Pallard <didier.pallard@6wind.com>
Fri, 9 May 2014 13:30:42 +0000 (15:30 +0200)
committerThomas Monjalon <thomas.monjalon@6wind.com>
Wed, 14 May 2014 09:06:49 +0000 (11:06 +0200)
commit937cca79c9b88641050ad92704997313f74f6149
tree89cf1703e7745a14fc294e8c8b0a7ef13f9a9800
parent1d64e46eb8c4fb8085513e9be824f2377b9c70c7
mem: change default per socket memory allocation

Currently, if there is more memory in hugepages than the amount
requested by dpdk application, the memory is allocated by taking as much
memory as possible from each socket, starting from first one.
For example if a system is configured with 8 GB in 2 sockets (4 GB per
socket), and dpdk is requesting only 4GB of memory, all memory will be
taken in socket 0 (that have exactly 4GB of free hugepages) even if some
cores are configured on socket 1, and there are free hugepages on socket
1...

Change this behaviour to allocate memory on all sockets where some cores
are configured, spreading the memory amongst sockets using following
ratio per socket:
N° of cores configured on the socket / Total number of configured cores
* requested memory
If this new algorithm fails, it defaults to previous behaviour.

This algorithm is used when memory amount is specified globally using
-m option. Per socket memory allocation can always be done using
--socket-mem option.

It is implemented only for Linux as BSD part looks not to be ready for NUMA.

Signed-off-by: Didier Pallard <didier.pallard@6wind.com>
Signed-off-by: David Marchand <david.marchand@6wind.com>
Acked-by: Venky Venkatesan <venky.venkatesan@intel.com>
lib/librte_eal/linuxapp/eal/eal_memory.c