一、故障背景
某运营商城域网部署了一套基于DPDK实现的软件交换机集群。
系统承担:
- 二层交换
- VLAN转发
- VXLAN接入网关
- EVPN接入
- 用户汇聚
硬件配置如下:
| 项目 | 配置 |
|---|---|
| CPU | Intel Xeon Gold 6338 |
| Socket | 2 |
| Core | 64 |
| 网卡 | ConnectX-6 Dx 100G |
| DPDK | 23.11 |
| Hugepage | 1G |
系统设计目标:
64B: 148.8Mpps 100G Line Rate上线半年运行稳定。
某天凌晨,NOC监控告警:
用户时延升高 业务抖动 丢包增加二、故障现象
监控数据显示:
RX PPS 148Mpps TX PPS 35Mpps大量报文未能正常转发。
然而查看交换机资源:
show cpu结果:
PMD-0 100% PMD-1 100% PMD-2 100% ... PMD-31 100%全部CPU满载。
查看网卡状态:
show interface statistics结果:
RX CRC Error 0 RX Missed Error 0 RX No Buffer 0 TX Error 0全部正常。
此时故障变得非常诡异。
因为:
CPU正常工作 NIC正常工作 链路正常工作但性能却下降了超过75%。
三、第一步:排除DPDK常见性能问题
很多DPDK工程师第一反应会想到:
- NUMA错误
- Cache Miss
- Ring竞争
- RSS不均衡
因为这些是最常见的性能瓶颈。
首先检查RSS。
统计各队列流量:
show port rss结果:
Queue0 4.5Mpps Queue1 4.6Mpps Queue2 4.4Mpps ... Queue31 4.5Mpps负载均衡。
排除RSS倾斜。
继续检查NUMA。
查看:
lspci -vv确认:
NIC NUMA Node 0线程绑定:
taskset确认:
RX PMD Worker TX PMD 全部位于Node0没有跨NUMA访问。
继续查看:
perf stat结果:
IPC 2.1 Cache Miss 3.4%非常健康。
说明:
这次故障不是传统DPDK性能问题。
四、发现异常统计
进一步查看交换机内部统计:
show l2 statistics结果:
FDB Hit Rate 31%</