DPDK高性能交换机深度故障分析:一次Mbuf Cache失衡引发的转发性能雪崩
一、故障背景
某省级运营商城域网部署了一套基于DPDK的软件交换机。
承担业务:
- 二层汇聚
- 三层路由
- VXLAN网关
- ACL访问控制
- MPLS VPN接入
设备配置:
| 项目 | 参数 |
|---|---|
| CPU | Intel Xeon Gold 6338 |
| Socket | 2 |
| Core | 64 Physical Core |
| NIC | Intel X710 Dual Port |
| DPDK | 22.11 |
| PMD线程 | 32 |
| RX Queue | 32 |
| TX Queue | 32 |
系统上线半年运行稳定。
某次扩容后:
业务流量:
42 Mpps ↓ 55 Mpps ↓ 67 Mpps开始出现异常。
业务侧现象:
- VXLAN时延波动
- TCP重传增加
- OSPF邻居偶发超时
- ARP响应变慢
监控显示:
| 指标 | 数值 |
|---|---|
| CPU | 100% |
| 内存 | 36% |
| 链路利用率 | 52% |
| 网卡Error | 0 |
所有PMD线程均正常运行。
二、第一轮排查
查看网卡统计。
rte_eth_stats_get();结果:
imissed 0 ierrors 0 rx_nombuf 0说明:
- 网卡没有丢包
- RX Ring正常
- Mbuf没有耗尽
继续检查:
dpdk-proc-info --xstats发现:
rx_q0_packets rx_q1_packets ... rx_q31_packets流量分布均衡。
RSS正常。
继续检查:
show forwarding statistics发现:
Input PPS 67M Output PPS 43M出现明显差异。
但是:
没有任何硬件丢包。
问题变得非常奇怪。
三、深入DPDK转发路径
回顾交换机转发架构。
