0

0

Linux 网络中断过高_中断亲和优化

舞夢輝影

舞夢輝影

发布时间:2026-03-16 13:35:31

|

229人浏览过

|

来源于php中文网

原创

Linux网络中断过高主因是网卡中断集中于单核(如CPU0),导致softirq(si)持续超20%~30%,表现为吞吐低、延迟抖动大、丢包多;需通过IRQ affinity将多队列中断分散绑定多核,并配合RPS/RFS及关闭irqbalance实现负载均衡。

linux 网络中断过高_中断亲和优化

Linux 网络中断过高,通常表现为 CPU 某个核心(尤其是 core 0)软中断(softirq)持续占用率高,si(softirq)在 topvmstat 1 中长期高于 20%~30%,同时网络吞吐上不去、延迟抖动大、丢包增多。根本原因往往是网卡中断全部集中在一个 CPU 核上处理,导致该核成为瓶颈。中断亲和(IRQ affinity)优化就是将不同网卡队列的中断分散绑定到多个 CPU 核,实现负载均衡。

确认当前中断分布与瓶颈

先查哪些中断号属于你的网卡:

  • 运行 cat /proc/interrupts | grep eth0(替换为实际网卡名,如 ens33、enp0s3),观察每行开头的中断号(如 4546)及对应 CPU 列计数(如 CPU0 列数值远高于其他列)
  • watch -n1 'cat /proc/interrupts | grep eth0' 动态观察各 CPU 上中断计数增长是否严重不均
  • 结合 top -H 查看 ksoftirqd/X 线程的 CPU 占用,确认是否集中在单个核

检查网卡多队列与 RSS 支持

中断亲和有效前提:网卡必须启用多队列(Multi-Queue)且内核支持 RSS(Receive Side Scaling):

  • 执行 ethtool -l eth0 查看当前支持的最大接收/发送队列数(如 Current hardware settings: RX: 16
  • 运行 ethtool -L eth0 rx 8 tx 8 启用 8 个接收队列(需驱动支持,部分虚拟网卡如 virtio_net 默认只开 1 队列)
  • 确认 /sys/class/net/eth0/device/sriov_numvfsethtool -i eth0 输出中 driver 是否为 ixgbei40emlx5_core 等主流多队列驱动

设置中断亲和掩码(IRQ Affinity)

对每个网卡中断号,将其绑定到指定 CPU 子集(推荐避开 CPU 0,优先使用 1–N):

OpenJobs AI
OpenJobs AI

AI驱动的职位搜索推荐平台

下载
  • 查看某中断当前亲和: cat /proc/irq/45/smp_affinity_list
  • 绑定中断 45 到 CPU 1 和 2:echo 2,4 > /proc/irq/45/smp_affinity_list(注意:2=CPU1,4=CPU2,二进制位掩码转换为十进制列表更直观)
  • 批量绑定所有 eth0 相关中断(假设中断号为 45–52):
    for i in {45..52}; do echo "2,4,6,8" > /proc/irq/$i/smp_affinity_list 2>/dev/null; done
  • 持久化:将上述命令写入 /etc/rc.local 或 systemd service(需确保网卡已加载后再执行)

配合调优提升效果

仅设 IRQ affinity 不够,还需协同调整:

  • 开启 RPS(Receive Packet Steering):在无硬件 RSS 时由软件模拟分发,编辑 /sys/class/net/eth0/queues/rx-0/rps_cpus,写入十六进制掩码(如 0x000000ff 表示前 8 个 CPU)
  • 启用 RFS(RPS Flow Stabilization):提升缓存局部性,设置 /proc/sys/net/core/rps_sock_flow_entries(如 32768)和各 rx 队列的 rps_flow_cnt
  • 调整 softirq 处理线程绑定:通过 taskset -cp 1-7 /proc/sys/kernel/ksoftirqd/0 类似方式(需 kernel ≥ 5.0+ 支持 per-CPU ksoftirqd 调度)
  • 关闭 irqbalance 服务systemctl stop irqbalance && systemctl disable irqbalance,避免其覆盖手动设置

优化后再次观测 /proc/interruptstop,应看到中断计数与 softirq 负载在多个 CPU 上趋于均衡,网络延迟下降、吞吐提升。注意:物理网卡多队列 + 正确 IRQ 分布是基础,软件层面 RPS/RFS 是补充,三者配合才能发挥最佳效果。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

WorkBuddy
WorkBuddy

腾讯云推出的AI原生桌面智能体工作台

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
c语言中null和NULL的区别
c语言中null和NULL的区别

c语言中null和NULL的区别是:null是C语言中的一个宏定义,通常用来表示一个空指针,可以用于初始化指针变量,或者在条件语句中判断指针是否为空;NULL是C语言中的一个预定义常量,通常用来表示一个空值,用于表示一个空的指针、空的指针数组或者空的结构体指针。

254

2023.09.22

java中null的用法
java中null的用法

在Java中,null表示一个引用类型的变量不指向任何对象。可以将null赋值给任何引用类型的变量,包括类、接口、数组、字符串等。想了解更多null的相关内容,可以阅读本专题下面的文章。

1132

2024.03.01

class在c语言中的意思
class在c语言中的意思

在C语言中,"class" 是一个关键字,用于定义一个类。想了解更多class的相关内容,可以阅读本专题下面的文章。

931

2024.01.03

python中class的含义
python中class的含义

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

32

2025.12.06

线程和进程的区别
线程和进程的区别

线程和进程的区别:线程是进程的一部分,用于实现并发和并行操作,而线程共享进程的资源,通信更方便快捷,切换开销较小。本专题为大家提供线程和进程区别相关的各种文章、以及下载和课程。

786

2023.08.10

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

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

1564

2023.06.21

如何安装LINUX
如何安装LINUX

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

716

2023.06.29

linux find
linux find

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

300

2023.06.30

C++多线程并发控制与线程安全设计实践
C++多线程并发控制与线程安全设计实践

本专题围绕 C++ 在高性能系统开发中的并发控制技术展开,系统讲解多线程编程模型与线程安全设计方法。内容包括互斥锁、读写锁、条件变量、原子操作以及线程池实现机制,同时结合实际案例分析并发竞争、死锁避免与性能优化策略。通过实践讲解,帮助开发者掌握构建稳定高效并发系统的关键技术。

2

2026.03.16

热门下载

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

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 10.7万人学习

Git 教程
Git 教程

共21课时 | 4.2万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号