Linux システムを管理する上で基本的なスキルは、そのパフォーマンスを理解することです。簡単な健全性チェックに最も役立つコマンドの 1 つが uptime です。
user@host:~$ uptime
17:23:35 up 1 day, 5:59, 2 users, load average: 0.00, 0.02, 0.05
以前にuptimeを見たことがありますが、ここではLinux CPU 監視に不可欠なload average(ロードアベレージ)フィールドに焦点を当てます。
ロードアベレージの理解
ロードアベレージは、システム上の CPU 負荷のスナップショットを提供します。3 つの数値は、過去 1 分、5 分、15 分間における平均 CPU 負荷を表します。しかし、CPU 負荷とは何でしょうか?それは、実行キュー(run-queue)内のプロセスの平均数、つまり CPU によってアクティブに実行されているか、順番を待っているプロセスの数です。このメトリックは、プロセス利用率と全体的なシステムパフォーマンスの重要な指標となります。
交通渋滞のアナロジー
シングルコア CPU を単一車線の高速道路だと想像してください。
- 高速道路が満車で車の流れが一定の場合、トラフィックは 100% であり、ロードアベレージ 1.0 に相当します。
- 大規模な渋滞が発生し、車の列が高速道路の容量の 2 倍にまで伸びている場合、負荷は 200%、つまりロードアベレージ 2.0 になります。
- 高速道路が半分空いている場合、負荷は 0.5 です。
- 理想的には、深夜 2 時で交通量がない高速道路のように、低いロードアベレージを望みます。
このアナロジーでは、車が CPU によって処理されるのを待っているプロセスに相当します。
最新システムでのロードアベレージの解釈
ロードアベレージが 1.0 であっても、必ずしもシステムが苦戦しているわけではありません。ほとんどの最新のコンピューターはマルチコアプロセッサを搭載しています。クアッドコア(4 コア)プロセッサを使用している場合、ロードアベレージが 1.0 であることは、総 CPU 容量のわずか 25% しか使用されていないことを意味します。各コアは、高速道路の追加レーンのように機能します。
ロードアベレージを適切に解釈するには、CPU コア数を考慮する必要があります。システム上のコア数は、コマンドcat /proc/cpuinfoで確認できます。
良好なシステムパフォーマンスの一般的なルールは、ロードアベレージをコア数未満に保つことです。マシンのロードアベレージがコア数を一貫して上回っていることが判明した場合、暴走プロセスや不十分なハードウェアリソースなど、パフォーマンスのボトルネックを示している可能性があります。