What is Load Averages
系统负载 ( Load Averages ) 以前一直觉得是系统性能的整体评价,不过其实当然没有这么智能,它描述的只是CPU的压力状态信息。它是当前处理的和等待CPU处理的一段时间内,进程数之和的统计信息,即CPU使用的队列长度统计信息。
How to check Load Averages
常用的工具有比如,uptime,top 和 htop … 看到的信息一个比一个「智能」,不过大概都是类似的,比如:
22:54 up 9 days, 12:25, 4 users, load averages: 1.58 1.79 2.17
Min & Max of Load Averages
首先来关注一下最大值和最小值。最小值当然是 0 了,就是完全没有用呗。最大值就取决于 CPU 的配置了。如果你只有一个单核CPU,那么上限就是 1 。如果是这样,刚才我上面的数据 load averages: 1.58 1.79 2.17
来看,已经大于1,显然是爆表了。
如果是多个CPU,或者多核,就不一样了。当然这两种情况其实不完全相同,有些微妙的性能区别,但是我们可以简单理解为最后多核的总数量,就是 Load Averages 的上限。
CPU Core Count
要查看内核数量,在 Linux 上,可以用命令:
$ grep -c 'model name' /proc/cpuinfo
如果是在 MacOS 上,我们可以从系统信息里看到:
Apple Icon Menu > About This Mac > System Report > Hardware.
Number of Processors: 1
Total Number of Cores: 4
或者使用命令:
$ sysctl hw.physicalcpu
hw.physicalcpu: 4
What value is right ?
知道了最大值和最小值,可什么样的数值是合理的呢?还是看看上面的数据:
load averages: 1.58 1.79 2.17
这三个数分别对应的是1分钟,5分钟和15分钟的数据。我们应该主要关注的是后面5分钟和15分钟的数据。数值当然是越低越好,不过具体是多低才合理呢?最大又是多大呢?我们用单核的情况来说明的话:
当 1.7 的时候,就意味着系统已经 over loaded,请求需要等待了。据运营的经验说 0.7 就开始要想想发生了什么,需要调整了。并不是 1 才是完美的状况。
至于多核的情况,用这个类比调整就好了。
Reference
Understanding Linux CPU Load - when should you be worried?