/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. 微服务集成springsecurity实现认证

    module:auth 1.添加依赖:spring-cloud-starter-security与spring-cloud-starter-oauth2 2.配置WebSecurityConfig:注 ...

  2. M1安装Anaconda遇到的问题

    1. 安装时报错:"Anaconda3 is already installed in /opt/anaconda3. Use 'conda update anaconda3' to upd ...

  3. Jmeter函数助手10-regexFunction

    regexFunction函数用于对上一个请求进行正则表达式提取处理,类似正则表达式. 用于从前一个请求搜索结果的正则表达式:填入正则表达式 Template for the replacement ...

  4. Win11不在C盘安装WSL2(Linux环境),安装Nvidia驱动和默认使用Win11的网络代理服务

    众所周知,WSL 2 为 Windows 用户提供了一个强大.高效且灵活的 Linux 环境,特别适合开发者使用.它结合了 Windows 和 Linux 的优点,为用户提供了更加全面和高效的工作环境 ...

  5. 【DataBase】MySQL 02 MySQL的配置详细

    参考至视频:P8 - P11部分 https://www.bilibili.com/video/BV1xW411u7ax 配置文件的介绍 最基本的只需要这三项就行了,演示的其他配置在新版都不支持了貌似 ...

  6. 亲测可用的 Linux(Ubuntu18.04下)可运行的超级玛丽奥(gym-super-mario-bros)游戏的仿真环境—————————可用于强化学习算法的游戏模拟器环境

    与前文中的俄罗斯方块游戏一样都是可以用于强化学习算法的游戏模拟器,这里介绍的是超级玛丽奥(gym-super-mario-bros)游戏的仿真环境. Python库,代码地址: https://git ...

  7. 花样玩转“所见即所得”的可视化开发UI

    随着技术的发展,用户对软件的界面美观度和交互体验的要求越来越高.在这样的背景下,可视化开发UI(User Interface)成为了提升用户体验和开发效率的重要工具. 通过图形界面来设计和构建用户界面 ...

  8. Golang在整洁架构基础上实现事务

    前言 大家好,这里是白泽,这篇文章在 go-kratos 官方的 layout 项目的整洁架构基础上,实现优雅的数据库事务操作. 视频讲解 :B站:白泽talk,公众号[白泽talk] 本期涉及的学习 ...

  9. 图片热区。vue3+ts和vue3+js写法(js没写完数据,功能完善)

    废话不多说,上代码 vue3+ts <!-- 热区组件 --> <template> <el-dialog v-model="dialog_visible&qu ...

  10. abc366

    E 解题思路 这题求的是满足\(\sum^n_{i=1}(|x-x_i|+|y-y_i|)\leq D\) 的坐标\((x,y)\) 的数目,由于是求和,所以\(x,y\) 之间是相互独立的 第一步, ...