1.平均负载是什么
概念: 平均负载指单位时间内,系统处于可运行状态和不可中断的平均进程数,和cpu使用率没有直接关系。
所谓可运行状态的进程,是指正在使用 CPU 或者正在等待 CPU 的进程,也就是我们常用 ps 命令看到的,处于 R 状态(Running 或 Runnable)的进程。
不可中断状态的进程则是正处于内核态关键流程中的进程,并且这些流程是不可打断的,比如最常见的是等待硬件设备的 I/O 响应,也就是我们在 ps 命令中看到的 D 状态(Uninterruptible Sleep,也称为 Disk Sleep)的进程。
2.平均负载为多少是合理的
系统uptime 看到的结果里,三个时间段的平均负载,多大的时候说明系统负载高,什么时候说明系统负载低。最理性的情况是等于cpu 逻辑个数。判断系统有几个cpu,通过top命令或者文件/proc/cpuinfo获取。
# grep 'model name' /proc/cpuinfo | wc -l
4
#uptime
load average: 0.00, 0.01, 0.05
系统负载3个值该参考哪一个呢?
如果 1 分钟、5 分钟、15 分钟的三个值基本相同,或者相差不大,那就说明系统负载很平稳。
如果 1 分钟的值远小于 15 分钟的值,就说明系统最近 1 分钟的负载在减少,而过去 15 分钟内却有很大的负载。
反过来,如果 1 分钟的值远大于 15 分钟的值,就说明最近 1 分钟的负载在增加,这种增加有可能只是临时性的,也有可能还会持续增加下去,所以就需要持续观察。一旦 1 分钟的平均负载接近或超过了 CPU 的个数,就意味着系统正在发生过载的问题,这时就得分析调查是哪里导致的问题,并要想办法优化了。
假设我们在一个单 CPU 系统上看到平均负载为 1.73,0.60,7.98,那么说明在过去 1 分钟内,系统有 73% 的超载,而在 15 分钟内,有 698% 的超载,从整体趋势来看,系统的负载在降低。
合理的平均负载高于cpu数量70% 就得注意。