直到最近,我还认为负载平均(如顶部所示)是状态“可运行”或“正在运行”的进程数的n个最后值的移动平均值。并且n将由移动平均线的“长度”定义:由于计算平均负载的算法似乎每5秒触发一次,因此对于1分钟的平均负载,n将为12,对于5分钟的平均负载,n将为12x5,而12x15 15分钟的平均负载。
但是后来我读了这篇文章:http : //www.linuxjournal.com/article/9001。这篇文章很老,但是今天在Linux内核中实现了相同的算法。平均负载不是移动平均,而是一种我不知道名称的算法。无论如何,我在一个假想的周期性负载下对Linux内核算法和移动平均值进行了比较:
。
这是个很大的差异。
最后,我的问题是:
- 为什么选择这种实现方式而不是对任何人都具有真正意义的真实移动平均值?
- 为什么每个人都说“ 1分钟平均负载”,因为算法考虑了比最后一分钟更多的时间。(从数学上讲,是自启动以来的所有度量;实际上,考虑到舍入误差-仍然是很多度量)
5
这是指数移动平均线(EMA),也用于金融(技术分析)。优点大概是相同的-EMA可以仅根据先前的值和当前值进行计算,而与较早的值相比,最新的值具有更大的权重。在标准MA中,最旧的值对平均值的贡献与最新值相同,有时我们认为较新的值更重要。
—
jg-faustus