在Linux中,平均负载为1分钟/ 5分钟/ 15分钟。内核使用的公式实际上是指数移动平均值。
如果我们将cpuload(1)
定义为cpu load 1min的第一次计算,并将active()
定义为在系统上返回状态为“running”或“runnable”的进程数的函数,则内核用来计算 nth cpu load 1min的公式是:
cpuload(0)
为0;它是在第一次执行cpuload()
之前存储在内存中的值。
我的问题是,如何选择加权2 -5.log2(e)/ 60 ?在我看来,2 -5/60 本来会更好,因为1min将是过程数的半衰期(因为(2 -5/60 ) 12 = 1/2)。
如果我发布cpuload(n)
的显式公式以及上面的递归定义(右键单击以查看完整大小),可能会有帮助:
答案 0 :(得分:3)
考虑特定的加载样本活动(K),以及该样本对 cpuload(K + d)的贡献量,以增加 d <的值/ em>的。有一些重要的观察结果:
这些点一起意味着有一些 dmin ,对于 d&gt; dmin ,有效(K)W(d)= 0 所以 active(K)对 cpuload(K + d)没有影响。简而言之, cpuload(n)仅受 dmin 之前样本的影响。
另一种看待此问题的方法是 cpuload(n)在
定义的时间后忘记数据此最终解释给出了1分钟,5分钟和15分钟平均负载的含义。选择衰减和采样间隔,使这些负载平均值分别在1分钟,5分钟和15分钟后忘记过去。
答案 1 :(得分:0)
我猜他们希望正在运行的进程的平均生命周期是一分钟。