红联Linux门户
Linux帮助

理解Linux和其他UNIX-Like系统上的平均负载

发布时间:2014-11-05 10:39:14来源:linux网站作者:mirage1993

Linux,Mac以及其他UNIX-like系统都能显示出“load average”信息。这些数字告诉你,你系统的CPU、硬盘、以及其他资源的忙碌程度。他们看起来很难理解,但是要想熟悉他们其实非常容易。

无论你是在用Linux桌面版还是服务器版,亦或是基于Linux的路由器固件、基于Linux或BSD的网络附属存储系统,甚至是Mac OS X,你随时随地都有可能看到“load average”的度量值。


负载VS平均负载

在UNIX-like系统上,包括Linux系统,系统负载是用来评估系统执行了多少工作的度量,这种度量是用数字显示出来的。一台完全处于空闲状态的计算机,其平均负载为0。每一个处于运行状态的进程,不管它是正在使用还是在等待CPU资源,都会给平均负载加1。所以如果你的系统的平均负载是5,说明有5个进程正在使用或等待CPU。

传统的UNIX系统一般仅对等待CPU的进程计数,但是Linux也把等待其他资源的进程一并计数进去。例如那些正在等待读写硬盘的进程。

就其本身而言,负载参数并不意味着什么,若一些进程在使用CPU,那么计算机在一瞬间可能负载为0,而在另一瞬间又可能负载为5,。即使你在任何给定时刻都能知道负载数目,这些数字基本上也没有什么意义。

这就是UNIX-like系统不显示当前时刻负载的原因。它们使用平均负载——在几个时间周期内,计算机负载的平均值。这些会告诉你,你的计算机到底执行了多少工作。


查看平均负载

平均负载可以显示在不同的图形以及终端工具上,包括命令行以及gnome系统监视工具。其实,查看你的平均负载最简单、最标准的方式是在终端里运行“uptime”命令。这个命令显示了你计算机的平均负载,还有计算机已经开启的时间。

uptime命令可以运行在Linux,Mac OS X或者是其他UNIX-like系统中。如果你使用的Linux或基于BSD的设备有一个web界面——例如DD-WRT路由固件或NAS系统——你将有可能在状态页面上看到平均负载信息。


理解平均负载

你第一眼看到平均负载,这数字看起来完全没有意义。下面是一个平均负载的输出示例

load average: 1.05, 0.70, 5.09

从左到右,这些数字展示给你过去1分钟、过去5分钟、过去15分钟的平均负载。换句话说,上面的输出意思是:

过去1分钟平均负载:1.05

过去5分钟平均负载:0.70

过去15分钟平均负载:5.09

省略输出时间周期是为了节省空间,只要你熟悉了时间周期,你可以迅速的扫一遍平均负载数并且理解他们意味着什么。

确切的讲,这些数字到底意味着什么

让我们使用上面的数字来理解平均负载的实际意义。假设你使用的是单处理器系统,这些数字将会告诉我们:

在过去的1分钟里:计算机平均过载5%。平均来说,.05个进程正在等待CPU。(1.05)

在过去的5分钟里:CPU 30%的时间保持空闲。(0.70)

在过去的15分钟里:计算机平均过载409%。平均来说,4.09的进程正在等待CPU。(5.09)

你的系统也许有多个CPU,或者有多核CPU。那么平均负载就会有一点不同。例如,如果你在单处理器系统上的平均负载是2,这意味着你的系统过载了100%——在整个时间周期里,当一个进程在使用CPU时,另一个进程在等待CPU。然而在有两个CPU的系统上,这正好表示资源完全使用——再整个时间周期里,两个不同的进程在使用两个不同的CPU。在四个CPU的系统上,这表明资源使用量是一半——两个进程使用两个CPU,另外两个CPU空闲。

要想理解平均负载数字的意义,你需要知道你的系统有多少个CPU,平均负载6.03意味着单CPU系统过载严重,但是在8个CPU的系统上却表示运行良好。

平均负载在服务器和嵌入式系统上非常有用,你可以扫视一遍来确定你系统的运行状态。如果过载了,你也许需要处理一下那些浪费资源的进程,多提供一些硬件资源,或者是把一些工作转移到另一个系统上。