load average
などの概念を簡単かつ明確に説明してい
load average
。 この記事は初心者のLinux管理者を対象としていますが、経験豊富な管理者には役立つかもしれません。 興味を持って、猫へようこそ。
おそらく、
load average
概念をすでにご存じでしょう。
Load average
は、
top
および
uptime
コマンドの実行時に表示される3つの数値です。 これらは次のようになります。
load average: 0,35, 0,32, 0,41
最も直観的に理解できるのは、これらの3つの数値が時間間隔(1、5、15分)の漸進的な増加に伴う平均プロセッサ負荷を示しており、値が低いほど良いことです。 数値が大きいほど、サーバーの負荷が大きすぎます。 しかし、どの値が制限と見なされますか? 「悪い」値と「良い」値はどれですか? いつミドルロードタスクを心配する必要がありますか?また、他のものをドロップして問題をできるだけ迅速に解決する必要があるのはいつですか?
はじめに、
load average
意味を理解しましょう。 最も単純なケースを考えてみましょう。シングルコアプロセッサを搭載したサーバーが1台あるとします。
交通流の類推
シングルコアプロセッサは、シングルレーンロードのようなものです。 橋の上で車の動きを制御すると想像してください。 時々、あなたの橋は、車が橋の上を走るのに並んで待たなければならないほど負荷がかかっています。 川の反対側に着くまでにどれだけの時間待たなければならないかを人々に知らせたいと思います。 これを行う良い方法は、特定の時点で何台の車が並んで待っているかを示すことです。 車が列に並んでいない場合、接近してくるドライバーは、すぐに橋を渡ることができることを知るでしょう。 そうでなければ、彼らは並んで待つ必要があることを理解します。
では、Bridge Manager、どのネーミングシステムを使用しますか? これはどうですか:
- 0.00は、橋の上に車がないことを意味します。 実際、0.00〜1.00の値はキューがないことを意味します。 接近する車は待つことなく橋を使用できます。
- 1.00は、橋の上に収容可能な台数の車が存在することを意味します。 すべてはまだ順調に進んでいますが、車の流れが増えた場合、問題が発生する可能性があります。
- 1.00を超える値は、入り口にキューがあることを示します。 どれくらい大きい たとえば、2.00の値は、橋に沿って移動するのと同じ数の車がキューにあることを示します。 3.00は、ブリッジが完全に占有されており、収容できる2倍の数の車を待っていることを意味します。 などなど。

load average = 1.00

load average = 0.50

load average = 1.70
これが基本CPU負荷です。 「マシン」は、プロセッサー時間の間隔を使用して処理される(「ブリッジを渡る」)、またはキューに入れられます。 Unixでは、これは実行キューの長さと呼ばれます 。現在実行中のすべてのプロセスの数と、キューで待機しているプロセスの数です。
ブリッジマネージャとして、マシンプロセスが並んで待機しないようにします。 したがって、プロセッサの負荷は常に1.00未満であることが望ましいです。 負荷が1.00を超えると、トラフィックの急増が定期的に発生しますが、この値を常に超えると、これが心配になります。
それで、1.00が理想的な負荷平均であると言いますか?
そうでもない。 1.00の値の問題は、在庫が残っていないことです。 実際には、多くのシステム管理者は0.70で線を引きます。
- 実用ルール「監督が必要」:0.70。 平均負荷値が常に0.70を超える場合、将来の問題を回避するために、このシステムの動作の理由を調べる必要があります。
- 実用的なルール、「すぐに修理してください!」:1.00。 平均システム負荷が1.00を超える場合は、早急に原因を見つけて解消する必要があります。 そうしないと、夜中に目が覚める危険性があり、それは確かに楽しくありません。
- 実用的なルールは、「今すぐ3泊!!! SHOZANAH ?? !! ":5.00。 平均プロセッサ負荷が5.00を超えると、深刻な問題が発生します。 サーバーがフリーズしたり、実行が非常に遅くなる可能性があります。 おそらく、これは最悪の瞬間に発生します。 たとえば、夜中や会議で話をしているとき。
マルチプロセッサシステムについてはどうですか? サーバーに3.00のロードが表示され、すべて問題ありません!
4プロセッサシステムを使用していますか?
load average
が3.00であれば、すべて問題ありません。
マルチプロセッサシステムでは、負荷は利用可能なプロセッサコアの数に対して相対的に計算されます。 100%の負荷は、シングルコアマシンの場合は1.00、デュアルコアの場合は2.00、クアッドコアの場合は4.00などで示されます。
ブリッジの例えに戻って、1.00は「1つの完全にロードされたレーン」を意味します。 ブリッジにレーンが1つしかない場合、1.00はブリッジに100%の負荷がかかっていることを意味しますが、2つのレーンがある場合は50%の負荷にすぎません。
プロセッサでも同じです。 1.00は、シングルコアプロセッサの100%の負荷を意味します。 2.00-100%デュアルコアダウンロードなど
マルチコアと マルチプロセッシング
どちらが良いですか:2つのコアを持つ1つのプロセッサーまたは2つの別々のプロセッサー? パフォーマンスの観点では、これらのソリューションはどちらもほぼ同等です。 はい、およそ。 キャッシュのサイズ、プロセッサ間のプロセス切り替えなどに関連する多くのニュアンスがあります。 それにもかかわらず、システム負荷を変更するための唯一の重要な特性は、コアの数に関係なく、コアの総数です。
これにより、さらに2つの実用的なルールが得られます。
- 「コア数=最大負荷。」 マルチコアシステムでは、負荷が利用可能なコアの数を超えないようにしてください。
- 「核-それらはアフリカの核でもあります。」 コアがプロセッサ間でどのように分散されているかは問題ではありません。 2つのクアッドコア= 4つのデュアルコア= 8つのシングルコアプロセッサ。 コアの総数のみが重要です。
すべてをまとめる
uptime
を使用して負荷平均を見てみましょう。
~$ uptime 09:14:44 up 1:20, 5 users, load average: 0,35, 0,32, 0,41
クアッドコアプロセッサを搭載したシステムのインジケータを以下に示します。大きな負荷マージンがあることがわかります。
load average
が3.70を超えるまでは考えません。
どの平均を制御する必要がありますか? 1、5、15分間?
前に説明した値(1.00-すぐに修正するなど)については、5分と15分の時間間隔を考慮する必要があります。 システムの負荷が1分間の間隔で1.00を超える場合、すべて正常です。 5分または15分間隔で負荷が1.00を超える場合は、アクションを開始する必要があります(もちろん、システム内のコアの数も考慮する必要があります)。
コアの数は、負荷平均を正しく理解するために重要です。 彼をどのように認識するのですか?
cat /proc/cpuinfo
は、システム上のすべてのプロセッサーに関する情報を表示します。 コアの数を調べるには、その出力を
grep
ユーティリティに「フィード」します。
~$ cat /proc/cpuinfo | grep 'cpu cores' cpu cores : 4 cpu cores : 4 cpu cores : 4 cpu cores : 4
翻訳者メモ
上記は記事自体の翻訳です。 また、コメントから多くの興味深い情報を得ることができます。 したがって、コメンテーターの一人は、各システムに生産性に余裕を持たせ、0.70を超える負荷値を許可しないことは重要ではないと述べています。サーバーが「最大限に」動作する必要がある場合があります。医師が処方した。
PS
Habrauser dukelionは、いくつかのシナリオでは、最大のハードウェア効率を達成するために、個々のプロセスの効率を損なう
load average
値を1.00よりわずかに高く保つ価値があるというコメントに貴重なコメントを追加しました。
PPS
Habrauser enemoは、現在読み込み/書き込み操作を実行している多数のプロセスが高い
load average
を引き起こす可能性があるというコメントにコメントを追加しました。 つまり、シングル
load average > 1.00
は、システムにプロセッサをロードするための予備がないことを常に意味するわけではありません。 この指標の理由について、より慎重に検討する必要があります。 ところで、これはHabréの新しい投稿に適したトピックです:-)
PPPS
コメントのHabrauser esvafは、HyperThreadingテクノロジを搭載したプロセッサを使用する場合、
load average
値をどのように解釈するか疑問に思っています。 現時点では明確な答えは見つかりませんでした。 この記事では、1つの物理コアを備えた2つの仮想コアを備えたプロセッサは、単純なシングルコアよりも10〜30%生産性が高いと主張しています。 そのような仮定が真実である場合、
load average
解釈では、物理コアの数のみを考慮する価値があると思います。