说起uptime熟悉Linux的人肯定不陌生,它告诉我们这个机器活了多久, 当前时间、系统运行时间以及正在登录用户数
$ uptime
21:38:15 up 106 days, 6:15, 1 user, load average: 0.05, 0.12, 0.12
而最后三位表示平均负载,可能大家都会忽略。其 依次表示过去 1 分钟、5 分钟、15 分钟的平均负载(Load Average)。
而平均负载该怎么理解呢?
简单来说,平均负载是指单位时间内,系统处于可运行状态和不可中断状态的平均进程数,也就是平均活跃进程数,它和 CPU 使用率并没有直接关系。
所谓可运行状态的进程,是指正在使用 CPU 或者正在等待 CPU 的进程,也就是我们 vmstat 命令看到的,处于 r 队列 状态(Running 或 Runnable)的进程。 不可中断状态的进程, 则是正处于内核态关键流程中的进程,并且这些流程是不可打断的,比如最常见的是等待硬件设备的 I/O 响应,也是我们vmstat命令中看到的 b 队列状态(Uninterruptible Sleep,也称为 Disk Sleep)的进程。
其实不可中断状态实际上是系统对进程和硬件设备的一种保护机制。
本文的意图并不是要给大家解释这些名词,而是像告诉大家平均负载多少时合理。
通过 CPU个数 (查看 /proc/cpuinfo 获取 ),我们就可以判断出,当平均负载比 CPU 个数还大的时候,系统已经出现了过载。当然 最理想的情况是等于 CPU 个数 。主要概括为一下几种情况:
1. 如果1分钟、5 分钟、15 分钟的三个值相差不大,那就说明系统负载平稳
2. 如果头尾波动较大,说明系统负载在减少或增大
比如: 1.82,0.90,8.56,说明在过去 1 分钟内,系统有 82% 的超载,而在 15 分钟内,有 756% 的超载,从整体趋势来看,系统的负载在降低。一般 当平均负载高于 CPU 数量 80% 的时候,需要引起重视。
