[dpdk-dev] [PATCH 0/9] mem: reduce memory fragmentation
Thomas Monjalon
thomas at monjalon.net
Fri Jul 13 11:06:45 CEST 2018
11/06/2018 22:55, Anatoly Burakov:
> This patchset is mostly dealing with changes fbarray, but it is
> actually about reducing fragmentation in Linuxapp memalloc.
>
> We allocate hugepages from lower VA to higher VA. However, our
> malloc heap allocates addresses from higher VA to lower VA. This
> results in a situation where, whenever new page is allocated,
> malloc starts to allocate memory from the top, leaving fragmented
> space between new allocation's leftover and previous leftover.
>
> Over time, this leads to lots of free elements sitting at page
> boundaries, small enough to be useful but large enough to have an
> impact on memory fragmentation in certain circumstances.
>
> To fix this, we need to allocate memory from higher VA first.
> However, in order to do that, we need the ability to search fbarray
> in reverse, which is currently not supported. Adding this support is
> what most of this patchset is about.
>
> First 4 patches fix some issues in existing fbarray implementation
> and remove some code duplication, preparing for adding of new
> functionality.
>
> Next 3 patches add new functionality - reverse search of used/free
> slots, mirroring already existing functionality in semantics and
> capable of returning identical results but in reverse order.
>
> Patch 8 adds unit tests for fbarray, testing both existing and new
> functionality.
>
> Finally, patch 9 changes memalloc to look up free slots in memseg
> list in reverse order. No other changes is necessary, as all other
> code can handle segments, wherever they are allocated.
>
> Anatoly Burakov (9):
> fbarray: fix errno values returned from functions
> fbarray: reduce duplication in find_contig code
> fbarray: reduce duplication in find_next_n code
> fbarray: reduce duplication in find_next code
> fbarray: add reverse find_free/used
> fbarray: add reverse find n used/free
> fbarray: add reverse find contig used/free
> test: add fbarray autotests
> memalloc: allocate memory in reverse
Applied, thanks
More information about the dev
mailing list