softirq和hardirq中断亲和度
/proc/interrupts 和 /proc/softirqs 两者是相互关联的,但它们各自记录的信息和作用有所不同,反映了硬中断和软中断的两个处理阶段。
两者的关系:
- 硬中断引发软中断:
硬中断通常由外部设备(如网络卡、键盘等)触发,当 CPU 响应硬中断时,会暂时停止当前正在执行的任务,去处理该硬件中断。
在硬中断的处理中,通常会执行最少量的必要工作,例如标记事件已发生,然后安排更多的处理工作通过软中断来执行。这种设计的目的是为了减少硬中断处理的时间,避免阻塞其他重要的实时任务。
硬中断(记录在 /proc/interrupts 中)引发软中断(记录在 /proc/softirqs 中),软中断用于延迟处理更复杂的任务,如网络数据包的完整处理。
- 分工明确:
硬中断处理阶段(记录在 /proc/interrupts)通常只处理那些必须立即执行的任务,如告知 CPU 某个硬件事件已发生。
软中断处理阶段(记录在 /proc/softirqs)用于完成大部分的实际工作,比如数据传输和处理。软中断也可以通过内核调度器在不同的 CPU 核心上处理,这可以提高并行性和系统性能。
/proc/interrupts 的作用:
虽然 /proc/softirqs 记录了实际处理软中断的情况,但 /proc/interrupts 提供了关于硬件事件来源的详细信息。如果硬中断没有触发,软中断也就不会发生。因此,/proc/interrupts 可以帮助你了解:
硬件中断源:哪个设备产生了中断。
中断分布:中断在不同的 CPU 核上是如何分布的,有助于检查中断是否过于集中在某个核心上导致性能瓶颈。
中断频率:可以监控硬中断的发生频率,帮助识别是否存在硬件问题,如某个设备不断产生大量的中断。
诊断作用:如果发现软中断处理性能差,可以查看 /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中断亲和度的更多相关文章
- CPU亲和度
CPU亲和度(CPU Affinity),就是将一个进程或者线程强制绑定在CPU的某一个core上运行. 参考:https://www.cnblogs.com/zhangxuan/p/6427533. ...
- Linux kernel的中断子系统之(八):softirq
返回目录:<ARM-Linux中断系统>. 总结:中断分为上半部和下半部,上半部关中断:下半部开中断,处理可以延迟的事情.下半部有workqueue/softirq/tasklet三种方式 ...
- Linux中断 - softirq
一.前言 对于中断处理而言,linux将其分成了两个部分,一个叫做中断handler(top half),是全程关闭中断的,另外一部分是deferable task(bottom half),属于不那 ...
- Linux 内核中断内幕
转自:http://www.ibm.com/developerworks/cn/linux/l-cn-linuxkernelint/index.html#resources Linux 内核中断内幕 ...
- Linux驱动设计—— 中断与时钟
中断和时钟技术可以提升驱动程序的效率 中断 中断在Linux中的实现 通常情况下,一个驱动程序只需要申请中断,并添加中断处理函数就可以了,中断的到达和中断函数的调用都是内核实现框架完成的.所以程序员只 ...
- Linux 内核中断内幕【转】
转自:http://www.ibm.com/developerworks/cn/linux/l-cn-linuxkernelint/ 本文对中断系统进行了全面的分析与探讨,主要包括中断控制器.中断分类 ...
- linux调度全景指南
- python之系统性能信息模块psutil
系统性能信息模块psutil 跨平台库 轻松实现获取系统运行的进程和系统利用率(包括CPU.内存.磁盘.网络等)信息. 主要用于系统监控,分析和限制系统资源及进程的管理 实现同等命令行工具提供的功能( ...
- 转:Linux网络IO并行化技术概览
转:http://codinginet.com/articles/view/201605-linux_net_parallel?simple=1&from=timeline&isapp ...
- [转]python3之模块psutil系统性能信息
转自:https://www.cnblogs.com/zhangxinqi/p/9106265.html 阅读目录 1.psutil模块安装 2.获取CPU信息 3.内存信息 4.磁盘信息 5.网络信 ...
随机推荐
- Jmeter参数化3-正则表达式提取
如果你想要将jmeter上个接口返回的参数值传到下个接口请求参去,可用正则表达式来提取传递 1.首先得到jmeter接口的json返回结果 2.组件路径:线程组->右键添加->后置处理器- ...
- 【Android】看安卓代码的一点笔记
最近项目需要把安卓项目拉下来看了 简单来说的话,网页是HTML + CSS + JS 组成的,运行环境是浏览器上面 安卓APP应用是 Java + XML 组成的,运行环境是这个安卓系统中 构成结构 ...
- 利用强化学习算法解释人类脑对高维状态的抽象表示:how humans can map high-dimensional sensory inputs in actions
论文: <Using deep reinforcement learning to reveal how the brain encodes abstract state-space repre ...
- 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/ ...
- 设计和实现AI算法算法时有没有必要在代码中加注释,没有用必要在实现之前弄个UML图???
问题如题: 设计和实现AI算法算法时有没有必要在代码中加注释,没有用必要在实现之前弄个UML图??? 今天看到一个博文: https://www.cnblogs.com/siyuanwai/p/154 ...
- jQuery Eazyui的学习和使用(一)
工作需要,需要学习使用据说非常简单好用的前端框架-----Eazyui 先看看简介吧:"jQuery EasyUI 是一个基于 jQuery 的框架,集成了各种用户界面插件.jQuery E ...
- (七)Redis 持久化 AOF、RDB
Redis 一旦服务器宕机,内存中的数据将全部丢失,从后端数据库恢复这些数据,对数据库压力很大,且性能肯定比不上从 Redis 中读取,会拖慢应用程序.所以,对 Redis 来说,实现数据的 持久化 ...
- 【问题解决】git status中文文件名乱码
问题复现 解决办法 在git bash中直接执行如下命令 git config --global core.quotepath false 原因 通过 git config --help 可以查看到以 ...
- 【牛客刷题】HJ4 字符串分隔
题目链接 这个题目本身基本上是对语言熟悉程度的考察,没有什么别的逻辑可言: package main import ( "fmt" "strings" ) fu ...
- YOLOv10添加输出各类别训练过程指标
昨天有群友,在交流群[群号:392784757]里提到了这个需求,进行实现一下 V10 官方代码结构相较于 V8 稍微复杂一些 yolov10 是基于 v8 的代码完成开发,yolov10 进行了继承 ...