mem: improve segment list preallocation
authorAnatoly Burakov <anatoly.burakov@intel.com>
Fri, 5 Oct 2018 08:29:44 +0000 (09:29 +0100)
committerThomas Monjalon <thomas@monjalon.net>
Mon, 22 Oct 2018 10:40:14 +0000 (12:40 +0200)
commit1dd342d0fdc4f72102f0b48c89b6a39f029004fe
tree32445ec7e219e96524cf0b0204b60276bd9ccebb
parent0042eb56461c77605f18b9c772bc3480df2b486b
mem: improve segment list preallocation

Current code to preallocate segment lists is trying to do
everything in one go, and thus ends up being convoluted,
hard to understand, and, most importantly, does not scale beyond
initial assumptions about number of NUMA nodes and number of
page sizes, and therefore has issues on some configurations.

Instead of fixing these issues in the existing code, simply
rewrite it to be slightly less clever but much more logical, and
provide ample comments to explain exactly what is going on.

We cannot use the same approach for 32-bit code because the
limitations of the target dictate current socket-centric
approach rather than type-centric approach we use on 64-bit
target, so 32-bit code is left unmodified. FreeBSD doesn't
support NUMA so there's no complexity involved there, and thus
its code is much more readable and not worth changing.

Fixes: 1d406458db47 ("mem: make segment preallocation OS-specific")
Cc: stable@dpdk.org
Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
lib/librte_eal/linuxapp/eal/eal_memory.c