单核收包瓶颈
报文被网卡收下之后的处理发生在软中断上下文里。如果这些处理都落在同一个处理器核上,高流量时这个核会先饱和:整体吞吐上不去、丢弃计数增长,而其他核却明显空闲。判断线索包括各核软中断占用分布、网卡队列数量以及中断的绑定设置。多队列网卡可以把处理分散到多个核,单队列或中断集中在一核时就会形成单核瓶颈。
基本信息
| 适用平台 | Linux(多核主机上的收包路径观察) |
|---|---|
| 命令 | mpstat -P ALL 1、ethtool -l、查看中断统计 |
| 观察点 | 各核软中断占比是否严重不均 |
| 影响因素 | 网卡队列数、中断绑定、核心隔离配置 |
典型使用场景
- 高流量下丢包但整体处理器占用不高,寻找瓶颈核
- 压测吞吐无法线性扩展,确认是否卡在单核收包
- 对比启用多队列或调整绑定前后的效果
- 容器环境中定位宿主侧收包瓶颈
- 为网卡队列与绑定配置提供依据
- 排查中断集中在固定核造成的抖动
观察要点
观察要点
mpstat -P ALL 1 # 看各核软中断占比
ethtool -l eth0 # 查看队列数量与当前值
grep '' /proc/net/softnet_stat # 第 2 列为丢弃计数
cat /proc/interrupts | grep eth0 # 中断是否集中在某个核
# 单核软中断接近打满而其他核空闲 → 典型单核收包瓶颈观察项逐项读法
| 观察项 | 含义 | 判读方向 |
|---|---|---|
| 各核软中断分布 | 收包处理是否均衡 | 单核显著偏高即为瓶颈信号 |
| 队列数量 | 网卡可用的收发队列 | 队列过少无法分散处理 |
| 丢弃计数 | 处理不及时造成的丢弃 | 高流量时段增长说明跟不上 |
| 中断分布 | 中断落在哪些核 | 集中在单核会导致该核先饱和 |
中断均衡服务未运行或网卡只有单队列时,中断集中在一核属于常见配置形态,不一定代表故障配置。
在多队列网卡上队列与核的映射不均同样会造成单核饱和,需要核对映射关系而非只看队列数量。