[PATCH] app/testpmd: fix external buffer allocation

Ferruh Yigit ferruh.yigit at intel.com
Tue Jan 18 14:28:48 CET 2022


On 12/17/2021 9:58 AM, Dmitry Kozlyuk wrote:
> External pinned buffer memory (--mp-alloc=xbuf)
> was allocated as multiple IOVA-contiguous memzones
> of 2M size and 2M alignment.
> Due to the malloc overhead and the alignment requirement,
> each 2M memzone consumed 4M of hugepage memory:
> 2M of usable memory + X of malloc overhead + (2M-X) padding.
> The allocation often failed with 2M hugepages and IOVA-as-PA
> if a PA-contiguous span of 2 hugepages could not be found.
> Also, with any hugepage size and IOVA mode
> memory consumption was almost 2x of the usable amount.
> 
> Alignment requirement of 2M for external buffers is redundant.
> It was an attempt to ensure IOVA-contiguity
> by forcing memzones to start at hugepage boundaries,
> while 2M size intended to leave no unused space on the page.
> As shown above, this in fact caused excessive memory consumption
> and decreased the chance of a successful allocation.
> RTE_MEMZONE_F_IOVA_CONTIG already ensures IOVA-contiguity.
> 
> Remove the alignment requirement.
> Reduce the memzone size by the malloc overhead size (4 cache lines),
> so that memory consumption for each memzone is
> (2M-X) of usable memory + X of malloc overhead = 2M.
> This also means that whenever there are free 2M hugepages,
> an IOVA-contiguous memzone can always be allocated.
> 
> Fixes: 72512e1897b2 ("app/testpmd: add mempool with external data buffers")
> Cc: stable at dpdk.org
> 
> Signed-off-by: Dmitry Kozlyuk <dkozlyuk at nvidia.com>
> Signed-off-by: Viacheslav Ovsiienko <viacheslavo at nvidia.com>

Applied to dpdk-next-net/main, thanks.



More information about the dev mailing list