1.平均负载?

平均负载: 单位时间内活跃的进程数

eg:

平均负载为 2 时,意味着什么呢?

  • 系统有2个CPU:所有的CPU都刚好被完全占用。
  • 系统有4个CPU: CPU有50%的空闲。
  • 系统有1个CPU:一半的进程竞争不到CPU,会有进程切换

2.记录了1分钟、5分钟、15分钟的平均负载,到底怎么参考?

负载平衡:1 分钟、5 分钟、15 分钟的三个值基本相同

1 分钟的值远小于 15 分钟的值: 在14分钟的时间里系统的负载情况是有一点问题的

1 分钟的值远大于 15 分钟的值: 这种增加有可能只是临时性的,需要持续观察

1 分钟的平均负载接近或超过了 CPU 的个数: 系统正在发生过载的问题,就需要分析具体的问题,并进行优化了

当平均负载高于 CPU 数量 70% 的时候,你就应该分析排查负载高的问题了。

3.平均负载与 CPU 使用率的区别

平均负载: 代表的是活跃进程数,指单位时间内,处于可运行状态和不可中断状态的进程数。

CPU 使用率: 单位时间内 CPU 繁忙情况的统计。

平均负载和CPU使用率未必是一致的:

  • CPU 密集型进程,使用大量 CPU 会导致平均负载升高,此时这两者是一致的
  • I/O 密集型进程,等待 I/O 也会导致平均负载升高,但 CPU 使用 率不一定很高

4.什么是中断?

中断其实是一种异步的事件处理机制,可以提高系统的并发处理能力,中断处理程序会打断其他进程的运行。

注:中断处理程序在响应中断时,还会临时关闭别的中断(中断屏蔽)。这就会导致上一次中断处理完成之前,其他中断都不能响应,也就是说中断有可能会丢失。(中断队列的容量限制)

5.什么是软中断?

为了解决中断处理程序执行过长和中断丢失的问题,Linux 将中断处理过程分成了两个阶段,也就是上半部和下半部:

  • 上半部用来快速处理中断,它在中断禁止模式下运行,主要处理跟硬件紧密相关的或时间敏感的工作。
  • 下半部用来延迟处理上半部未完成的工作,通常以内核线程的方式运行

从上半部到下半部的切换是通过软中断信号实现的

  • 上半部直接处理硬件请求,也就是我们常说的硬中断,特点是快速执行;

  • 下半部则是由内核触发,也就是我们常说的软中断,特点是延迟执行。

注1:软中断不只包括了硬件设备中断处理程序的下半部,一些内核自定义的事件也属于软中断

注2:同一种中断在不同 CPU 上的累积次数应该差不多。