Linux負荷計算に単純な1/5/15分移動平均が使用されないのはなぜですか?

Linux負荷計算に単純な1/5/15分移動平均が使用されないのはなぜですか?

最近まで、ロード平均(上部に表示)を「実行可能」または「実行中」状態のプロセス数の最後のn個の値の移動平均として考えました。 nは移動平均の「長さ」として定義される。負荷平均を計算するアルゴリズムは5秒ごとに実行されるように見えるため、nは1分負荷平均の場合12、5分負荷平均の場合12x5、12x5になります。 5分負荷平均の場合、分負荷平均、nは12x15 15分平均負荷です。

さて、次の記事を読んだ。http://www.linuxjournal.com/article/9001。この記事はかなり古いですが、今日のLinuxカーネルにも同じアルゴリズムが実装されています。負荷平均は移動平均ではなく、名前がわからないアルゴリズムです。とにかく、私はLinuxカーネルアルゴリズムを仮想周期負荷の移動平均と比較しました。

負荷図

これは大きな違いです。

最後に、私の質問は次のとおりです。

  • 実際の移動平均と比較してこの実装を選択したのはなぜですか?実際に誰にも意味がありますか?
  • 誰もが「1分負荷平均」について話しているのは、アルゴリズムが最後の瞬間よりも多くを考慮しているからです。 (数学的には、これはリリース後のすべての測定値です。現実的に丸め誤差を考慮すると、まだ多くの測定値です。)

ベストアンサー1

この違いは、もともとBerkeley Unixにさかのぼり、カーネルが実際に移動平均を維持できないという事実から来ています。特に、過去には単に平均がなかった過去の読み値を多く維持する必要があります。保存するメモリが不足しています。代わりに使用されるアルゴリズムの利点は、カーネルが以前の計算結果を維持する必要があることです。

コンピュータの速度と対応するクロック周期を(GHzではなく)数十MHzで測定した場合、アルゴリズムは真実に近づき、その差はより大きくなった。

おすすめ記事