net_rx softirq 高导致单核打满的网卡多队列 + irqbalance 配置
发布时间 - 2026-01-19 00:00:00 点击率:次net_rx softirq高导致单核CPU打满,本质是网络接收软中断未分散至多核:需验证网卡多队列启用状态、irqbalance运行及策略有效性、IRQ手动绑定合理性,并调优RX队列长度、GRO/LRO及softnet_stat参数。
net_rx softirq 高导致单核 CPU 打满,本质是网络接收软中断集中在某个 CPU 核上处理,而网卡多队列 + irqbalance 本应分摊负载,但配置不当或机制未生效时就会失效。
确认网卡是否真正启用了多队列
很多网卡默认只启用单个 RX 队列,即使硬件支持多队列,驱动没打开或固件限制也会退化为单队列。需逐层验证:
- 查物理队列数:ethtool -l eth0(看 Current hardware settings 下的 RX 队列数,非 Supported max)
- 查当前启用队列数:cat /sys/class/net/eth0/device/sriov_numvfs(仅 SR-IOV 场景)或更通用的:ls /sys/class/net/eth0/device/msi_irqs/(每个 IRQ 对应一个队列)
- 查驱动是否启用多队列:grep "rx.*queue" /proc/interrupts | grep eth0,应看到多个形如 eth0-rx-0、eth0-rx-1 的条目;若只有 eth0(无后缀),说明仍是单队列中断绑定
检查 irqbalance 是否运行且策略合理
irqbalance 不只是“开了就行”,它可能因配置、服务状态或内核参数被绕过:
- 确认服务活跃:systemctl status irqbalance,且输出含 active (running)
- 检查是否被禁用:查看 /proc/sys/kernel/irqbalance(值为 1 表示启用),或 cat /etc/default/irqbalance 中是否设了 ENABLED=0
- 避免干扰策略:若使用 --banirq 或 --hintpolicy=ignore 等参数,可能导致网卡 IRQ 被固定不动;建议用默认策略或显式指定:--hintpolicy=restrict
- 观察实际分布:watch -n1 'grep eth0 /proc/interrupts',看各 RX 队列 IRQ 是否分散到不同 CPU;若长期只在 CPU0 触发,说明 irqbalance 没生效或被覆盖
手动绑定 IRQ 到 CPU(当 irqbalance 不可靠时)
某些场景(如实时性要求高、irqbalance 与内核版本兼容问题)推荐跳过 irqbalance,直接静态绑定:
- 查网卡各 RX 队列对应的 IRQ 号:grep eth0-rx /proc/interrupts | awk '{print $1}' | tr -d ':'
- 将 IRQ 绑定到特定 CPU 掩码(如绑到 CPU1~CPU7):echo 00fe > /proc/irq/[IRQ_NUM]/smp_affinity_list(十六进制掩码,00fe = CPU1~7)
- 注意:需确保目标 CPU 不承担其他高负载任务(如应用进程、ksoftirqd),否则仍会打满;可配合 taskset 将业务进程绑到其余核
- 持久化:写入 systemd service 或网络脚本,在网卡 up 后执行(因 IRQ 号可能随重启变化,建议用 udev rule + shell 脚本动态识别)
补充调优:降低 net_rx softirq 压力本身
分流只是治标,还需减少单次软中断要处理的数据量:
- 增大 RX 队列长度:ethtool -G eth0 rx 4096(防丢包,也缓解突发冲击)
- 启用 GRO/LRO(谨慎):ethtool -K eth0 gro on,合并小包减少中断次数;但会增加延迟和 CPU 解包开销,高吞吐低延迟场景慎用
- 检查是否被 NAPI polling 阻塞:若 cat /proc/net/softnet_stat 第二列(dropped)持续增长,说明 softirq 处理不过来,需调大 net.core.netdev_budget(默认300)或优
化协议栈路径
# 栈
# .net
# echo
# print
# restrict
# class
# default
# tr
# 绑定
# 打满
# 掩码
# 也会
# 多个
# 开了
# 不承担
# 就行
# 不动
# 仍是
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Laravel定时任务怎么设置_Laravel Crontab调度器配置
ChatGPT怎么生成Excel公式_ChatGPT公式生成方法【指南】
如何在云主机快速搭建网站站点?
如何快速配置高效服务器建站软件?
微信推文制作网站有哪些,怎么做微信推文,急?
Gemini怎么用新功能实时问答_Gemini实时问答使用【步骤】
Laravel怎么写单元测试_PHPUnit在Laravel项目中的基础测试入门
canvas 画布在主流浏览器中的尺寸限制详细介绍
Win11怎么设置默认图片查看器_Windows11照片应用关联设置
详解Oracle修改字段类型方法总结
html5源代码发行怎么设置权限_访问权限控制方法与实践【指南】
Linux系统命令中screen命令详解
zabbix利用python脚本发送报警邮件的方法
Laravel表单请求验证类怎么用_Laravel Form Request分离验证逻辑教程
如何在阿里云通过域名搭建网站?
网站页面设计需要考虑到这些问题
Windows10如何删除恢复分区_Win10 Diskpart命令强制删除分区
Python面向对象测试方法_mock解析【教程】
图册素材网站设计制作软件,图册的导出方式有几种?
详解免费开源的DotNet二维码操作组件ThoughtWorks.QRCode(.NET组件介绍之四)
详解Nginx + Tomcat 反向代理 负载均衡 集群 部署指南
ChatGPT回答中断怎么办 引导AI继续输出完整内容的方法
大同网页,大同瑞慈医院官网?
为什么php本地部署后css不生效_静态资源加载失败修复技巧【技巧】
Laravel如何使用Passport实现OAuth2?(完整配置步骤)
为什么要用作用域操作符_php中访问类常量与静态属性的优势【解答】
如何快速启动建站代理加盟业务?
宙斯浏览器文件分类查看教程 快速筛选视频文档与图片方法
太平洋网站制作公司,网络用语太平洋是什么意思?
Laravel Artisan命令怎么自定义_创建自己的Laravel命令行工具完全指南
如何用已有域名快速搭建网站?
如何在宝塔面板中修改默认建站目录?
如何快速搭建自助建站会员专属系统?
黑客如何通过漏洞一步步攻陷网站服务器?
MySQL查询结果复制到新表的方法(更新、插入)
Win11搜索不到蓝牙耳机怎么办 Win11蓝牙驱动更新修复【详解】
Java Adapter 适配器模式(类适配器,对象适配器)优缺点对比
Laravel如何实现RSS订阅源功能_Laravel动态生成网站XML格式订阅内容【教程】
Python并发异常传播_错误处理解析【教程】
jQuery 常见小例汇总
如何续费美橙建站之星域名及服务?
Python图片处理进阶教程_Pillow滤镜与图像增强
企业网站制作这些问题要关注
如何确保FTP站点访问权限与数据传输安全?
深圳网站制作平台,深圳市做网站好的公司有哪些?
如何在IIS7中新建站点?详细步骤解析
Laravel如何处理和验证JSON类型的数据库字段
laravel怎么通过契约(Contracts)编程_laravel契约(Contracts)编程方法
大连网站制作费用,大连新青年网站,五年四班里的视频怎样下载啊?
香港代理服务器配置指南:高匿IP选择、跨境加速与SEO优化技巧


