Load Average 负载解读


Linux 及其他 Unix-Like 作业系统都有一组称为 Load Average 的数值,从这组数值可以判断系统有多繁忙,数值越大表示系统越繁忙;数值越小表示系统越闲置,很多系统管理员也会根据这组数值衡量系统的负载。

要查看 Load Average 有不同的方法,最简单是执行 uptime 指令:

$ uptime
08:29:12 up 20 days, 22:28, 1 user, load averages: 0.29, 0.20, 0.29

Linux 的 Load Average 的数字代表有多少个 process 在等待 CPU 及 DISK I/O 等资源运算,如果是 1 表示有一个 process 正在执行或等待 CPU 运算;5 表示有 5 个 process 正在执行或等待 CPU 运算,一台完全闲置的电脑,其 Load Average 是 0.
这个 Load Average 数值可以简单地这样看待,对于一台只有一个核心的单处理器系统,Load Average 为 1.03 时表示系统超载 3%,如果是 0.8,表示系统并未超载,只用了 80%.

那究竟 Load Average 在什么水平才算高呢?以前在一个外国论坛看到这个讲法,我也一直沿用:

Load Average 长期超过 0.7: 原则上系统没有什么问题,但这个时候也应该检查一下,看看究竟是硬件需要升级,还是有其他什么原因。
Load Average 长期超过 1.0: 这时系统执行上还十分畅顺,但应该尽快检查系统的问题。
Load Average 长期超过 5.0: 要立即检查问题,不然半夜三更当机,那便会十分麻烦。

当然如果系统只是短暂时间到达以上数值,这个问题不太,只要不是长时间便好。

但对于一台有多伙 CPU 的系统,计算方法便有所不同了,而且现在的 CPU 都已经是多核心,所以不可以单看 Load Average 的数值。例如系统内 CPU 是四核心,那么 Load Average 到达 4 才是 100% 负载。以上面的算法,以一台有单伙四核心处理器的服务器,我会在 Load Average 长期超过 3 时检查那里出现问题。

用 uptime 查看 Load Average 时,会有三个数值,它们从左至右分别代表 Load Average 时段是:最近 1 分钟, 最近 5 分钟, 及最近 15 分钟。原则上第一个数值的意义不大,因为那只是最近 1 分钟的 Load Average,要监测系统的负载,第 2 (过去 5 分钟) 及第 3 个 (过去 15 分钟) 数值的意思更大。

除了 Linux 外,其他 Unix Like 环境,例如 Mac 也可以执行 uptime 查看系统的 Load Average,或者如果像 Router (DD-WRT 可以看到) 这类装置,如果有提供这个功能的话,也可以查看它的 Load Average。

3 Comments

  1. qoo 28 October 2019
  2. TT 11 October 2022

Leave a Reply