On Fri, 20 May 2022 10:34:46 +0200 Antonio Di Bacco <[email protected]> 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.
