「Linux」- 平均负载(Load Average)

  CREATE BY JENKINSBOT
原文链接:「Linux」- 平均负载(Load Average)
文章分类:「02.Understanding_Operating_Systems:Processes_on_Linux:Load_Average」
文章标识:「4fe732de」

相关文章及学习资料

Linux Load Averages: Solving the Mystery

理解 系统负载 与 平均负载 的含义

当使用 top 或 uptime 命令时,都会输出 load average 字段:

# uptime 
 23:47:36 up 5 days,  2:13,  5 users,  load average: 0.99, 0.66, 0.55

# top
top - 23:47:53 up 5 days,  2:13,  5 users,  load average: 1.01, 0.67, 0.55
...

分别代表系统在前一分钟,五分钟,十五分钟的平均负载。

什么是系统负载?

系统负载展示系统的处理器、磁盘、其他资源的繁忙程度。系统负载是操作系统执行计算工作的度量,以数字形式显示。如果计算机完全空闲,则系统负载为 0。每个等待处理器资源或正在使用处理器资源的进程都会向系统负载加 1 。如果系统负载为 5,则表示由五个进程在使用处理器或者等待处理器资源。(注意,UNIX 系统通常只计算等待处理器的进程,而 Linux 还会计算其他的资源(比如等待磁盘的读写)

系统负载通常没有太大的含义:因为它在这一秒为零,那么下一秒可能为五,因为那时可能有五个进程在等待资源。这也是为什么:在 UNIX 中,显示的是某段时间内的平均负载,而不是系统负载。

什么是平均负载?

平均负载则是系统负载在一段时间内的平均值。

在几乎所有类 Unix 系统中,平均负载只计算运行或等待状态的进程,所以被称之为“CPU Load Average”。

在 Linux 中,技术上认为平均负载是内核执行队列中标记为 正在运行的进程(p->state = TASK_RUNNING)不可中断的进程(p->state = TASK_UNINTERRUPTABLE) 的平均值,所以被称之为“System Load Average”。

如何查看平均负载?

使用uptime命令来查看负载。

也可以通过文件系统查看:watch -n 1 cat /proc/loadavg

理解平均负载输出

平均负载一般是三个值,形如:load average: 0.99, 0.66, 0.55

从左到又分别表示:当前系统在一分钟,五分钟,十五分钟内的平均负载。

理解平均负载具体含义

如果处理器是单核的

我们以 load average: 1.05, 0.70, 5.09 为例。假如你的处理器是单核的:

在过去的一分钟:机器平均超载0.05个,就是说平均有0.05个进程在等待处理器资源。

在过去的五分钟:机器平均负载0.70个,有0.03的时间处理器处于空闲。

在过去的一刻钟:机器平均超载4.09个,平均有4.09个进程在等待处理器资源。

注意,如果没有在使用,则为0%;如果资源满载,则为100%;那么超出的部分,就是在等待资源的进程。

另外,在Linux里不光计算了处理器等待,还包含了其他资源的等待。

如果处理器是多核的

如果平均负载为 2,则表示:

在单核处理器上,那肯定是超载的:一个进程为使用处理器资源,而另外一个进程在等待处理器资源;

在双核处理器上,那正好是满载的:两个进程都在使用处理器资源,并且两个进程都在使用不同的处理器资源;

在四核处理器上,那存在着空闲的:两个进程都在使用处理器资源,并且两个进程都在使用不同的处理器资源,并且还有两个处理器的空闲的。

所以,如果要正确解读平均负载的含义,需要知道处理器的核心数,这可以使用lscpu / nproc命令。对于平均负载为6.05的计算机,在六核主机上是超载的,而在八核主机上则是正常的。

总结

因此,平均负载还是很有用的,可以通过它快速了解到系统当前的执行情况。

相关链接

如果想要了解平均负载的更多细节,可以查看下面的文章:

Understanding Linux 处理器 Load – when should you be worried?

参考文献




Backlinks: 00.INDEX