无法使用testpmd使用所有内存通道

时间:2018-03-23 14:42:15

标签: memory-management hardware dpdk

我正在使用testpmd(DPDK 17.11.1)。我创建了两个端口P0和P1,我将流量从P0发送到P1。我发现它只使用了两个内存通道。以下是启动testpmd的命令:

./testpmd -n4 -l2,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33 -- --rxd=4096 --txd=4096 --numa --rxq=8 --txq=8 --nb-cores=16 --numa --forward-mode=mac -i

这是pcm工具的结果,它表示正在使用4个内存通道中的2个:

|---------------------------------------||---------------------------------------|
|---------------------------------------||---------------------------------------|
|--             Socket  0             --||--             Socket  1             --|
|---------------------------------------||---------------------------------------|
|--     Memory Channel Monitoring     --||--     Memory Channel Monitoring     --|
|---------------------------------------||---------------------------------------|
|-- Mem Ch  0: Reads (MB/s):     0.06 --||-- Mem Ch  0: Reads (MB/s):     0.01 --|
|--            Writes(MB/s):     0.13 --||--            Writes(MB/s):     0.01 --|
|-- Mem Ch  1: Reads (MB/s):   141.17 --||-- Mem Ch  1: Reads (MB/s):  1642.35 --|
|--            Writes(MB/s):   262.84 --||--            Writes(MB/s): 11842.28 --|
|-- Mem Ch  2: Reads (MB/s):   140.44 --||-- Mem Ch  2: Reads (MB/s):  1639.97 --|
|--            Writes(MB/s):   261.67 --||--            Writes(MB/s): 11850.11 --|
|-- Mem Ch  3: Reads (MB/s):     0.46 --||-- Mem Ch  3: Reads (MB/s):     0.40 --|
|--            Writes(MB/s):     0.55 --||--            Writes(MB/s):     0.40 --|
|-- NODE 0 Mem Read (MB/s) :   282.13 --||-- NODE 1 Mem Read (MB/s) :  3282.72 --|
|-- NODE 0 Mem Write(MB/s) :   525.19 --||-- NODE 1 Mem Write(MB/s) : 23692.79 --|
|-- NODE 0 P. Write (T/s):      15496 --||-- NODE 1 P. Write (T/s):      15947 --|
|-- NODE 0 Memory (MB/s):      807.33 --||-- NODE 1 Memory (MB/s):    26975.52 --|
|---------------------------------------||---------------------------------------|
|---------------------------------------||---------------------------------------|
|--                 System Read Throughput(MB/s):       3564.86                --|
|--                System Write Throughput(MB/s):      24217.99                --|
|--               System Memory Throughput(MB/s):      27782.84                --|
|---------------------------------------||---------------------------------------|

如何使用所有四个内存通道?

1 个答案:

答案 0 :(得分:0)

我们使用-n指定的内存通道数量并不多:它只是将每个内存池元素与不同的内存通道对齐,如DPDK Programmer's Guide

中所述

即使我们在那里放了一个无效的数字,我们仍然应该能够使用所有的频道,也许不是那么理想。可能存在一些极端情况,但这些很少见,并且不仅可以使用-n选项轻松“修复”,还可以使用--mbuf-size=N选项调整testpmd mbuf大小(即内存池元素),如上所述在Testpmd User Guide

所以,我的猜测是命令行选项并不重要,真正的问题是你使用的系统每个NUMA节点没有四个DIMM,即没有8个独立的DIMM。您可以尝试使用sudo dmidecode | grep DIMM或仅使用物理检查。