1.什么是Load Average?

系统负载(System Load)是系统CPU繁忙程度的度量,即有多少进程在等待被CPU调度(进程等待队列的长度)。
平均负载(Load Average)是一段时间内系统的平均负载,这个一段时间一般取1分钟、5分钟、15分钟。

2.如何查看Load Average?

top、w、uptime等命令都可以查看系统负载;

3.Load Average的3个数值各是什么意思?

我拿下面的 load average:0.00, 0.01, 0.05 来举例:

[root@elk2 ~]# uptime
 15:49:22 up 335 days, 23:28,  2 users,  load average: 0.00, 0.01, 0.05

第一位0.00:表示最近1分钟平均负载
第二位0.01:表示最近5分钟平均负载
第三位0.05:表示最近15分钟平均负载

4.Load Average值的含义

4.1单核处理器(例如:1个1核cpu)

假设我们的系统是单CPU单内核的,把它比喻成是一条单向马路,把CPU任务比作汽车。
当车不多的时候,load <1;
当车占满整个马路的时候 load=1;
当马路都站满了,而且马路外还堆满了汽车的时候,load>1;
系统平均负载load average详解_性能测试

4.2多核处理器(例如:2个cpu或一个2核的cpu)

我们经常会发现服务器Load > 1但是运行仍然不错,那是因为服务器是多核处理器(Multi-core)。
假设我们服务器一个CPU是2核,那么将意味我们拥有2条马路,我们的Load = 2时,所有马路都跑满车辆。
系统平均负载load average详解_单核_02

提示:
芯片厂商往往在一个CPU内部,包含多个CPU核心,这被称为多核CPU。
在系统负荷方面,多核CPU与多个CPU效果类似,所以考虑系统负荷的时候,必须考虑这台电脑有几个CPU、每个CPU有几个核心。然后,把系统负荷除以总的核心数,只要每个核心的负荷不超过1.0,就表明电脑正常运行。

5.怎么知道Linux服务器有多少个CPU核心呢?

  • 查看cpu信息命令:
cat /proc/cpuinfo  
  • 查看cpu总核心数命令:
grep 'model name' /proc/cpuinfo | wc -l  
或
grep -c 'model name' /proc/cpuinfo 

6.什么样的Load Average值得警惕(单核)?

Load < 0.7时:系统很闲,马路上没什么车,要考虑多部署一些服务。
0.7 < Load < 1时:系统状态不错,马路可以轻松应对。
Load == 1时:系统马上要处理不多来了,赶紧找一下原因。
Load > 1时:马路已经非常繁忙了,进入马路的每辆汽车都要无法很快的运行。

7.三种Load Average值,应该看哪个(单核)?

通常我们先看15分钟load,如果load很高,再看1分钟和5分钟负载,查看是否有下降趋势。

1分钟负载值 > 1,那么我们不用担心,但是如果15分钟负载都超过1,我们要赶紧看看发生了什么事情。所以我们要根据实际情况查看这三个值。
现在相信大家都知道,"load average"一共返回三个平均值:1分钟系统负荷、5分钟系统负荷,15分钟系统负荷;
如果只有1分钟的系统负荷大于1.0,其他两个时间段都小于1.0,这表明只是暂时现象,问题不大。
如果15分钟内,平均系统负荷大于1.0(调整CPU核心数之后),表明问题持续存在,不是暂时现象。所以,你应该主要观察"15分钟系统负荷",将它作为电脑正常运行的指标。

结合具体情况具体分析(单核):
1分钟Load>1,5分钟Load<1,15分钟Load<1:短期内繁忙,中长期空闲,初步判断是一个“抖动”,或者是“拥塞前兆”。
1分钟Load>1,5分钟Load>1,15分钟Load<1:短期内繁忙,中期内紧张,很可能是一个“拥塞的开始”。
1分钟Load>1,5分钟Load>1,15分钟Load>1:短、中、长期都繁忙,系统“正在拥塞”。
1分钟Load<1,5分钟Load>1,15分钟Load>1:短期内空闲,中、长期繁忙,不用紧张,系统“拥塞正在好转”。

8.CPU利用率与Load Average的区别?

CPU利用率,是对一个时间段内CPU使用状况的统计,通过这个指标可以看出在某一个时间段内CPU被占用的情况,如果CPU被占用时间很高,那么就需要考虑CPU是否已经处于超负荷运作,长期超负荷运作对于机器本身来说是一种损害,因此必须将CPU的利用率控制在一定的比例下,以保证机器的正常运作。

Load Average是 CPU的Load,它所包含的信息不是CPU的使用率状况,而是在一段时间内CPU正在处理以及等待CPU处理的进程数之和的统计信息,也就是CPU使用队列的长度的统计信息。

那么CPU利用率与Load Average对于性能测试的意义有什么区别呢?实际上,CPU利用率反映的是CPU被使用的情况,当CPU长期处于被使用而没有得到足够的时间休息间歇,那么对于CPU硬件来说是一种超负荷的运作,需要调整使用频度。而Load Average却从另一个角度来展现对于CPU使用状态的描述,Load Average越高说明对于CPU资源的竞争越激烈,CPU资源比较短缺。对于资源的申请和维护其实也是需要很大的成本,所以在这种高Average Load的情况下CPU资源的长期“热竞争”也是对于硬件的一种损害。

9.如何评估性能需求中合理的Load Average?

一般来说,Load Average是与机器内核数有关的。以一个单核的机器为例,load=0.5表示CPU还有一半的资源可以处理其他的线程请求,load=1表示CPU所有的资源都在处理请求,没有剩余的资源可以利用了,而load=2则表示CPU已经超负荷运作,另外还有一倍的线程正在等待处理。所以,对于单核机器来说,理想状态下,Load Average要小于1。同理,对于双核处理器来说,Load Average要小于2。结论是:多核处理器中,你的Load Average不应该高于处理器核心的总数量。

10.不同核处理器之间的load值怎样换算?

性能测试中可能遇到这样的问题,你的线上机器是8核的,但是线下性能测试机只有4核的,那么我用4核机器测试得到的load值是4,换算到8核机器上应该是多少呢?————这里原作者计算错了,应该是4*4/8=2,即核多了,load值会变小。