软中断softirq的CPU使用率升高

news/2025/10/12 21:44:24/文章来源:https://www.cnblogs.com/chucz/p/19137308

画板

中断是系统用来响应硬件设备请求的一种机制,它会打断进程的正常调度和执行,然后调用内核中的中断处理程序来响应设备的请求。中断其实是一种异步的事件处理机制,可以提高系统的并发处理能 力。

由于中断处理程序会打断其他进程的运行,所以,为了减少对正常进程运行调度的影响,中 断处理程序就需要尽可能快地运行。

中断处理程序在响应中断时,还会临时关闭中断。这就会导致上一次中断处理完成 之前,其他中断都不能响应,也就是说中断有可能会丢失。


为什么有硬中断和软中断区分?

为了解 决中断处理程序执行过长和中断丢失的问题,****Linux 将中断处理过程分成了两个阶段,也就 是上半部和下半部:

  • 上半部直接处理硬件请求, 硬中断,特点是快速执行;
    • 网卡接收到数据包后:
      • 会通过硬件中断的方式,通知内核有新的数据到了。
      • 同时把网卡的数据读到内存中,然后更新一下硬件寄存器的状态(表示数据已经读好了),最后再发送一个软中断信号,通知下半部做进一步 的处理。
    • 硬中断是硬件产生的,比如键盘、鼠标的输入,硬盘的写入读取、网 卡有数据了;
  • 下半部则是由内核触发, 软中断,特点是延迟执行。通常以内核线程的方式运行。
    • 内核就应 该调用中断处理程序来响应它。
    • 下半部被软中断信号唤醒后,需要从内存中找到网络数据,再按照网络协议栈,对数据进 行逐层解析和处理,直到把它送给应用程序。
    • 软中断是软件产生的,比如程序内的定时器、RCU锁等


  1. 上半部会打断 CPU 正在执行的任务,然后立即执行中断处理程序。
  2. 下半部以内核线程的方式执行,并且每个 CPU 都对应一个软中断内核线程,名字为 “ksoftirqd/CPU 编号”,比如说, 0 号 CPU 对应的软中断内核线程的名字就是 ksoftirqd/0。

软中断不只包括了硬件设备中断处理程序的下半部,一些内核 自定义的事件也属于软中断,比如内核调度和 RCU 锁(Read-Copy Update 的缩写, RCU 是 Linux 内核中最常用的锁之一)等。


查看软中断

proc 文件系统。它是一种内核空间和用户空间进行通 信的机制,可以用来查看内核的数据结构,或者用来动态修改内核的配置。

/proc/softirqs 提供了软中断在不同 CPU 上的累积运行次数

/proc/interrupts 提供了硬中断在不同 CPU 上的累积运行次数

1625559417243-e704a352-b84e-4b5e-b895-d2fcc5a9c01a.png

  • 注意软中断的类型,也就是这个界面中第一列的内容。从第一列你可以看到,软中 断包括了 10 个类别,分别对应不同的工作类型。比如 NET_RX 表示网络接收中断,而 NET_TX 表示网络发送中断。
  • 同一种软中断在不同 CPU 上的分布情况,也就是同一行的内容。正常情况 下,同一种中断在不同 CPU 上的累积次数应该差不多

查看软中断内核线程 softirqd

  • 软中断实际上是以内核线程的方式运行的,每个 CPU 都对应一个软中 断内核线程,这个软中断内核线程就叫做 ksoftirqd/CPU 编号

1625559640314-55b1e57c-e607-419a-8bf9-adeeef8fb257.png

这些线程的名字外面都有中括号,这说明 ps 无法获取它们的命令行参数 (cmline)。一般来说,ps 的输出中,名字括在中括号里的,一般都是内核线程。

软中断CPU使用率升高

hping3 是一个可以构造 TCP/IP 协议数据包的工具,可以对系统进行安全审计、防火墙 测试等。

1625560133696-fbee3c8b-1134-4f38-95a2-5a112d070d43.png

sar 是一个系统活动报告工具,既可以实时查看系统的当前活动,又可以配置保存和报告历史统计数据。

tcpdump 是一个常用的网络抓包工具,常用来分析各种网络问题。

shell输入命令变慢分析

top 看看是不是出现了 CPU 的瓶 颈

两个 CPU 的使用率虽然分别只有 3.3% 和 4.4%,但都用在了软中断 上;而从进程列表上也可以看到,CPU 使用率最高的也是软中断进程 ksoftirqd

判断哪类软中断的问题

观察 /proc/softirqs 文件的内容,你就能知道各种软中断类型的次数。但这是系统运行以来的累积中断 次数。

watch 命令,就可以定期运行一个命令来查看输出;如果再加上 -d 参数,还可以高亮出变 化的部分,从高亮部分我们就可以直观看出,哪些内容变化得更快。

**watch -d cat /proc/softirqs**

TIMER(定时中断)、 NET_RX(网络接收)、SCHED(内核调度)、RCU(RCU 锁)等这几个软中断都在不停 变化。网络数据包接收软中断的变化速率最快。而其他几种类型的软中 断,是保证 Linux 调度、时钟和临界区保护这些正常工作所必需的,所以它们有一定的变 化倒是正常的。

观察系统的网络接收情况

sar 可以用来查看系统的网络收发情况,不仅可以观察网络收发的吞吐量 (BPS,每秒收发的字节数),还可以观察网络收发的 PPS,即每秒收发的网络帧数

1625560641654-269247b6-1e7b-408e-9c01-9bc2ca3654f8.png

第一列:表示报告的时间。

第二列:IFACE 表示网卡。

第三、四列:rxpck/s 和 txpck/s 分别表示每秒接收、发送的网络帧数,也就是 PPS。

第五、六列:rxkB/s 和 txkB/s 分别表示每秒接收、发送的千字节数,也就是 BPS。

  • 对网卡 eth0 来说,每秒接收的网络帧数比较大,达到了 12607,而发送的网络帧数则比 较小,只有 6304;每秒接收的千字节数只有 664 KB,而发送的千字节数更小,只有 358 KB。
  • docker0 和 veth9f6bbcd 的数据跟 eth0 基本一致,只是发送和接收相反,发送的数据 较大而接收的数据较小。这是 Linux 内部网桥转发导致的。

怀疑是网络接收中断的问题,看 eth0 :接收的 PPS 比较大,达到 12607,而接收的 BPS 却很小,只有 664 KB。直观来看网络帧应该都是比较小的,664*1024/12607 = 54 字节,说明平均每个网络帧只有 54 字节,这显然是 很小的网络帧,也就是我们通常所说的小包问题。

网络抓包验证小包猜测

使用 tcpdump 抓取 eth0 上的包就可以了。我们事先已经知道, Nginx 监听在 80 端口, 它所提供的 HTTP 服务是基于 TCP 协议的,所以我们可以指定 TCP 协议和 80 端口精确抓 包:

1625560861806-ffe66e51-cbfd-4dc8-9785-462f2d8b2a7c.png

192.168.0.2.18238 > 192.168.0.30.80 ,表示网络帧从 192.168.0.2 的 18238 端口发 送到 192.168.0.30 的 80 端口,也就是从运行 hping3 机器的 18238 端口发送网络帧, 目的为 Nginx 所在机器的 80 端口。

Flags [S] 则表示这是一个 SYN 包。

再加上前面用 sar 发现的, PPS 超过 12000 的现象,现在我们可以确认,这就是从 192.168.0.2 这个地址发送过来的 SYN FLOOD 攻击。

系统的软中断使用率高这个现象--》观察 /proc/softirqs 文件的变化情况,判断出软中断类型是网络接收中断--》 sar 和 tcpdump ,确认这是一个 SYN FLOOD 问题--》 SYN FLOOD 问题最简单的解决方法,就是从交换机或者硬件防火墙中封掉来源 IP,这样 SYN FLOOD 网络帧就不会发送到服务器中。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/935719.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CPU多进程切换导致过载-CPU上下文切换

Linux 支持远大于 CPU 数量的任务同时运行。系统在很短的时间内,将 CPU 轮流分配给它们,造成多任务同时运行的错觉。过多的上下文切换,会把 CPU 时间消耗在寄存器、内核栈以及虚拟内存等数据的保存和恢复上,从而缩…

Vue3 之pinia状态管理

一、文档 https://pinia.vuejs.org/zh/introduction.html 二、简单使用 main.jsimport { createApp } from vue import ./style.css import App from ./App.vue import router from ./router import { createPinia } f…

乐理 -01识谱

资料来源 B站up主 三分钟音乐社识谱音名音调 1=C1=D1=E1=F1=G1=A1=B黑键半音&全音 表示音调间的距离唱名规则 全全半全全全半1=C1=D

shader func

1、step:float step(float edge, float x) vec2 step(vec2 edge, vec2 x) vec3 step(vec3 edge, vec3 x) vec4 step(vec4 edge, vec4 x)GLSL 的 step 函数用于比较两个参数的大小,当第一个参数小于第二个参数时返回 …

案例分析-DDOS攻击、网络延迟(延迟确认纳格算法)、NAT延迟

DDoS 攻击 DDoS 的前身是 DoS(Denail of Service),即拒绝服务攻击,指利用大量的合理请求, 来占用过多的目标资源,从而使目标服务无法响应正常请求。 DDoS(Distributed Denial of Service) 则是在 DoS 的基础上…

服务器丢包分析-iptables规则-MTU大小设置错误-perf-火焰图分析处理请求时内核线程调用

服务器丢包分析--iptables规则以及MTU大小设置错误 容器利用 Linux 内核提供的命名空间技术,将不同应用程序的运行隔离起来,并用统一的 镜像,来管理应用程序的依赖环境。这为应用程序的管理和维护,带来了极大的便捷…

2025 年碟式离心机厂家 TOP 企业品牌推荐排行榜,DB640 系列 / DB330 系列 / DB440 系列 / DB460 系列 / DB550 系列 / 专业碟式离心机推荐这十家公司!

在当前工业生产领域,碟式离心机作为实现物料高效分离的关键设备,其性能与品质直接影响着食品、饮料、化工、制药等众多行业的生产效率与产品质量。然而,随着市场需求的不断增长,碟式离心机制造厂家数量逐渐增多,市…

增加客户粘性

增加客户粘性类别参数官方默认值推荐「陷阱值」慢性症状/客户感知使用举例(如何设陷阱)解除方法(救场操作)Worker workers CPU2+1 1 长请求 502,报表卡死 odoo.conf 写 workers = 1,重启 改回 workers = (CPU*2)…

luogu P4513 小白逛公园

题目大意 需要一种数据结构,支持以下两种操作:单点修改 区间求最大连续子段和Sol 很容易想到线段树 首先我们要维护一个区间和\(sum\) 但是只用\(sum\)不能维护区间最大连续子段和 发现最大连续子段和可以从以下几种方…

20231408徐钰涵课程思维导图Openssl实践

20231408徐钰涵课程思维导图Openssl实践 Ubuntu系统实践过程openssl versionopenssl version -helpopenssl list -helpopenssl -help

案例分析-DNS+tcpdump+wireshark

网络优化,实际上包含了整 个网络协议栈的所有层的优化。 DNS解析速度不稳定DNS(Domain Name System) 域名系统,提供 域名和 IP 地址之间映射关系的查询服务。动态服务发现和全局 负载均衡(Global Server Load Bal…

2025 年卧式离心机厂家 TOP 企业品牌推荐排行榜,LW250/LW350/LW450/LW530/LW540 / 专业卧式离心机推荐这十家公司!

在当前工业生产领域,卧式离心机作为关键的分离设备,广泛应用于食品、饮料、化工、制药、环保等众多行业。然而,行业发展却面临着诸多问题,一方面,市场上卧式离心机品牌数量众多,产品质量参差不齐,部分品牌缺乏核…

2025 年水泥管厂家最新推荐排行榜,国标水泥管,二级水泥管,钢筋混凝土水泥管,大口径水泥管,平口水泥管公司推荐!

在基础设施建设持续推进的当下,水泥管作为排水、输水等工程的核心建材,其质量与供应稳定性直接影响项目进度与长期使用效果。然而当前行业中,部分源头厂家存在产品规格不达标、施工服务脱节、售后保障缺失等问题,比…

Day1 经典Holle word

//导入一个文件,stdio.h std是一个标准库 i是input o是output即标准输入输出库 //h是头文件,但stdio之后可导入的不止头文件 //<>在这里的作用是导入系统文件,""则用来导入自定义文件 #include&l…

内存知识总结

虚拟内存与多级页表 对普通进程来说,能看到的其实是内核提供的虚拟内存,这些虚拟内存还需要通过页表,由系统映射为物理内存。 当进程通过 malloc() 申请虚拟内存后,系统并不会立即为其分配物理内存,而是在首次访 …

2025 年金属复合板厂家推荐广东粤洋建材科技有限公司,实力产能与定制服务全景解析金属复合板公司推荐

2025 年铝蜂窝行业正迎来结构性增长机遇,市场规模预计达 110 亿元,年均复合增长率保持 8.5%,绿色建筑政策与轻量化需求成为核心驱动力。随着《建筑装饰用蜂窝铝板》新国标实施,防火等级与环保标准持续升级,倒逼行…

2025 年铝蜂窝板厂家最新推荐排行榜,铝蜂窝板,铝蜂窝吊顶,铝蜂窝墙面板,微孔吸音板,防火A级铝复合板公司推荐

随着建筑装饰行业对轻质高强材料的需求升级,铝蜂窝板凭借优异的物理性能与美学适配性,在幕墙、公共空间、交通设施等领域的应用日益广泛。但当前市场存在明显痛点:部分厂家产能不足导致订单交付延迟,产品适配场景单…

读书笔记:关于Oracle里的“老古董”:LONG类型

我们的文章会在微信公众号IT民工的龙马人生和博客网站( www.htz.pw )同步更新 ,欢迎关注收藏,也欢迎大家转载,但是请在文章开始地方标注文章出处,谢谢! 由于博客中有大量代码,通过页面浏览效果更佳。本文为个人学…

致技术社区的英雄们:一场关于文明未来的建造邀请

致技术社区的英雄们:一场关于文明未来的建造邀请 在代码与算法的世界里,你们是真正的创造者。今天,我想为你们描绘一个不一样的工程蓝图——它不优化广告点击,不提升游戏帧率,而是要为人机共生的未来,构建一个价…

AI图片生成思路

AI图片生成思路AI图片生成思路指导思路先寻找真实图片,发送到AI进行描述照片描述:這張照片的主角是四隻毛茸茸的柴犬,牠們一起棲息在一個紅磚矮牆上。狗狗的姿態與顏色:畫面從左至右,第一隻是常見的赤色柴犬,牠舒…