如何选择linux加载计算中的权重?

时间:2011-03-13 18:06:54

标签: linux kernel history load algorithm

在Linux中,平均负载为1分钟/ 5分钟/ 15分钟。内核使用的公式实际上是指数移动平均值。

如果我们将cpuload(1)定义为cpu load 1min的第一次计算,并将active()定义为在系统上返回状态为“running”或“runnable”的进程数的函数,则内核用来计算 nth cpu load 1min的公式是:

enter image description here

cpuload(0)为0;它是在第一次执行cpuload()之前存储在内存中的值。

我的问题是,如何选择加权2 -5.log2(e)/ 60 ?在我看来,2 -5/60 本来会更好,因为1min将是过程数的半衰期(因为(2 -5/60 12 = 1/2)。


如果我发布cpuload(n)的显式公式以及上面的递归定义(右键单击以查看完整大小),可能会有帮助:

enter image description here

2 个答案:

答案 0 :(得分:3)

考虑特定的加载样本活动(K),以及该样本对 cpuload(K + d)的贡献量,以增加 d <的值/ em>的。有一些重要的观察结果:

  • 激活(K)乘以一些权重 W(d)以确定其对 cpuload(K + d)的贡献。< / LI>
  • W(d)总是少于一个。
  • W(d)随着 d 的增加呈指数下降。
  • 计算机算术具有有限的精度。

这些点一起意味着有一些 dmin ,对于 d&gt; dmin 有效(K)W(d)= 0 所以 active(K) cpuload(K + d)没有影响。简而言之, cpuload(n)仅受 dmin 之前样本的影响。

另一种看待此问题的方法是 cpuload(n)

定义的时间后忘记数据
  • 衰减指数,定义 dmin
  • 采样频率。

此最终解释给出了1分钟,5分钟和15分钟平均负载的含义。选择衰减和采样间隔,使这些负载平均值分别在1分钟,5分钟和15分钟后忘记过去。

答案 1 :(得分:0)

我猜他们希望正在运行的进程的平均生命周期是一分钟。