上位および負荷平均について


11

3つの負荷フィールドすべてで、特定のマシン(約9)の高い負荷平均を観察しています。負荷は、「実行中」/現在必要なCPU時間のプロセス数として理解しています。私のマシンでN個のプロセスが実行されている場合、N個を超える負荷を生成できないと私は考えていますか?

また、負荷はプロセスまたはスレッドに関してカウントされますか?言い換えれば、マルチスレッドプロセスは1より大きい負荷を生成できますか?


(通常はすぐにスケジュールされることが予想されるため)、「割り込み不能」状態のタスクも実行中としてカウントされます。質問を変更するものではなく、単なる詳細です。
mattdm 2011年

回答:


6

負荷平均は通常、「実行キューの平均の長さ」と呼ばれます。したがって、ほとんどのCPUを消費するプロセスまたはスレッドがLAを1より大きくする可能性があります。LAがCPUコアの総数よりも少ない場合、問題はありません。ただし、CPUの数よりも多くなる場合、これは、一部のスレッド/プロセスがキューに留まり、実行可能な状態になりますが、空きCPUを待機することを意味します。


3

負荷平均の計算に使用される数値は、実行中または中断できない状態のタスクと、移動平均のタイムスライスで実行された作業量です。これらのタスクは、マルチスレッドプロセスの一部にすることができます。使用されたアルゴリズムからの平滑化結果により、フィールドは過去にさかのぼります。

1の負荷は、1つのCPUに相当する作業の100%に相当します。使用可能なCPUの数を超えるアクティブスレッドの数を管理できたマルチスレッドアプリケーションがある場合、単一のプロセスで負荷が1を超える可能性があります。これは短期的なスパイクであり、負荷平均のより長いタイムスライスビュー。

また、マルチコアシステムが存在する前に負荷平均が開発されたため、負荷数を使用可能なコアの総数で割ることが重要です。これが4ソケットのクアッドコアシステムで9の持続負荷である場合、これは16の9負荷であり、実際には問題ではありません。


1
—ソケット上の複数のコアが、より多くのCPU以外のように見えるようにユーザー空間に公開されるシステムはまだ見ていません。つまり、4ソケットのクアッドコアシステムでは、16個のCPUが表示されています。(したがって、9の負荷がCPUの数を下回っていることがすぐにわかります。)
mattdm

私は数値が対数であることを理解しているため、1のちょうど下または上にあります。私が持っている1つのシステムで、システムがこれを報告したのを見ました:負荷平均:10.41、9.57、9.26。何??1つのLinuxシステムで負荷平均が0.81、1.57、0.98と報告されるのに、このシステムでは負荷平均が10.41、9.57、9.26と報告されるのはなぜですか。これに関してすべてのunixは同じではありませんか?
djangofan 2011年

3

実行可能なスレッドの数(「実行キュー」)の数と指数関数的に減衰する平均と中断できないスレッドの数(待機中)の平均からの負荷平均の導出を説明する、最初に長く優れたコメントがあるkernel / sched / loadavg.cを参照してください。I / Oまたはロック待ち)。

これがコメントの本質ですが、完全に読む価値があります:

 * The global load average is an exponentially decaying average of
 * nr_running + nr_uninterruptible.
 *
 * Once every LOAD_FREQ:
 *     nr_active = 0;
 *     for_each_possible_cpu(cpu)
 *         nr_active += cpu_of(cpu)->nr_running +
 *                      cpu_of(cpu)->nr_uninterruptible;
 *     avenrun[n] = avenrun[0] *
 *                  exp_n + nr_active *
 *                  (1 - exp_n)

実際の生活はコードを幾分複雑にします:CPUごとのカウンター、ティックレスカーネル、ホットスワップCPU、exp(n)の固定小数点実装を必要とする浮動小数点コードの欠如。しかし、これらすべてがコメントで説明されているメソッドを忠実に実装するために機能していることは容易に理解できます。

Linuxは、プロセスだけでなくスレッドもカウントすることに注意してください。


0

3つの負荷平均は、数値1を中心に回転する対数関数のようなものです。f(x)= eX(eはX指数)に似ています。技術的には、平均をシミュレートする指数関数的減衰関数の固定小数点表現。これらはCPUごとに追加されるため、クアッドコアシステムでの全負荷は4.00のようになります。最初の数値は過去1分間の平均、2番目は過去5分間の平均、3番目は過去15分間の平均です。私はそれを言及する答えをここに落とすべきだと思いました。


0

インスタントロード:実行中または実行待機中のタスクの数、または別の方法で実行してよいタスクの数

負荷平均:上記のメジャーですが、同じメジャーの以前のサンプルと指数的に平均化されています

これらの数値はどちらも無制限で、多くの場合Nよりもはるかに大きくなります。

明確にするために、Linuxのロードカウントにはスレッドが含まれています。多くのスレッドを作成する単一のプロセスで、任意の大きな負荷を生成できます。

詳細はこちら

http://blog.angulosolido.pt/2015/04/linux-load-average-definitive-summary.html

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.