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

如何在DPDK test-pmd中实现NIC队列的负载均衡

解决DPDK test-pmd中VMXNET3队列负载不均的实操步骤

一、修正test-pmd启动参数

当前启动参数存在portmask与portlist的冲突,先调整为正确的启动命令,同时开启RSS分流规则:

sudo ./dpdk-testpmd -l 0-7 -n 4 -- -i --portlist=0,1 --nb-cores=6 --txq=8 --rxq=8 --rss-ip --rss-udp --rss-tcp

参数说明:

  • -l 0-7:核0作为主核,核1-7用于数据包处理
  • --portlist=0,1:明确启用两块VMXNET3网卡对应的Port0和Port1
  • --nb-cores=6:分配6个从核负责队列的数据包转发
  • --txq=8 --rxq=8:保持每个端口8个收发队列的配置
  • --rss-*:开启基于IP、UDP、TCP报文的RSS硬件分流

二、test-pmd shell内配置队列映射与RSS

  1. 检查当前端口RSS状态:
show port rss all
  1. 配置RSS哈希密钥(增强哈希随机性,两块端口保持一致):
set port rss key 0 0x0102030405060708090a0b0c0d0e0f10
set port rss key 1 0x0102030405060708090a0b0c0d0e0f10
  1. 为端口启用指定协议的RSS分流:
set port rss ip 0 enable
set port rss udp 0 enable
set port rss tcp 0 enable
set port rss ip 1 enable
set port rss udp 1 enable
set port rss tcp 1 enable
  1. 手动绑定RX队列到不同核(避免队列集中在单一核):
    针对Port0的8个RX队列:
set port rx queue mapping 0 0 1
set port rx queue mapping 0 1 2
set port rx queue mapping 0 2 3
set port rx queue mapping 0 3 4
set port rx queue mapping 0 4 5
set port rx queue mapping 0 5 6
set port rx queue mapping 0 6 7
set port rx queue mapping 0 7 1

针对Port1的8个RX队列:

set port rx queue mapping 1 0 2
set port rx queue mapping 1 1 3
set port rx queue mapping 1 2 4
set port rx queue mapping 1 3 5
set port rx queue mapping 1 4 6
set port rx queue mapping 1 5 7
set port rx queue mapping 1 6 1
set port rx queue mapping 1 7 2
  1. 验证队列映射配置:
show port rx queue mapping all

三、启动转发并确认负载均衡

  1. 启动转发:
start
  1. 查看队列统计,确认流量分散:
show port stats all
show port xstats all

重要提示

  • 确保VMware ESXi层面已为虚拟机网卡开启RSS功能,VMXNET3依赖硬件RSS实现队列分流
  • 测试流量需包含不同五元组(源IP/端口、目的IP/端口),单一五元组的流量只会被哈希到一个队列

内容的提问来源于stack exchange,提问作者Fateen Najib Indramustika

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 12:22:05