如果我运行uptime
,我会得到如下结果:
10:50:30 up 366 days, 23:27, 1 user, load average: 1.27, 2.06, 1.54
末尾的数字是什么意思?手册页告诉我这是“过去 1、5 和 15 分钟内系统的平均负载”。但是比例是多少?1.27 是高还是低?这取决于我的系统吗?
答案1
平均负载是衡量平均同时有多少个进程需要 CPU 关注的标准。
一般来说,如果一个进程以 100% 的运行速度运行,并且它一直保持这种状态,那么您可以预期所有值都会接近“1”。
一般来说,这是您可以获得的最高效的计算,不会因上下文切换而造成损失。
然而,在现代多任务操作系统中,有多个任务需要 CPU 关注,因此在单个进程的中等负载下,平均负载应该在 0.8 和 2 之间浮动。
如果您决定做一些疯狂的事情,例如用 构建内核make -j 60
,尽管只有一个逻辑处理器,那么平均负载将冲向 60,并且您的计算机对您来说将变得毫无用处(因上下文切换而死亡)。
还要注意的是,这个指标与有多少个核心/CPU 无关。对于双核系统,运行一个占用整个核心的进程(另一个核心处于空闲状态)会导致平均负载为 1.0。为了确定系统的负载情况,您需要知道核心数量并自行进行除法。
答案2
男人5过程:
/proc/loadavg 该文件中的前三个字段是负载平均值数字,给出了 1、5 和 15 分钟内运行队列中的作业数(状态 R)或等待磁盘 I/O 的作业数(状态 D)。它们与 uptime(1) 和其他程序给出的负载平均值数字相同。
答案3
我引用一门课程的参考资料:
平均负载是给定时间段内的负载数的平均值。它考虑了以下过程:
- 在 CPU 上积极运行。
- 视为可运行,但正在等待 CPU 可用。
- 休眠:即等待某种资源(通常是 I/O)可用。
我进一步引用解释平均负载:
平均负载使用三组不同的数字显示,如下例所示:
最后一条信息是系统的平均负载。假设我们的系统是单 CPU 系统,0.25 表示在过去一分钟内,系统平均利用率为 25%。下一个位置的 0.12 表示在过去 5 分钟内,系统平均利用率为 12%;最后一个位置的 0.15 表示在过去 15 分钟内,系统平均利用率为 15%。如果我们在第二个位置看到 1.00 的值,则意味着在过去 5 分钟内,单 CPU 系统的平均利用率为 100%;如果我们想充分利用系统,这是很好的。对于单 CPU 系统,如果值超过 1.00,则意味着系统利用率过高:需要 CPU 的进程多于可用的 CPU。
如果我们有多个 CPU,比如说一个四 CPU 系统,我们会将平均负载数除以 CPU 数量。例如,在这种情况下,1 分钟的平均负载为 4.00 意味着整个系统在最后一分钟的利用率为 100% (4.00/4)。
短期增加通常不是问题。您看到的高峰可能是活动的爆发,而不是新的水平。例如,在启动时,许多进程启动,然后活动稳定下来。如果在 5 分钟和 15 分钟的平均负载中看到高峰,则可能值得关注。
答案4
一般来说,它可以测量给定时间内的活动进程数,但在某些系统上,计算该数的指标有所不同。我发现唯一一篇解释得相当好的文章是这个。