了解最高和平均负载


12

我在所有三个负载字段中都观察到某台计算机(大约9个)上的平均负载较高。我将负载理解为处于“运行”状态/当前需要CPU时间的进程数。如果机器上正在运行N个进程,那么我的推论是正确的吗?

另外,负载是否涉及进程或线程?换句话说,多线程进程会产生大于1的负载吗?


请注意(由于通常希望很快安排它们),处于“不间断”状态的任务也被视为正在运行。只是一个细节,不会改变您的问题。
mattdm 2011年

Answers:


7

平均负载通常被描述为“运行队列的平均长度”。因此,很少有消耗CPU的进程或线程可以将LA提升到1以上。如果LA少于CPU内核总数,这没有问题。但是,如果它超过CPU数量,则意味着某些线程/进程将保留在队列中,可以运行,但要等待可用的CPU。


3

用于计算平均负载的数字是处于运行或不间断状态的任务,以及在移动平均值的时间范围内完成的工作量。这些任务可以是多线程进程的一部分。由于所用算法的平滑结果,这些字段在时间上越早越模糊。

负载1等于一个CPU的工作量的100%。如果您有一个多线程应用程序,其活动线程的数量超过了可用CPU的数量,则可能只有一个进程将负载驱动到1以上。这可能是短期的高峰,并且不会反映在较长时间的平均负载视图。

同样,由于平均负载是在多核系统之前开发的,因此将负载数除以可用总核数非常重要。如果这是4插槽四核系统上的9的持续负载,那么这是16的9的负载,并不是真正的问题。


1
—我还没有看到这样一个系统,其中套接字上的多个内核以某种方式暴露给用户空间,这使得它们看起来就像是更多CPU一样。因此,在4插槽四核系统上,可以看到16个CPU。(因此,我们可以很容易地看到9的负载低于CPU的数量。)
mattdm 2011年

我知道数字是对数的,所以它们小于或大于1。我有一个系统,我看到了系统报告:平均负载:10.41、9.57、9.26。什么??为什么一个Linux系统报告平均负载:0.81、1.57、0.98,而该系统报告平均负载:10.41、9.57、9.26?所有的Unix都不同吗?
djangofan 2011年

3

请参阅kernel / sched / loadavg.c,该文件在开始时有一个很长而出色的注释,它解释了平均负载是根据可运行线程数(“运行队列”)加上不间断线程数(等待)的指数递减平均值得出的I / O或等待锁定)。

这是评论的要点,但值得全文阅读:

 * The global load average is an exponentially decaying average of
 * nr_running + nr_uninterruptible.
 *
 * Once every LOAD_FREQ:
 *     nr_active = 0;
 *     for_each_possible_cpu(cpu)
 *         nr_active += cpu_of(cpu)->nr_running +
 *                      cpu_of(cpu)->nr_uninterruptible;
 *     avenrun[n] = avenrun[0] *
 *                  exp_n + nr_active *
 *                  (1 - exp_n)

现实生活使代码有些复杂:每CPU计数器,无滴答内核,热交换CPU,缺少浮点代码,因此需要对exp(n)进行定点实现。但是,很容易看出这些都在努力忠实地实现注释中描述的方法。

您会注意到,Linux会计数线程,而不仅仅是进程,线程会回答您的问题。


0

3个平均负载类似于围绕数字1的对数函数。类似于f(x)= eX(e等于X指数)。从技术上讲,模拟平均的指数衰减函数的定点表示。它们是每个CPU可累加的,因此四核系统上的满负载可能看起来像4.00。第一个数字是最后一分钟的平均值,第二个数字是最近五分钟的平均值,第三个数字是最后15分钟的平均值。我认为应该在此处删除提及该问题的答案。


0

即时负载:正在运行或正在等待运行的任务数,或者通过其他方式,愿意运行的任务数

平均负载:以上量度,但与同一量度的先前样本呈指数平均

这两个数字都是无界的,并且通常比N大得多。

需要明确的是:Linux上的负载计数包括线程,这是毫无疑问的。您可以通过创建多个线程的单个进程来产生任意大的负载。

在这里更多

http://blog.angulosolido.pt/2015/04/linux-load-average-definitive-summary.html

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.