【Linux】負荷状況の把握(ロードアベレージ/loadaverage)

Linuxでは、CPUの負荷状況を、ロードアベレージで確認することがあります。これはサーバーの負荷を理解するための重要なツールで、CPU使用率よりも全体的なシステム負荷をより正確に理解することができます。
この記事では、ロードアベレージの概要とCPUの使用状況を確認するコマンドについて確認していきます。
スポンサーリンク

ロードアベレージの概要

ロードアベレージは、CPUが平均的にどれだけ多くのタスク(プロセス)を待っているかを示す指標です。
CPU(またはコア)は一度に一つのプロセスしか処理できません。
したがって、ロードアベレージがコア数以下であれば、全てのプロセスが遅延なく処理されています。しかし、ロードアベレージがコア数を超えると、処理が遅延し、パフォーマンスが低下します。
ロードアベレージは、1分5分15分という特定の時間枠をそれぞれ表す3つの数字のことを指します。これらの数字は、その時間枠内でCPUの処理を待っているタスク(プロセス)の平均数を示しています。
値は0に近く、CPUに対する待ち状態のタスク(プロセス)がほとんど無いことを示しています。
CPUの使用率とロードアベレージを比較すると、ロードアベレージの方が全体的なシステム負荷をより正確に理解することができます。CPUの使用率は急激に変動することがあり、その解釈を誤解することがあります。しかし、ロードアベレージは複数の時間枠での動向分析を提供してくれるため、管理者はパターンを見つけ出すことができます。
スポンサーリンク

パフォーマンス監視

ロードアベレージは、htoptopuptimeコマンドなどのツールで確認することができます。これらのコマンド出力で、画面上にロードアベレージが表示されます。
下記はuptimeコマンドの出力例です。

uptimeコマンドは、システムの稼働時間(アップタイム)、現在のユーザ数に加えて、ロードアベレージを表示します
topコマンドでも確認することができます。

topコマンドは、Linuxシステム上で実行中のプロセスに関するリアルタイムの情報を表示します。このコマンドは、CPU使用率、メモリ使用率、その他の各種情報を含むプロセスの統計に加え、ロードアベレージを表示します。
一番私が使うコマンドはhtopコマンドです。
htopコマンドは、システムプロセスとリソース利用のインタラクティブで動的なビューを表示するコマンドで、topコマンドの強化版です。
htopコマンドはインストールする必要があり、Ubuntuでは、下記コマンドを実行します。
sudo apt install htop
インストール完了後、htopと入力すると、htopのインターフェースが起動し、システムのリソース使用状況のリアルタイムの概要が表示されます。画面上部にロードアベレージが表示されます。

スポンサーリンク

ロードアベレージの値について

ロードアベレージ値の考え方

ロードアベレージはCPU数(CPUコア数)と関係があります。レストランの例を使って説明します
あるレストランが1つのキッチン(CPUコア)だけを持っているとします。このキッチンでは一度に1つの料理(タスク)しか作れません。レストランに客(プロセス)が訪れ、注文(タスク)を出すと、キッチンはその注文を順番に処理していきます。
ここでロードアベレージは、キッチンが忙しさを示す指標と考えることができます。
  • ロードアベレージが 0 の場合:キッチンは全く忙しくなく、新しい注文がすぐに処理できる状態を示しています。
  • ロードアベレージが 1 の場合:キッチンは遅延はないが、完全に忙しい状態を示しています。
  • ロードアベレージが 1 を超える場合:キッチンは過負荷状態で、注文はさらに待たされることとなり、システムのパフォーマンスに影響を及ぼす可能性があります。
もしレストランがより多くのキッチン(つまり、CPUのコア数が増える)を持つと、同時に複数の注文を処理することができます。したがって、2つのキッチンを持つレストランでは、ロードアベレージが 2 になるまで、全ての注文を効率的に処理することができます。
下記、htopコマンドを実行した結果です。私のマシンでは、CPUのコア数が8であることがわかります。

CPUのコア数は下記コマンドでも確認できます。
hirotano@ubuntu-1:~$ grep cpu.cores /proc/cpuinfo | sort -u 
cpu cores       : 8

ロードアベレージ値の確認(負荷テスト)

ここで、コア数8のうち、1つのCPUに負荷をかけます。(負荷をかけるために、stressコマンドを使用しています)負荷をかけて、10分程度経過したあとのhtopの出力です。

ロードアベレージの値で、1分平均は1を超えています。これにより、8つのCPUのうち、1つのCPU分の負荷がかかっていることが確認できます。
もちろん、2つのCPUに負荷をかけると、ロードアベレージは2に近づいていきます。負荷をかけて、10分程度経過したあとのhtopの出力です。

ロードアベレージが高い原因は、CPU使用率が高い だけでなく、例えば、ディスクのI/Oの遅延や高メモリによるスワップ発生など、いくつかの要因が考えられます。
基本的に、何かがボトルネックになり、プロセスがCPUを占有する時間が長くなると、ロードアベレージが高くなり、パフォーマンスへの影響が懸念されるようになります。

コメント