如果我跑步uptime
,我会得到如下信息:
10:50:30 up 366 days, 23:27, 1 user, load average: 1.27, 2.06, 1.54
这些数字到底意味着什么?手册页告诉我这是“最近1、5和15分钟内系统的平均负载”。但是规模是多少?是1.27高吗?低?是否取决于我的系统?
如果我跑步uptime
,我会得到如下信息:
10:50:30 up 366 days, 23:27, 1 user, load average: 1.27, 2.06, 1.54
这些数字到底意味着什么?手册页告诉我这是“最近1、5和15分钟内系统的平均负载”。但是规模是多少?是1.27高吗?低?是否取决于我的系统?
Answers:
平均负载是衡量平均有多少个进程的指标,同时需要CPU的注意。
通常,如果您有一个进程以100%的速度运行,并且在所有永恒的过程中都一样,那么您可以期望所有值都接近“ 1”。
通常,这是您获得的尽可能高效的计算,不会因上下文切换而造成任何损失。
但是,在现代的多任务OS上,有很多事情需要CPU的注意,因此在单个进程有中等负载的情况下,平均负载应在0.8到2之间浮动。
如果您决定做一些疯狂的事情,例如使用来构建内核make -j 60
,尽管它只有一个逻辑处理器,那么平均负载将接近60,并且您的计算机将变得无用(死于上下文切换)。
还要注意的是,该指标与有多少个内核/ CPU无关。对于两核系统,运行一个消耗整个核心的进程(使另一个空闲)将导致平均负载为1.0。为了确定系统的负载,您需要知道核心数量并自行进行划分。
通常,它测量给定时间的活动进程数,但是在某些系统上,用于计算活动进程的度量标准有所不同。我发现的唯一一篇可以很好地解释这一点的文章是这篇。
我从课程参考中引用:
平均负载是给定时间段内负载数量的平均值。它考虑了以下过程:
- 主动在CPU上运行。
- 认为是可运行的,但是正在等待CPU可用。
- 睡眠:即,等待某种资源(通常是I / O)可用。
我进一步解释了平均负载:
使用三组不同的数字显示平均负载,如以下示例所示:
最后一条信息是系统的平均负载。假设我们的系统是单CPU系统,则0.25表示在过去一分钟中,该系统平均已使用25%。下一个位置0.12表示在过去5分钟内,该系统平均已使用12%;而最终排名为0.15,则表示在过去15分钟内,该系统平均已使用了15%。如果我们在第二个位置看到值1.00,则意味着单CPU系统在过去5分钟内的平均利用率为100%;如果我们要充分使用系统,这很好。对于单CPU系统,该值大于1.00表示该系统被过度利用:需要CPU的进程多于可用CPU。
如果我们有多个CPU(例如四CPU系统),则可以将平均负载数除以CPU数。例如,在这种情况下,看到1分钟的平均负载为4.00,则表示整个系统在最后一分钟内使用了100%(4.00 / 4)。
短期增加通常不是问题。您看到的高峰可能是一阵活跃,而不是一个新的水平。例如,在启动时,许多进程启动,然后活动稳定下来。如果在5分钟和15分钟的平均负载中看到一个高峰值,则可能令人担忧。