Linuxでの平均負荷を理解する

Understanding Load Average Linux



負荷平均は、システムプロセッサで利用可能な作業量と空きCPUサイクルの測定値です。この記事では、用語を定義し、Linuxがこの値を計算する方法を示し、システム負荷を解釈する方法についての洞察を提供します。

Linuxの負荷平均に飛び込む前に、負荷を計算するさまざまな方法を調べ、CPU負荷の最も一般的な測定値であるパー​​センテージに対処する必要があります。







WindowsはLinuxとは異なる方法で負荷を計算します。また、Windowsはデスクトップで歴史的に人気があったため、Windowsの負荷の定義は一般的にほとんどのコンピューターユーザーに理解されています。ほとんどのWindowsユーザーは、タスクマネージャーのシステム負荷が0%から100%の範囲のパーセンテージで表示されていることを確認しています。



Windowsでは、これはどのくらい忙しいかを調べることによって導き出されます システムアイドルプロセス は、逆を使用してシステム負荷を表します。たとえば、アイドル状態のスレッドが99%の時間実行されている場合、WindowsのCPU負荷は1%になります。この値は理解しやすいですが、システムの実際のステータスに関する全体的な詳細はあまり提供されません。



Linuxでは、負荷平均は代わりに0.00から始まる10進数で表されます。この値は、実行を順番に待たなければならなかった過去1分間のプロセスの数として大まかに定義できます。 Windowsとは異なり、Linuxの負荷平均は即座に測定されるものではありません。負荷は、1分平均、5分平均、および15分平均の3つの値で示されます。





Linuxの平均負荷を理解する

最初は、システムのCPU負荷の現在の状態を知りたいだけの場合、この追加の詳細レイヤーは不要のように思われます。ただし、瞬時の測定ではなく、3つの期間の平均が示されるため、3つの数値を一目で確認するだけで、時間の経過に伴うシステム負荷の変化をより完全に把握できます。

負荷平均の表示は簡単です。コマンドラインでは、さまざまなコマンドを使用できます。私は単にwコマンドを使用します:



@乙女座[]# の
21:08:4338日々、43. 44 ユーザー、負荷平均:3.112.752.70

コマンドの残りの部分には、誰がログオンし、何を実行しているかが表示されますが、私たちの目的では、この情報は無関係なので、上の表示から切り取っています。

理想的なシステムでは、プロセスが別のプロセス(またはスレッド)によって保留されるべきではありませんが、 シングルプロセッサシステムでは、 これは、負荷が1.00を超えると発生します。

ここでは、シングルプロセッサシステムという言葉が非常に重要です。古いコンピュータを実行している場合を除いて、マシンにはおそらく複数のCPUコアがあります。私が使用しているマシンには、16個のコアがあります。

@乙女座[]#nproc
16

この場合、3.11の負荷平均はまったく心配していません。これは単に、3つを少し超えるプロセスを実行する準備ができており、CPUコアがそれらの実行を処理するために存在していたことを意味します。この特定のシステムでは、100%と見なされるには、負荷が16に達する必要があります。

これをパーセントベースのシステム負荷に変換するには、次のような単純なコマンドを使用できます。

/パーセント/loadavg| 切る -NS 1-4 | 捨てた 'scale = 2; (($(/`nproc`)* 100 ' | 紀元前 -NS

このコマンドシーケンスは、カットを介して1分間の平均を分離し、それをCPUコアの数で割って、コマンドライン計算機であるbcを介してエコーし、パーセンテージを導き出します。

この値は決して科学的なものではありませんが、CPU負荷の概算をパーセントで示しています。

学ぶための1分、習得するための生涯

前のセクションでは、16 CPUコアシステムでの16.0の負荷の100%の例を引用符で囲んでいます。これは、Linuxでの負荷の計算がWindowsよりも少し曖昧だからです。システム管理者は、次の点に注意する必要があります。

  • 負荷は待機中のプロセスとスレッドで表されます
  • これは瞬間的な値ではなく、平均値であり、
  • その解釈には、CPUコアの数が含まれている必要があります。
  • ディスク読み取りのようにI / O待機を過剰に膨らませる可能性があります

このため、LinuxシステムでCPU負荷を処理することは、完全に経験的な問題ではありません。たとえそうであったとしても、CPU負荷だけでは、システム全体のリソース使用率を適切に測定することはできません。そのため、経験豊富なLinux管理者は、I / O待機や、カーネルとシステム時間の割合などの他の値と合わせてCPU負荷を検討します。

I / O待機

I / O待機は、topコマンドで最も簡単に確認できます。

上のスクリーンショットでは、I / O待機値を強調表示しています。これは、CPUが入力または出力コマンドの完了を待機していた時間の割合です。これは通常、ディスクアクティビティが多いことを示しています。待機率が高いだけでは、CPUにバインドされたタスクが大幅に低下することはありませんが、他のタスクのI / Oパフォーマンスが低下し、システムの動作が遅くなります。

明らかな原因のない高いI / O待機は、ディスクに問題があることを示している可能性があります。 dmesgコマンドを使用して、エラーが発生したかどうかを確認します。

カーネルとシステム時間

上記で強調表示されている値は、ユーザーとカーネル(システム)の時間を表しています。これは、ユーザー(つまり、アプリケーションなど)とカーネル(つまり、システムデバイスとの相互作用)によるCPU時間の全体的な消費の内訳です。ユーザー時間が長いほど、プログラムによるCPU使用率が高いことを示し、カーネル時間が長いほど、システムレベルの処理が多いことを示します。

かなり平均的な負荷

負荷平均と実際のシステムパフォーマンスの関係を学習するには時間がかかりますが、やがて明確な相関関係が見られます。複雑なシステムパフォーマンスメトリックを備えているため、ハードウェアのアップグレードとプログラムリソースの使用率についてより適切な決定を下すことができます。