You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 09:48:20