Linux怎么查看具体的网络接口在多队列分配模式下的中断平衡走势图

浅辰酱_4454

浅辰酱_4454

2026-08-22

503人浏览

原创

用 watch -n 1 'grep -i "网卡名" /proc/interrupts' 实时观察各 -rx-/-tx- 中断行cpu列增长斜率,若所有队列均只在单核上涨,则存在中断绑定失效或未启用多队列;需结合 grep -c 验证中断行数、lspci 查 msi-x 向量、dmesg 检查驱动报错,并停用 irqbalance 后手动配置 smp_affinity_list 或启用 rps。

linux怎么查看具体的网络接口在多队列分配模式下的中断平衡走势图

怎么用 watch + grep 实时盯住网卡多队列中断增长斜率

没有“中断平衡走势图”这种现成图表,Linux 本身不画图——但你能用 watchgrep 把动态分布变成肉眼可判的“趋势流”。关键不是看静态数字,是看每秒谁涨得快、谁几乎不动。

  • 先确认网卡名:nmcli device status | grep ethernet,拿到真实设备名(如 enp5s0f0
  • 执行:watch -n 1 'grep -i "enp5s0f0" /proc/interrupts',观察带 -rx-0-rx-1-tx-2 后缀的行
  • 重点盯各 CPU 列(CPU0CPU1…)数值变化:如果 enp5s0f0-rx-0 只在 CPU0 列跳,enp5s0f0-rx-1 只在 CPU1 列跳,说明队列已分散;若所有 -rx-* 行都只涨同一列,就是绑定失效或队列没真启用
  • 别信“总数均衡”:某队列每秒涨 500,另一队列涨 5,哪怕总和差不多,也是严重倾斜——软中断会全挤在第一个核上

为什么 ethtool -l 显示 combined > 1 却只看到一行中断

网卡驱动说开了 4 队列,/proc/interrupts 却只有一行匹配?八成是硬件或固件没真分配 MSI-X 中断向量,或者内核没成功注册多中断号。

onewo-rtlinux
onewo-rtlinux

Linux 实时编程助手。生成、审查并修改用于周期性控制任务和中断驱动程序的 C 代码。强制实施实时调度策略。

下载
  • 查实际中断行数:grep -c "enp5s0f0" /proc/interrupts,结果为 1 就说明只绑了主 IRQ,多队列形同虚设
  • 验证驱动是否支持并启用了 MSI-X:lspci -vv -s $(ethtool -i enp5s0f0 | grep bus-info | awk '{print $2}') | grep -A 10 MSI,输出里要有 MSI-X: Enable+ Count=Count ≥ 队列数
  • 检查内核日志有没有报错:dmesg | grep -i "enp5s0f0.*msi\|irq",常见失败提示是 Failed to allocate MSI-X vectors
  • 某些 Intel 网卡(如 i40e)需额外加载参数:modprobe i40e max_vfs=0 RSS=1,否则即使 ethtool -l 显示 combined=8,也只用一个 IRQ

怎么确认 smp_affinity_list 是否真正生效

写了 smp_affinity_list/proc/interrupts 数字还在单核狂涨?不是写错了,就是被覆盖了,或者根本没写进去。

  • 查当前生效值:cat /proc/irq/$(grep "enp5s0f0-rx-0" /proc/interrupts | awk '{print $1}' | tr -d ':')/smp_affinity_list,对比你写的值是否一致
  • 查是否被 irqbalance 覆盖:systemctl is-active irqbalance,只要返回 active,它就在后台重写 smp_affinity_list —— 必须 sudo systemctl stop irqbalance && sudo systemctl disable irqbalance
  • 写入后立刻验证:echo 0-3 | sudo tee /proc/irq/42/smp_affinity_list(42 是你的 rx-0 中断号),再立刻 cat /proc/irq/42/smp_affinity_list,若输出不是 0-3,说明该 IRQ 不支持动态调整(ls /proc/irq/42/ 看不到 smp_affinity_list 文件)
  • NUMA 架构下,优先绑本地 CPU:lscpu | grep "NUMA node(s)"lspci -vv -s $(ethtool -i enp5s0f0 | grep bus-info | awk '{print $2}') | grep NUMA 交叉确认节点编号,再写如 echo "0,4,8,12" | sudo tee /proc/irq/42/smp_affinity_list

软中断 NET_RX 堆积却看不到对应硬中断飙升怎么办

ksoftirqd/0 占满 CPU0,但 /proc/interruptsenp5s0f0-rx-* 各列增长平缓?说明硬中断触发少,但每次带进来大量包,全压在软中断里串行处理——这是 NAPI 或 GRO 导致的典型“假均衡”。

  • 查网卡收包统计:ethtool -S enp5s0f0 | grep -E "(rx_packets|rx_bytes|rx_jabbers|rx_missed)",若 rx_packets 每秒几万,而 /proc/interrupts 里对应中断每秒只涨几十,基本确定 NAPI 在轮询模式工作
  • 确认 GRO/LRO 是否开启:ethtool -k enp5s0f0 | grep "generic-receive-offload\|large-receive-offload",开启状态下单次中断可能处理数百帧,NET_RX 计数会远高于硬中断计数
  • 查软中断分布:cat /proc/softirqs | grep NET_RX,对比各 CPU 列数值;若只有 CPU0 列暴涨,说明即使硬中断分散了,软中断仍没跨核调度——这是内核默认行为,需靠 RPS/RFS 手动干预
  • RPS 配置示例:echo f | sudo tee /sys/class/net/enp5s0f0/queues/rx-0/rps_cpus(十六进制掩码,f=CPU0–3),它让软中断模拟多核分发,不依赖硬中断亲和性
硬中断分布只是表象,软中断才是吞吐瓶颈的最终显现场所;而 RPS/RFS 这类机制,既不改 /proc/interrupts 的数字,也不动 smp_affinity_list,却能彻底改变 CPU 负载形态——这点最容易被忽略。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
硬盘接口类型介绍
硬盘接口类型介绍

硬盘接口类型有IDE、SATA、SCSI、Fibre Channel、USB、eSATA、mSATA、PCIe等等。详细介绍:1、IDE接口是一种并行接口,主要用于连接硬盘和光驱等设备,它主要有两种类型:ATA和ATAPI,IDE接口已经逐渐被SATA接口;2、SATA接口是一种串行接口,相较于IDE接口,它具有更高的传输速度、更低的功耗和更小的体积;3、SCSI接口等等。

2023.10.19

3028

3

PHP接口编写教程
PHP接口编写教程

本专题整合了PHP接口编写教程,阅读专题下面的文章了解更多详细内容。

2025.10.17

4249

12

php8.4实现接口限流的教程
php8.4实现接口限流的教程

PHP8.4本身不内置限流功能,需借助Redis(令牌桶)或Swoole(漏桶)实现;文件锁因I/O瓶颈、无跨机共享、秒级精度等缺陷不适用高并发场景。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2025.12.29

3649

9

java接口相关教程
java接口相关教程

本专题整合了java接口相关内容,阅读专题下面的文章了解更多详细内容。

2026.01.19

366

15

磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

2023.06.21

3630

4

如何安装LINUX
如何安装LINUX

本站专题提供如何安装LINUX的相关教程文章,还有相关的下载、课程,大家可以免费体验。

2023.06.29

3153

10

linux find
linux find

find是linux命令,它将档案系统内符合 expression 的档案列出来。可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。find根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部分为 path,之后的是 expression。还有指DOS 命令 find,Excel 函数 find等。本站专题提供linux find相关教程文章,还有相关

2023.06.30

2213

5

linux修改文件名
linux修改文件名

本专题为大家提供linux修改文件名相关的文章,这些文章可以帮助用户快速轻松地完成文件名的修改工作,大家可以免费体验。

2023.07.05

5310

7

linux系统安装教程
linux系统安装教程

linux系统是一种可以免费使用,自由传播,多用户、多任务、多线程、多CPU的操作系统。本专题提供linux系统安装教程相关的文章,大家可以免费体验。

2023.07.06

4982

7

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Buffalo框架快速入门指南
Buffalo框架快速入门指南

共0课时 | 0人学习

Valgrind支持平台说明
Valgrind支持平台说明

共0课时 | 0人学习