一、故障背景某运营商IDC部署了一套基于DPDK的软件交换机集群。主要功能:二层交换三层路由VXLAN GatewayACL访问控制流量镜像硬件配置:项目配置CPUIntel Xeon Gold 6338网卡Intel X710 2×10GDPDK22.11PMD Core16RX Queue16TX Queue16NUMA双路系统稳定运行半年。某次云平台扩容后出现异常:TCP重传率上升SSH偶发卡顿VXLAN Overlay时延抖动BGP Keepalive偶发超时业务部门反馈:白天高峰时段问题明显,夜间恢复正常。二、初步检查首先查看CPU。top结果:PMD0 100% PMD1 100% ... PMD15 100%很多工程师看到这里会认为:CPU已经跑满了。实际上这是DPDK最容易产生误判的地方。PMD本质:while (1) { rte_eth_rx_burst(...); process_packets(...); rte_eth_tx_burst(...); }即使没有任何流量:CPU利用率仍然接近100%因此:CPU=100% ≠ 系统达到性能极限这是DPDK性能分析的第一个核心知识点。三、网卡统计分析查看端口统计:rte_eth_stats_get()结果:ipackets 9,823,456,221 opackets 9,823,451,991 imissed 15321 ierrors 0 rx_nombuf 0发现:imissed 0说明:数据包已经到达网卡。但网卡来不及交给驱动。这意味着:问题发生在:NIC ↓ RX Queue ↓ PMD之间。四、查看队列统计继续查看X710扩展统计:dpdk-proc-info --xstats发现:rx_q0_packets 8,121,224,551 rx_q1_packets 135,992,331 rx_q2_packets 128,112,992 ... rx_q15_packets 97,001,214看到这里已经不正常。理论上:16个队列。流量应该接近:/
DPDK高性能交换机深度实践:一次RSS失衡导致单队列拥塞的现网故障分析
发布时间:2026/6/14 0:02:12
一、故障背景某运营商IDC部署了一套基于DPDK的软件交换机集群。主要功能:二层交换三层路由VXLAN GatewayACL访问控制流量镜像硬件配置:项目配置CPUIntel Xeon Gold 6338网卡Intel X710 2×10GDPDK22.11PMD Core16RX Queue16TX Queue16NUMA双路系统稳定运行半年。某次云平台扩容后出现异常:TCP重传率上升SSH偶发卡顿VXLAN Overlay时延抖动BGP Keepalive偶发超时业务部门反馈:白天高峰时段问题明显,夜间恢复正常。二、初步检查首先查看CPU。top结果:PMD0 100% PMD1 100% ... PMD15 100%很多工程师看到这里会认为:CPU已经跑满了。实际上这是DPDK最容易产生误判的地方。PMD本质:while (1) { rte_eth_rx_burst(...); process_packets(...); rte_eth_tx_burst(...); }即使没有任何流量:CPU利用率仍然接近100%因此:CPU=100% ≠ 系统达到性能极限这是DPDK性能分析的第一个核心知识点。三、网卡统计分析查看端口统计:rte_eth_stats_get()结果:ipackets 9,823,456,221 opackets 9,823,451,991 imissed 15321 ierrors 0 rx_nombuf 0发现:imissed 0说明:数据包已经到达网卡。但网卡来不及交给驱动。这意味着:问题发生在:NIC ↓ RX Queue ↓ PMD之间。四、查看队列统计继续查看X710扩展统计:dpdk-proc-info --xstats发现:rx_q0_packets 8,121,224,551 rx_q1_packets 135,992,331 rx_q2_packets 128,112,992 ... rx_q15_packets 97,001,214看到这里已经不正常。理论上:16个队列。流量应该接近:/