QEMU中Testpmd测试CX6网卡VF性能时PPS异常偏低问题
问题:QEMU中testpmd测试CX6 100G VF性能PPS异常偏低
在QEMU环境下用testpmd测试CX6 100Gbps网卡VF性能,另一台主机用pktgen发包,无论包长是64B还是1518B,testpmd测得的PPS始终维持在0.9Mpps左右,远低于预期的8Mpps~148Mpps。调整testpmd的核心数、队列数后无改善,但iperf3测试能达到较高速率。
环境配置
QEMU启动命令
sudo $qemu_path/qemu-system-x86_64 -cpu host \ -hda ${img}/redhat-9-3.img \ -m 4G -enable-kvm -smp 8 -boot c \ -object memory-backend-file,id=mem1,size=4096M,mem-path=/dev/hugepages,share=on \ -numa node,memdev=mem1 \ -netdev user,id=ur0 \ -device virtio-net-pci,netdev=ur0,addr=11 \ -chardev socket,id=char0,path=/tmp/vdpa-socket0 \ -netdev type=vhost-user,id=mynet0,chardev=char0 \ -device virtio-net-pci,netdev=mynet0 \ -monitor telnet::52000,server,nowait \ -vnc 0.0.0.0:11 &
testpmd启动命令
sudo ./dpdk-testpmd -l 0-4 -n 4 -a 00:03.0 -- --nb-cores=1 --burst=64 -i --rxq=1 --txq=1 --rxd=1024 --txd=1024
testpmd测试数据
64B: Throughput (since last show) Rx-pps: 922446 Rx-bps: 442774552 Rx-pps: 922446 Rx-bps: 442774552 128B: Throughput (since last show) Rx-pps: 900002 Rx-bps: 892802528 Rx-pps: 900011 Rx-bps: 892802528 256B: Throughput (since last show) Rx-pps: 853477 Rx-bps: 1720610528 Rx-pps: 853477 Rx-bps: 1720610528
iperf3测试结果
[ ID] Interval Transfer Bitrate [ 5] 0.00-20.04 sec 16.2 GBytes 6.94 Gbits/sec receiver [ 8] 0.00-20.04 sec 16.5 GBytes 7.08 Gbits/sec receiver [ 10] 0.00-20.04 sec 14.4 GBytes 6.16 Gbits/sec receiver [ 12] 0.00-20.04 sec 14.9 GBytes 6.37 Gbits/sec receiver [SUM] 0.00-20.04 sec 61.9 GBytes 26.5 Gbits/sec receiver -----------------------------------------------------------
排查方向与解决建议
- 检查vhost-user后端类型:当前QEMU使用普通
vhost-user,未利用硬件卸载能力。需确认宿主机已配置vdpa后端,将-netdev类型改为vhost-user-vdpa,确保socket关联vdpa设备后端。 - 验证VF驱动绑定:确认Guest内的VF已绑定到DPDK兼容驱动(如vfio-pci),而非内核驱动。用
dpdk-devbind.py --status检查绑定状态。 - 优化testpmd核心亲和性:避免使用被系统进程占用的核心(如CPU0),指定隔离后的物理核心,例如
-l 2-4 --nb-cores=1 --coremask=0x4,减少CPU抢占。 - 检查巨页配置:确认Guest内巨页数量充足,执行
grep HugePages_ /proc/meminfo查看,确保空闲巨页满足testpmd内存需求。 - 验证pktgen发包配置:确认pktgen以线速发包,开启流模式并配置对应队列数,避免发包端成为性能瓶颈。
- 开启virtio多队列:在QEMU的virtio-net-pci设备添加
mq=on参数,配合testpmd的多队列配置(--rxq=4 --txq=4),提升并行处理能力。 - 关闭QEMU非必要功能:禁用VNC、telnet monitor等功能,减少宿主机CPU开销,释放资源给vhost处理。
内容的提问来源于stack exchange,提问作者Tuesday
相关产品推荐
相关产品推荐

