use*_*507 29 linux kernel monitoring load algorithms
直到最近,我认为负载平均值(如顶部所示)是处于“可运行”或“正在运行”状态的进程数的最后 n 个值的移动平均值。并且 n 将由移动平均线的“长度”定义:由于计算平均负载的算法似乎每 5 秒触发一次,对于 1 分钟平均负载,n 将为 12,对于 5 分钟平均负载为 12x5 和 12x15对于 15 分钟的平均负载。
但后来我读了这篇文章:http : //www.linuxjournal.com/article/9001。这篇文章已经很老了,但今天在 Linux 内核中实现了相同的算法。负载平均值不是移动平均值,而是一种我不知道名称的算法。无论如何,我对 Linux 内核算法和虚拟周期性负载的移动平均值进行了比较:
.
这是个很大的差异。
最后我的问题是:
gee*_*aur 24
这种差异可以追溯到最初的 Berkeley Unix,源于内核实际上无法保持滚动平均值;为了做到这一点,它需要保留大量过去的读数,尤其是在过去,根本没有多余的记忆。所使用的算法的优点是所有内核需要保留的是先前计算的结果。
请记住,当计算机速度和相应的时钟周期以数十 MHz 而不是 GHz 为单位测量时,该算法更接近真实情况;这些天有更多的时间出现差异。
| 归档时间: |
|
| 查看次数: |
3644 次 |
| 最近记录: |