13系统里有哪些软中断?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了13系统里有哪些软中断?相关的知识,希望对你有一定的参考价值。

在 Linux 系统里,我们可以通过查看 ​​/proc/softirqs​​​ 的 内容来知晓「软中断」的运行情况,以及 ​​/proc/interrupts​​ 的 内容来知晓「硬中断」的运行情况。

接下来,就来简单的解析下 ​​/proc/softirqs​​ 文件的内容,在我服务器上查看到的文件内容如下:

13、系统里有哪些软中断?_内核线程

你可以看到,每一个 CPU 都有自己对应的不同类型软中断的累计运行次数,有 3 点需要注意下。

第一点,要注意第一列的内容,它是代表着软中断的类型,在我的系统里,软中断包括了 10 个类型,分别对应不同的工作类型,比如 ​​NET_RX​​​ 表示网络接收中断,​​NET_TX​​​ 表示网络发送中断、​​TIMER​​​ 表示定时中断、​​RCU​​​ 表示 RCU 锁中断、​​SCHED​​ 表示内核调度中断。

第二点,要注意同一种类型的软中断在不同 CPU 的分布情况,正常情况下,同一种中断在不同 CPU 上的累计次数相差不多,比如我的系统里,​​NET_RX​​ 在 CPU0 、CPU1、CPU2、CPU3 上的中断次数基本是同一个数量级,相差不多。

第三点,这些数值是系统运行以来的累计中断次数,数值的大小没什么参考意义,但是系统的中断次数的变化速率才是我们要关注的,我们可以使用 ​​watch -d cat /proc/softirqs​​ 命令查看中断次数的变化速率。

前面提到过,软中断是以内核线程的方式执行的,我们可以用 ​​ps​​ 命令可以查看到,下面这个就是在我的服务器上查到软中断内核线程的结果:

13、系统里有哪些软中断?_服务器_02

可以发现,内核线程的名字外面都有有中括号,这说明 ps 无法获取它们的命令行参数,所以一般来说,名字在中括号里的都可以认为是内核线程

而且,你可以看到有 4 个 ​​ksoftirqd​​ 内核线程,这是因为我这台服务器的 CPU 是 4 核心的,每个 CPU 核心都对应着一个内核线程。

以上是关于13系统里有哪些软中断?的主要内容,如果未能解决你的问题,请参考以下文章

关于linux哪些能调用schedule或者等待事件的问题

软中断的概念

10.系统的软中断CPU使用率升高

系统软中断cpu使用率升高,怎么办

Linux软中断与系统调用

函数调用和软中断调用的区别