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

linux负载计算中的权重是如何选择的?,linux,kernel,history,load,algorithm,Linux,Kernel,History,Load,Algorithm,在Linux中,平均负载为1min/5min/15min。内核使用的公式实际上是一个指数移动平均值 如果我们将cpuload(1)定义为cpu负载1min的第一次计算,将active()定义为返回系统上处于“正在运行”或“可运行”状态的进程数的函数,那么内核用于计算第n次cpu负载1min的公式为: cpuload(0)为0;它是第一次执行cpuload()之前存储在内存中的值 我的问题是,权重2-5.log2(e)/60是如何选择的?在我看来,2-5/60会更好,因为1min是进程数的半衰期

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

如果我们将
cpuload(1)
定义为cpu负载1min的第一次计算,将
active()
定义为返回系统上处于“正在运行”或“可运行”状态的进程数的函数,那么内核用于计算第n次cpu负载1min的公式为:

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

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


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


我猜他们希望一个正在运行的进程的平均寿命为一分钟。

考虑一个特定的负载样本活动(K),以及该样本对cpuload(K+d)的贡献有多大,以增加d的值。有几个关键的观察结果:

  • 活性(K)乘以某些权重W(d)以确定其对cpuload(K+d)的贡献
  • W(d)总是小于1
  • W(d)随着d的增加呈指数下降
  • 计算机算法的精度是有限的
这些点合在一起意味着存在一些dmin,对于d>dmin,有效(K)W(d)=0,因此有效(K)对cpuload(K+d)没有影响。简言之,cpuload(n)仅受dmin先前样本的影响

另一种方式是cpuload(n)在

  • 定义dmin的衰减指数,以及
  • 采样频率
该最终解释给出了1分钟、5分钟和15分钟负荷平均值的含义。选择衰减和采样间隔,以便这些平均负载分别在1、5和15分钟后忘记过去