我正在使用 Intel X710 以太网控制器(4 x 10G 端口)和 DPDK + DPDK pktgen 来生成 40gbps 流量。我可以用一个端口和一个核心达到 10Gbps,用两个端口和两个核心达到 20Gbps,但不能用四个核心和四个端口达到 40gbps。(28gbps 是极限)
我检查了 PCIe 3.0 插槽、内存带宽和 CPU 的插槽位置,但似乎没什么问题。
这可能是什么问题?
使用Intel xeon e5 2690 x2、sun microsystem 主板X9DRG-QF、112GB 内存。
我使用的确切命令是sudo -E ./app/x86_64-native-linuxapp-gcc/pktgen -l 0,1,2,3,4 -n 8 --proc-type primary -- -N -T -P -m 1.0 -m 2.1 -m 3.2 -m 4.3 -f themes/black-yellow.theme.
cpu_layout.py 的输出是
cores = [0, 1, 2, 3, 4, 5, 6, 7]
sockets = [0, 1]
Socket 0 Socket 1
-------- --------
Core 0 [0, 16] [8, 24]
Core 1 [1, 17] [9, 25]
Core 2 [2, 18] [10, 26]
Core 3 [3, 19] [11, 27]
Core 4 [4, 20] [12, 28]
Core 5 [5, 21] [13, 29]
Core 6 [6, 22] [14, 30]
Core 7 [7, 23] [15, 31]
DPDK:17.11.3 软件包:3.5.0
谢谢。
答案1
我有一台 X710,配备 4 * 10G 和 E5-2699v4,运行频率为 2.2Ghz。我能够生成 40Gbps 的流量,数据包大小为 128 字节。如果我使用 64 字节数据包,我能够生成 30Mpps。
设置我已经在所需的 CPU 上使用 isolcpus 和 nohz_full,X710 和核心位于相同的 NUMA 上,并为端口“-m [1:2].0, [3:4].1, [5:6].2, [7:8].3”分配单独的 rx|tx 线程。