Linux性能优化-软中断

Linux将中断处理分为了2个阶段:

1.上半部直接处理硬件请求(硬中断),快速处理中断,主要处理跟硬件相关或是时间敏感的工作。

2.下半部则是内核触发(软中断)用来延迟处理上半部未完成的任务,通常以内核线程的方式运行。

这里可以用取外卖举个例子:

上半部分:接听电话,沟通送餐地址,发票或者其他事情等见面再说。

下半部分:取外卖、处理发票等事情。

查看软中断和内核线程

  • /proc/softirqs 提供了软中断的运行情况;
  • /proc/interrupts 提供了硬中断的运行情况。

查看各种类型的软中断在cpu上的运行次数

$ cat /proc/softirqs
                    CPU0       CPU1
          HI:          0          0
       TIMER:     811613    1972736
      NET_TX:         49          7
      NET_RX:    1136736    1506885
       BLOCK:          0          0
    IRQ_POLL:          0          0
     TASKLET:     304787       3691
       SCHED:     689718    1897539
     HRTIMER:          0          0
         RCU:    1330771    1354737

软中断是以内核线程的方式运行的,每个cpu会对应一个软中断内核线程,这个软中断内核线程叫做ksoftirqd/CPU编号:

ps aux | grep softirq
root 7 0.0 0.0 0 0 ? S Oct10 0:01 [ksoftirqd/0]
root 16 0.0 0.0 0 0 ? S Oct10 0:01 [ksoftirqd/1]

ps的输出中,名字在中括号里的,一般都是内核线程。

posted @   Pyke的大鲨鱼  阅读(205)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
点击右上角即可分享
微信分享提示