首页/系统/Linux 运维命令速查/网卡多队列与中断均衡
性能与监控48 条

网卡多队列与中断均衡

单队列网卡遇上多核服务会形成单核软中断瓶颈:查队列数/中断分布、调 RPS/RSS 与 irqbalance,是万兆与高 PPS 场景的必查项。

Linux 运维命令速查系统更新于 2026-10-13

网卡多队列与中断均衡

高吞吐场景下,如果网卡只有一个队列,中断会集中到某个 CPU 核上,形成软中断瓶颈:CPU 整体看起来并不忙,但网络吞吐上不去。排查要看队列数量、中断在各核的分布以及软中断占比;调整手段包括多队列网卡配合中断均衡,以及在单队列场景下用软件分发。

基本信息

用途排查与优化网络软中断的 CPU 分布
查看方式ethtool -l、/proc/interrupts、mpstat -P ALL
调整手段RPS、irqbalance、启用多队列
适用场景万兆与高包速率业务

典型使用场景

  • 万兆网卡下吞吐上不去而 CPU 显示空闲
  • 单核软中断占比异常偏高
  • 压测时发现延迟抖动与中断集中相关
  • 核对中断亲和设置是否已持久化
  • 排查容器宿主机上网络瓶颈的具体位置
  • 评估软件分发与硬件多队列之间的取舍

诊断与调整

诊断与调整
ethtool -l eth0                      # 查看队列数与当前配置
ethtool -S eth0 | head               # 队列级统计(视驱动支持)
grep -E 'eth0' /proc/interrupts | head
mpstat -P ALL 1 3                    # 看各核软中断占比
cat /sys/class/net/eth0/queues/rx-0/rps_cpus    # 查看 RPS 掩码
systemctl status irqbalance --no-pager | head   # 中断均衡服务状态
tuned-adm active                     # 确认是否由 tuned 统一管理

手段与取舍

手段作用代价
多队列配合 RSS硬件层把流量分到多核需要网卡与驱动支持
irqbalance动态均衡中断粒度粗,可能与绑核冲突
RPS软件模拟分发额外消耗 CPU
RFS按数据流分发配置复杂度上升
中断亲和绑核精确可控需要自行维护并持久化
多队列网卡优先依靠硬件分发配合中断均衡;RPS 属于软件模拟,会消耗额外 CPU,生产环境使用前应先评估开销。
RPS 掩码是十六进制 CPU 位图:核数写错(例如 4 核机器填了 8 核的掩码)会让分发失效,表现为「调了但没效果」。
手工调整的中断亲和不会自动持久化,重启即失效;应通过 tuned、udev 规则或网络配置脚本固化下来。
判断瓶颈是否出在网络软中断,可以同时看单核的软中断占比与队列级丢包计数:只凭吞吐数字,无法区分是中断集中还是链路本身已经饱和。

易错点

  • 只看整体 CPU 利用率:软中断压在单核上时,总量看起来依然空闲
  • RPS 掩码超出实际核数:分发不生效,被误判为参数无效
  • 调整后不做持久化:重启恢复原状,问题周期性复现
  • 同时使用绑核与 irqbalance:两者互相搬动中断,效果反复

数据来源与参考

  • 内核文档:scaling(RPS/RSS)
  • man 8 ethtool -l
  • Red Hat 性能调优指南(网络)

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌