/proc/interrupts 和 /proc/softirqs 两者是相互关联的,但它们各自记录的信息和作用有所不同,反映了硬中断和软中断的两个处理阶段。

两者的关系:

  1. 硬中断引发软中断:

硬中断通常由外部设备(如网络卡、键盘等)触发,当 CPU 响应硬中断时,会暂时停止当前正在执行的任务,去处理该硬件中断。

在硬中断的处理中,通常会执行最少量的必要工作,例如标记事件已发生,然后安排更多的处理工作通过软中断来执行。这种设计的目的是为了减少硬中断处理的时间,避免阻塞其他重要的实时任务。

硬中断(记录在 /proc/interrupts 中)引发软中断(记录在 /proc/softirqs 中),软中断用于延迟处理更复杂的任务,如网络数据包的完整处理。

  1. 分工明确:

硬中断处理阶段(记录在 /proc/interrupts)通常只处理那些必须立即执行的任务,如告知 CPU 某个硬件事件已发生。

软中断处理阶段(记录在 /proc/softirqs)用于完成大部分的实际工作,比如数据传输和处理。软中断也可以通过内核调度器在不同的 CPU 核心上处理,这可以提高并行性和系统性能。

/proc/interrupts 的作用:

虽然 /proc/softirqs 记录了实际处理软中断的情况,但 /proc/interrupts 提供了关于硬件事件来源的详细信息。如果硬中断没有触发,软中断也就不会发生。因此,/proc/interrupts 可以帮助你了解:

  1. 硬件中断源:哪个设备产生了中断。

  2. 中断分布:中断在不同的 CPU 核上是如何分布的,有助于检查中断是否过于集中在某个核心上导致性能瓶颈。

  3. 中断频率:可以监控硬中断的发生频率,帮助识别是否存在硬件问题,如某个设备不断产生大量的中断。

诊断作用:如果发现软中断处理性能差,可以查看 /proc/interrupts 来确认是否有某些硬中断高频触发,造成 CPU 负载增加。也可以通过 /proc/interrupts 检查是否存在硬件中断异常,比如某个硬件没有按预期产生中断。

何时使用 /proc/interrupts:

硬件问题诊断:如果怀疑某个硬件设备引起了系统性能问题,/proc/interrupts 可以帮助你确定哪些设备频繁触发硬中断。

CPU 中断负载平衡:通过观察硬中断在多个 CPU 核心上的分布情况,可以判断是否需要进行中断负载的重新分配。

系统性能分析:如果需要了解系统性能下降的根本原因,/proc/interrupts 能展示硬件中断对 CPU 资源的消耗,帮助分析瓶颈。

hardirq中断绑核

echo xxx >/proc/irq/xxx/smp_affinity

softirq中断绑核

taskset -p cpu_mask pid.

softirq和hardirq中断亲和度的更多相关文章

  1. CPU亲和度

    CPU亲和度(CPU Affinity),就是将一个进程或者线程强制绑定在CPU的某一个core上运行. 参考:https://www.cnblogs.com/zhangxuan/p/6427533. ...

  2. Linux kernel的中断子系统之(八):softirq

    返回目录:<ARM-Linux中断系统>. 总结:中断分为上半部和下半部,上半部关中断:下半部开中断,处理可以延迟的事情.下半部有workqueue/softirq/tasklet三种方式 ...

  3. Linux中断 - softirq

    一.前言 对于中断处理而言,linux将其分成了两个部分,一个叫做中断handler(top half),是全程关闭中断的,另外一部分是deferable task(bottom half),属于不那 ...

  4. Linux 内核中断内幕

    转自:http://www.ibm.com/developerworks/cn/linux/l-cn-linuxkernelint/index.html#resources Linux 内核中断内幕 ...

  5. Linux驱动设计—— 中断与时钟

    中断和时钟技术可以提升驱动程序的效率 中断 中断在Linux中的实现 通常情况下,一个驱动程序只需要申请中断,并添加中断处理函数就可以了,中断的到达和中断函数的调用都是内核实现框架完成的.所以程序员只 ...

  6. Linux 内核中断内幕【转】

    转自:http://www.ibm.com/developerworks/cn/linux/l-cn-linuxkernelint/ 本文对中断系统进行了全面的分析与探讨,主要包括中断控制器.中断分类 ...

  7. linux调度全景指南

  8. python之系统性能信息模块psutil

    系统性能信息模块psutil 跨平台库 轻松实现获取系统运行的进程和系统利用率(包括CPU.内存.磁盘.网络等)信息. 主要用于系统监控,分析和限制系统资源及进程的管理 实现同等命令行工具提供的功能( ...

  9. 转:Linux网络IO并行化技术概览

    转:http://codinginet.com/articles/view/201605-linux_net_parallel?simple=1&from=timeline&isapp ...

  10. [转]python3之模块psutil系统性能信息

    转自:https://www.cnblogs.com/zhangxinqi/p/9106265.html 阅读目录 1.psutil模块安装 2.获取CPU信息 3.内存信息 4.磁盘信息 5.网络信 ...

随机推荐

  1. Jmeter参数化3-正则表达式提取

    如果你想要将jmeter上个接口返回的参数值传到下个接口请求参去,可用正则表达式来提取传递 1.首先得到jmeter接口的json返回结果 2.组件路径:线程组->右键添加->后置处理器- ...

  2. 【Android】看安卓代码的一点笔记

    最近项目需要把安卓项目拉下来看了 简单来说的话,网页是HTML + CSS + JS 组成的,运行环境是浏览器上面 安卓APP应用是 Java + XML 组成的,运行环境是这个安卓系统中 构成结构 ...

  3. 利用强化学习算法解释人类脑对高维状态的抽象表示:how humans can map high-dimensional sensory inputs in actions

    论文: <Using deep reinforcement learning to reveal how the brain encodes abstract state-space repre ...

  4. Cython.Compiler.Errors.CompileError: Cython.Compiler.Errors.CompileError: /home/devil/anaconda3/envs/chainerRL/lib/python3.6/site-packages/mujoco_py/cymj.pyx

    ubuntu系统下,python3.6,anaconda下配置mujoco210环境时遇到报错: /home/devil/anaconda3/envs/chainerRL/lib/python3.6/ ...

  5. 设计和实现AI算法算法时有没有必要在代码中加注释,没有用必要在实现之前弄个UML图???

    问题如题: 设计和实现AI算法算法时有没有必要在代码中加注释,没有用必要在实现之前弄个UML图??? 今天看到一个博文: https://www.cnblogs.com/siyuanwai/p/154 ...

  6. jQuery Eazyui的学习和使用(一)

    工作需要,需要学习使用据说非常简单好用的前端框架-----Eazyui 先看看简介吧:"jQuery EasyUI 是一个基于 jQuery 的框架,集成了各种用户界面插件.jQuery E ...

  7. (七)Redis 持久化 AOF、RDB

    Redis 一旦服务器宕机,内存中的数据将全部丢失,从后端数据库恢复这些数据,对数据库压力很大,且性能肯定比不上从 Redis 中读取,会拖慢应用程序.所以,对 Redis 来说,实现数据的 持久化 ...

  8. 【问题解决】git status中文文件名乱码

    问题复现 解决办法 在git bash中直接执行如下命令 git config --global core.quotepath false 原因 通过 git config --help 可以查看到以 ...

  9. 【牛客刷题】HJ4 字符串分隔

    题目链接 这个题目本身基本上是对语言熟悉程度的考察,没有什么别的逻辑可言: package main import ( "fmt" "strings" ) fu ...

  10. YOLOv10添加输出各类别训练过程指标

    昨天有群友,在交流群[群号:392784757]里提到了这个需求,进行实现一下 V10 官方代码结构相较于 V8 稍微复杂一些 yolov10 是基于 v8 的代码完成开发,yolov10 进行了继承 ...