CPU負荷:いつ心配し始めますか?

このメモは、Scoutのブログの記事の翻訳です。 この記事では、 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、どのネーミングシステムを使用しますか? これはどうですか:



画像 load average = 1.00





画像 load average = 0.50





画像 load average = 1.70





これが基本CPU負荷です。 「マシン」は、プロセッサー時間の間隔を使用して処理される(「ブリッジを渡る」)、またはキューに入れられます。 Unixでは、これは実行キューの長さと呼ばれます 。現在実行中のすべてのプロセスの数と、キューで待機しているプロセスの数です。

ブリッジマネージャとして、マシンプロセスが並んで待機しないようにします。 したがって、プロセッサの負荷は常に1.00未満であることが望ましいです。 負荷が1.00を超えると、トラフィックの急増が定期的に発生しますが、この値を常に超えると、これが心配になります。



それで、1.00が理想的な負荷平均であると言いますか?



そうでもない。 1.00の値の問題は、在庫が残っていないことです。 実際には、多くのシステム管理者は0.70で線を引きます。



マルチプロセッサシステムについてはどうですか? サーバーに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つの実用的なルールが得られます。



すべてをまとめる



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



解釈では、物理コアの数のみを考慮する価値があると思います。



All Articles