怎么分析理解 uptime 以及top 中的cpu Load Average
最后三个数字依次表是过去 1 分钟、5 分钟、15 分钟的平均负载(Load Average)
Load Average:什么意思呢??---->是指单位时间内,系统处于可运行状态和不可中断状态的平均进程数,也就是平均活跃进程数,它和 CPU 使用率并没有直接关系
不可中断状态的进程则是正处于内核态关键流程中的进程,并且这些流程是不可打断的,比如最常见的是等待硬件设备的 I/O 响应,也就是我们在 ps 命令中看到的 D 状态(Uninterruptible Sleep,也称为 Disk Sleep)的进程
平均活跃进程数:如果每个 CPU 上都刚好运行着一个进程,这样每个 CPU 都得到了充分利用,
那是不是平局负载为1 表示cpu刚好满足呢??答案是:要考虑多核cpu----------
比如当平均负载为 2 时,
- 在只有 2 个 CPU 的系统上,意味着所有的 CPU 都刚好被完全占用。
- 在 4 个 CPU 的系统上,意味着 CPU 有 50% 的空闲。
- 在只有 1 个 CPU 的系统中,则意味着有一半的进程竞争不到 CPU。
系统负荷的经验法则
1.0是系统负荷的理想值吗?不一定,系统管理员往往会留一点余地,一般临界值为0.7。
当系统负荷持续大于0.7,你必须开始调查了,问题出在哪里,防止情况恶化。
当系统负荷持续大于1.0,你必须动手寻找解决办法,把这个值降下来。
当系统负荷达到5.0,就表明你的系统有很严重的问题,长时间没有响应,或者接近死机了。不应该让系统达到这个值
平均负载与 CPU 使用率
平均负载代表的是活跃进程数,那平均负载高了,是不是意味着 CPU 利用率飙高???
CPU 密集型进程,使用大量 CPU 会导致平均负载升高,CPU使用率会飙高;
I/O 密集型进程,等待 I/O 也会导致平均负载升高,但 CPU 使用率不一定很高;
大量等待 CPU 的进程调度也会导致平均负载升高,此时的 CPU 使用率也会比较高。
此时排查工具一般都会使用pidstat 等