我试图理解一个linux服务器上的系统负载:
$uptime 15:01:45 up 52 days, 19:48, 1 user, load average: 0.63, 1.76, 4.81
负荷总是1分钟<5分钟< 15分钟。
Distributor ID: RedHatEnterpriseServer Release: 5.8
我每秒钟捕捉uptime
大约30分钟,总是报告1分钟平均低于5分钟15分钟。根据我对系统负载值的理解,这是不可能的。似乎有更高的数字报告了一些附加常数。
这怎么可能,这意味着什么?
发布于 2016-11-22 13:48:41
我认为你可能误解了“平均负载”是如何工作的。首先,它不是系统“加载”,而是系统“负载平均”--由于所有的数字都是平均值(意味着跨越多个记录和时间),这是一个很大的差异!另外,非常重要的是,您知道系统上CPU的数量,因为这将影响如何解释数字(在当今时代,注意核心)。
另外,请注意,您不能使用这些数字作为"CPU使用量“,就像您从windows等了解到的那样。它们是平均值,基于进程等待时间和cpu使用情况。
正如您自己所写的,负载平均值可以描述如下。
(请注意,我不使用>或<,因为我认为它可能有误导性。)
我运行了命令“压力-c 1”来使1CPU(核心)最大,并让它运行5、10、30分钟(cpu的使用时间可能会更少,因此数字会有轻微的偏差)。
这就是我的负载平均值。
5 MIN - load average: 1,00, 0,71, 0,37
10 MIN - load average: 1,02, 0,94, 0,59
30 MIN - load average: 1,01, 1,03, 0,98
那么这些数字意味着什么呢?如果它在一个双CPU(核心)系统上,你可以使用第一个数字1,00,这告诉我们系统使用了50%,因为我们知道它有两个CPU,因此如果这个数字是2,00,那么我们在使用系统100%时,十进制数告诉你等待进程的过载。
诸若此类。让我们进行相同的运行,但两个CPU都处于加载状态,并添加一个额外的子程序试图占用资源。在这种情况下,我试图使用我的系统所能处理的更多的东西。
再过3分钟,我的负载就已经在向我尖叫了!现在,我不会让它运行更长的时间,因为它是一个小型路由器,可以更容易地测试负载,因此它变得很热:)
3 MIN - load average: 2,48, 0,99, 0,74
现在让我们来看看平均1分钟的2,48分钟。这能告诉我们什么?我们使用248%的系统,我们知道我们可以使用两个CPU (200%),所以系统超载了48%,这意味着0.48进程平均等待CPU使用时间,因为两个CPU的进程是完全繁忙的。但如果这是一个4 CPU(核心)系统,那么数字将是相当好的,因为我们只使用了50%的系统再次。
我希望这一切都是有意义的,而且在内核如何解释平均负载方面,也可以有一些小的差异,但不像您想象的那样。这就是内核如何看待进程所处的状态。比如cpu_idle,cpu_waiting,io_waiting等等。所以NFS可以让进程等待io等等,我不认为RedHat做什么特别的事情。
编辑:如果您想查看整个系统上的CPU使用情况,您可能需要使用"top“命令。顶部还显示了负载平均值。
https://serverfault.com/questions/743156
复制相似问题