Optimizing memory access with DPDK allocated memory
Stephen Hemminger
stephen at networkplumber.org
Fri May 20 17:48:43 CEST 2022
On Fri, 20 May 2022 10:34:46 +0200
Antonio Di Bacco <a.dibacco.ks at gmail.com> wrote:
> Let us say I have two memory channels each one with its own 16GB memory
> module, I suppose the first memory channel will be used when addressing
> physical memory in the range 0 to 0x4 0000 0000 and the second when
> addressing physical memory in the range 0x4 0000 0000 to 0x7 ffff ffff.
> Correct?
> Now, I need to have a 2GB buffer with one "writer" and one "reader", the
> writer writes on half of the buffer (call it A) and, in the meantime, the
> reader reads on the other half (B). When the writer finishes writing its
> half buffer (A), signal it to the reader and they swap, the reader starts
> to read from A and writer starts to write to B.
> If I allocate the whole buffer (on two 1GB hugepages) across the two memory
> channels, one half of the buffer is allocated on the end of first channel
> while the other half is allocated on the start of the second memory
> channel, would this increase performances compared to the whole buffer
> allocated within the same memory channel?
Most systems just interleave memory chips based on number of filled slots.
This is handled by BIOS before kernel even starts.
The DPDK has a number of memory channels parameter and what it does
is try and optimize memory allocation by spreading.
Looks like you are inventing your own limited version of what memif does.
More information about the users
mailing list