irqbalance 不均衡导致单核 softirq 打满的网卡多队列 + affinity 配置
发布时间 - 2026-01-30 00:00:00 点击率:次irqbalance 会因负载评估失效将多队列网卡中断集中到 CPU0;需停用后手动绑定各 RSS 队列到不同 CPU,并配置 RPS/RFS、关闭 GRO/LRO,最后通过 /proc/softirqs 验证 softirq 均衡。
irqbalance 为什么会让网卡中断全挤在 CPU0 上
默认启用的 irqbalance 在某些内核版本(尤其是 4.x/5.x)或特定硬件上,会错误地将多队列网卡的中断(如 eth0-TxRx-0、eth0-TxRx-1…)全部映射到同一个 CPU 核心(通常是 CPU0),而不是均匀分散。这不是 bug,而是它依赖的负载评估机制失效:softirq 处理延迟、RSS 队列未被识别、或 /proc/interrupts 中中断计数更新滞后,都会导致它“误判”其他核不忙。
常见现象: top -p $(pgrep irqbalance) 看不到明显占用,但 cat /pro 显示所有队列中断都集中在 CPU0;同时 
watch -n1 'cat /proc/softirqs | grep -E "(NET_RX|NET_TX)"' 显示 CPU0 的 NET_RX 值飙升,而其他核几乎为 0。
停掉 irqbalance 后怎么手动绑定网卡中断
停用 irqbalance 只是第一步,关键是要把每个 RSS 队列中断明确绑定到不同 CPU,且避开系统保留核(如 isolcpus、rcu_nocbs 绑定的核)。
- 先查网卡支持的中断数量:
grep eth0 /proc/interrupts | wc -l(比如 16 个队列) - 查可用 CPU 列表:
nproc和cat /sys/devices/system/cpu/online,排除隔离核 - 逐个写入
smp_affinity_list:echo 0 > /proc/irq/123/smp_affinity_list # 第 1 队列 → CPU0
echo 1 > /proc/irq/124/smp_affinity_list # 第 2 队列 → CPU1
... - 注意:写入前确认该 IRQ 确实属于对应网卡队列(看
/proc/interrupts第二列),避免误绑系统中断
网卡队列数、CPU 数、RPS/RFS 设置要对齐
单纯调中断 affinity 不够,softirq 负载还受上层分流影响。如果网卡队列数(ethtool -l eth0)少于 CPU 数,或者没开 RPS,即使中断分开了,所有包仍可能被送到同一个 softirq 上下文处理。
- 确保
ethtool -l eth0显示的Combined值 ≥ 你打算使用的 CPU 数(如 8 队列配 8 核) - 检查 RPS 是否启用:
cat /sys/class/net/eth0/queues/rx-0/rps_cpus,若为空或全 0,需按 CPU 掩码写入(如 8 核用ff,但更推荐用rps_cpus按队列分别设) - RFS(Receive Flow Steering)建议开启:
echo 32768 > /proc/sys/net/core/rps_sock_flow_entries,并为每个 rx 队列设rps_flow_cnt(如echo 2048 > /sys/class/net/eth0/queues/rx-0/rps_flow_cnt) - 关闭 GRO/LRO(
ethtool -K eth0 gro off lro off),避免大包重组集中消耗单核 softirq
验证 softirq 分布是否真的均衡
改完不能只看 /proc/interrupts,必须确认 softirq 实际执行位置。最直接的方法是采样 /proc/softirqs 并观察各列变化速率:
运行 watch -n0.5 'grep -A1 "NET_RX" /proc/softirqs',等 10 秒,看 CPU0–CPU7 对应列是否同步增长(差值
容易忽略的一点:某些主板 BIOS 里有 “Interrupt Remapping” 或 “x2APIC Mode” 选项,若关闭,会导致 smp_affinity_list 写入无效 —— 此时必须进 BIOS 打开 x2APIC,否则手动绑定永远不生效。
# app
# 主板
# ios
# bios
# 为什么
# echo
# class
# linux
# bug
# 绑定
# 尤其是
# 要把
# 这不是
# 会让
# 要对
# 只看
# 并为
# 未被
# 不忙
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
如何在景安服务器上快速搭建个人网站?
如何在搬瓦工VPS快速搭建网站?
如何快速上传自定义模板至建站之星?
个人摄影网站制作流程,摄影爱好者都去什么网站?
微博html5版本怎么弄发超话_超话进入入口及发帖格式要求【教程】
Laravel如何使用查询构建器?(Query Builder高级用法)
Laravel如何处理CORS跨域请求?(配置示例)
Laravel怎么清理缓存_Laravel optimize clear命令详解
如何在景安云服务器上绑定域名并配置虚拟主机?
Windows10电脑怎么查看硬盘通电时间_Win10使用工具检测磁盘健康
canvas 画布在主流浏览器中的尺寸限制详细介绍
Laravel如何使用Socialite实现第三方登录?(微信/GitHub示例)
如何快速建站并高效导出源代码?
如何实现javascript表单验证_正则表达式有哪些实用技巧
如何在建站之星绑定自定义域名?
通义万相免费版怎么用_通义万相免费版使用方法详细指南【教程】
如何有效防御Web建站篡改攻击?
浅谈redis在项目中的应用
如何在IIS服务器上快速部署高效网站?
JS经典正则表达式笔试题汇总
Laravel如何使用withoutEvents方法临时禁用模型事件
在线制作视频网站免费,都有哪些好的动漫网站?
魔方云NAT建站如何实现端口转发?
网站制作壁纸教程视频,电脑壁纸网站?
制作网站软件推荐手机版,如何制作属于自己的手机网站app应用?
android nfc常用标签读取总结
桂林网站制作公司有哪些,桂林马拉松怎么报名?
打造顶配客厅影院,这份100寸电视推荐名单请查收
昵图网官网入口 昵图网素材平台官方入口
百度输入法全感官ai怎么关 百度输入法全感官皮肤关闭
Python3.6正式版新特性预览
Edge浏览器怎么启用睡眠标签页_节省电脑内存占用优化技巧
网站图片在线制作软件,怎么在图片上做链接?
Laravel Sail是什么_基于Docker的Laravel本地开发环境Sail入门
用yum安装MySQLdb模块的步骤方法
Laravel Admin后台管理框架推荐_Laravel快速开发后台工具
高端企业智能建站程序:SEO优化与响应式模板定制开发
高防服务器租用指南:配置选择与快速部署攻略
Android中Textview和图片同行显示(文字超出用省略号,图片自动靠右边)
韩国代理服务器如何选?解析IP设置技巧与跨境访问优化指南
Laravel软删除怎么实现_Laravel Eloquent SoftDeletes功能使用教程
高防网站服务器:DDoS防御与BGP线路的AI智能防护方案
Win11怎么恢复误删照片_Win11数据恢复工具使用【推荐】
在线ppt制作网站有哪些软件,如何把网页的内容做成ppt?
如何快速搭建高效简练网站?
如何在IIS中新建站点并配置端口与IP地址?
浅述节点的创建及常见功能的实现
Python文件流缓冲机制_IO性能解析【教程】
Laravel怎么使用Intervention Image库处理图片上传和缩放
如何获取PHP WAP自助建站系统源码?

