Linux系统中的load average(平均负载/运行队列)

2023-06-25,,

1、load average 的含义

系统负载(System Load)是系统CPU繁忙程度的度量,即有多少进程在等待被CPU调度(进程等待队列的长度)

linux系统中的Load对当前CPU工作量的度量。简单的说是进程队列的长度。Load Average 就是一段时间 (1 分钟、5分钟、15分钟) 内系统的平均 Load 。

2、如何查看Load Average?

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

上边0.18、0.19、0.70表示

第一位0.18:表示最近1分钟平均负载
第二位0.19:表示最近5分钟平均负载
第三位0.70:表示最近15分钟平均负载

注:linux系统是5秒钟进行一次Load采样

这些工具中的平均负载是从 /proc/loadavg 文件中读取的,也可以直接使用 cat 命令查看:

$ cat /proc/loadavg

2.48 1.69 1.42 5/889 10570

三、对负载的理解

把CPU比喻成一条(单核)马路,进程任务比喻成马路上跑着的汽车,Load则表示马路的繁忙程度:

Load小于1:表示完全不堵车,汽车在马路上跑得游刃有余:
[ Load<1,单核]
Load等于1:马路已经没有额外的资源跑更多的汽车了:
[Load==1,单核]
Load大于1:汽车都堵着等待进入马路:
[Load>1,单核]
如果有两个CPU,则表示有两条马路,此时即使Load大于1也不代表有汽车在等待:
[Load==2,双核,没有等待]

需要注意的是,load = 1 不代表CPU无法工作了,这只是表示满负荷运行,例如实际生活中的例子,车道占满了,但是车流还能有序前进。

注:查看cpu 核数命令:

grep 'model name' /proc/cpuinfo | wc -l

四、什么样的Load值得警惕(单核)?

Load < 0.7时:系统很闲,马路上没什么车,要考虑多部署一些服务
0.7 < Load < 1时:系统状态不错,马路可以轻松应对
Load == 1时:系统马上要处理不多来了,赶紧找一下原因
Load > 5时:马路已经非常繁忙了,进入马路的每辆汽车都要无法很快的运行
 
一般的进程需要消耗CPU、内存、磁盘I/O、网络I/O等资源,在这种情况下,平均负载就不是单独指的CPU使用情况。即内存、磁盘、网络等因素也可以影响系统的平均负载值。 
在单核处理器中,平均负载值为1或者小于1的时候,系统处理进程会非常轻松,即负载很低。当达到3的时候,就会显得很忙,达到5或者8的时候就不能很好的处理进程了(其中5和8目前还是个争议的阈值,为了保守起见,建议选择低的)
 

五. 三种Load值,应该看哪个

通常我们先看15分钟load,如果load很高,再看1分钟和5分钟负载,查看是否有下降趋势。
1分钟负载值 > 1,那么我们不用担心,但是如果15分钟负载都超过1,我们要赶紧看看发生了什么事情。所以我们要根据实际情况查看这三个值。

六、理解系统平均负载和 CPU 核心数的关系

考虑了 CPU 核心数的影响,才能解释系统负载。

多处理器 Vs 多核处理器 

多处理器 – 一个计算机系统中集成两个或多个物理 CPU

多核处理器 – 单个物理 CPU 有两个或多个单独的核并行工作(也叫处理单元)。双核意味着有两个处理单元,4 核有 4 个处理单元,以此类推。

此外,Intel 引入了超线程技术用来提高并行计算能力。

通过超线程技术,在操作系统中,单个物理 CPU 表现的和两个逻辑 CPU 一样。(实际在硬件上只有一个 CPU)。

注意,单个 CPU 核同一时间只能执行一个任务,于是产生了多 CPU/处理器、多核 CPU,以及多线程技术。

多 CPU 时,多个程序可以同时执行。如今的 Intel CPU 使用了多核心和超线程技术。

可以使用 nproc 或 lscpu 命令查看系统中的处理器单元数量。

为了进一步理解系统负载,需要做一些假设。假设系统负载如下:

23:16:49 up  10:49,  5 user,  load average: 1.00, 0.40, 3.35

 

在单核系统中意味着:

CPU 被充分利用(100%);最近的 1 分钟有 1 个进程在运行。

CPU 有 60% 处于空闲状态;在最近的 5 分钟没有进程等待 CPU 时间。

CPU 平均过载了 235%;最近的 15 分钟平均有 2.35 个进程在等待 CPU 时间。

在双核系统中意味着:

有一个 CPU 处于完全空闲状态,另一个 CPU 被使用;最近的 1 分钟没有进程等待 CPU 时间。

CPU 平均 160% 处于空闲状态;最近的 5 分钟没有进程等待 CPU 时间。

CPU 平均过载了 135%;最近的 15 分钟有 1.35 个进程等待 CPU 时间。

总而言之,如果你是系统管理员,你应该关注高的平均负载。平均负载高于 CPU 核心数意味着需要增加 CPU,反之则意味着 CPU 未被充分利用。纵观,作为测试人员,知道这些对你无论是工作还是面试都有很大的帮助;

 

备注:一个系统监控过程中的运行队列情况

Linux系统中的load average(平均负载/运行队列)的相关教程结束。

《Linux系统中的load average(平均负载/运行队列).doc》

下载本文的Word格式文档,以方便收藏与打印。