nmcli 仅管理网络连接,不显示中断详情;需先用 nmcli device status 确认万兆网卡设备名(如 enp3s0f0),再通过 /proc/interrupts、smp_affinity_list、ethtool 等命令分析 irq 分布、cpu 亲和性及多队列启用状态。

nmcli 本身不显示硬件中断分配详情,它专注网络连接管理(如接口状态、IP配置、连接启停),无法读取 IRQ、/proc/interrupts 或 CPU 亲和性等底层中断信息。要排查万兆网卡是否因中断集中导致单核瓶颈,需结合 nmcli 定位网卡设备名,再用中断专用命令深入分析。
一、用 nmcli 确认万兆网卡的准确设备名
万兆网卡在系统中通常表现为 enpXsY、ensXfY 或 ethX(较老命名),先通过 nmcli 快速识别:
- 运行
nmcli device status,找出状态为“connected”且类型为“ethernet”的设备(如enp3s0f0) - 补充验证:执行
nmcli -p device show查看详细物理属性,或搭配lspci | grep -i 10g\|ether确认万兆型号(如 Mellanox ConnectX-5、Intel X710) - 注意:避免依赖
ifconfig(已废弃)或模糊名称(如eth0可能被 udev 重命名)
二、用 /proc/interrupts 定位该网卡对应的 IRQ 及中断分布
获取设备名后,立即查其中断触发情况:
- 执行
grep -i "enp3s0f0\|ensXfY" /proc/interrupts(将设备名替换成上一步结果),输出类似:
- 第一列是 IRQ 编号(本例为 42),后续每列代表一个 CPU 核心上的中断计数;若仅第 0 列数字极大而其余为 0,说明中断全打在 CPU 0 上
- 末尾带
-rx-、-tx-或-event-后缀的行,对应网卡多队列中断,每个队列绑定独立 IRQ - 配合
watch -n 1 'grep enp3s0f0 /proc/interrupts'实时观察增长是否偏斜
三、检查中断 CPU 亲和性设置是否合理
确认 IRQ 是否被硬绑定到单核,或未启用自动均衡:
- 对查到的 IRQ(如 42),运行
cat /proc/irq/42/smp_affinity_list—— 输出应为十进制 CPU 编号列表(如0,1,2,3);若只显示0,即存在单核瓶颈风险 - 对比
cat /proc/irq/42/effective_affinity,确认内核是否实际按该设置执行(有时 irqbalance 或驱动会覆盖) - 检查 irqbalance 是否运行:
systemctl is-active irqbalance;若为 inactive,中断默认可能集中在 boot CPU
四、辅助验证:确认是否启用多队列及 NAPI
万兆网卡性能依赖多队列与 NAPI 协同,缺失会导致中断堆积:
- 运行
ethtool -l enp3s0f0查看当前支持的最大 RX/TX 队列数,再用ethtool -L enp3s0f0 combined 8(需 root)启用 8 队列(值不超过最大数) - 执行
cat /proc/interrupts | grep enp3s0f0 | wc -l,结果应接近队列数 × 2(RX+TX 各一路);若远少于该值,说明队列未激活或驱动未加载对应中断线 - 确认 NAPI 正常工作:
cat /proc/net/softnet_stat | head -5中第 1 列(processed)应随流量上升,第 7 列(cpu_collision)长期 >0 表示软中断处理竞争严重











