LPIC201 の主題200(キャパシティプランニング)で「CPU 負荷平均を表示するコマンドを全て選べ」という問題に出会って、top だけ選んで失点した。load average を表示するコマンドは top / w / uptime の 3 兄弟で、出力第 1 行が完全に同一書式。さらに load average は %CPU(CPU 使用率)とは別概念 で、I/O 待ち(D 状態)も含むため「CPU が暇でも load average が高い」ケースがある。本記事ではこの 集合 + 概念整理 を 1 本にまとめておく。

uptime / w コマンドの読み方topコマンドの読み方 と対になる記事。

load average の定義

実行可能(R)+ 不可中断スリープ(D)状態のプロセス数の移動平均

= 「CPU を欲しがっているプロセスの数」の平均値。

1 / 5 / 15 分平均

load average: 0.45, 0.52, 0.58
期間
第 1 値過去 1 分 平均
第 2 値過去 5 分 平均
第 3 値過去 15 分 平均

「現在 → 過去」の順ではなく 「直近 → 長期」の順 で並ぶ。3 値を比べれば負荷のトレンド(上がっている / 下がっている)が読める。

値の解釈(コア数 1 台基準)

load averageコア数 1 台での解釈
0.0アイドル
< 0.7余裕あり
0.7〜1.0やや負荷
1.01 コア飽和
> 1.0キュー待ちプロセス発生(過負荷)

マルチコアでの評価

load average の絶対値ではなく、コア数で割って評価するのが正しい読み方。

  • 4 コアなら load average 4.0 で飽和
  • 8 コアなら load average 8.0 で飽和

nproc でコア数確認できる。「load average 2.0 = 過負荷」と即決するのは 1 コア前提の読み方で、現代のマルチコアでは誤判定。

CPU 使用率(%CPU)との違い

指標意味単位
%CPU(top / mpstat / sar -u)CPU 時間使用率0〜100%
load averageプロセス数の移動平均数値、絶対値

両者は別概念。%CPU が低くても load average が高いケースがあるのが要点。

例: ディスクI/O で詰まっているプロセスが多数あると、それらは D 状態(uninterruptible sleep) なので CPU を使っていない(%CPU は低い)が、load average には含まれる(プロセス数のカウント対象)。「CPU が暇 + load average 高い」 = I/O ネック。

load average を表示する 3 コマンド

load average を表示するコマンド = top / w / uptime

3 兄弟の同一書式(出力第 1 行)

コマンドload average 表示表示行
top✅ ヘッダ第 1 行top - 10:00:00 up 1 day, ..., load average: 0.45, 0.52, 0.58
w✅ ヘッダ第 1 行10:00:00 up 1 day, ..., load average: 0.45, 0.52, 0.58
uptime✅ 唯一の出力10:00:00 up 1 day, ..., load average: 0.45, 0.52, 0.58

3 コマンドの第 1 行は完全同一書式(top だけプロンプト top - が前置される)。「現在時刻 + up 稼働時間 + ユーザ数 + load average」の 4 項目 を表示するコマンド集合と問われたら、ここでも top / w / uptime。詳しくは uptime / w コマンドの読み方 で扱った。

load average を表示しないコマンド

コマンド理由
vmstatcpu 欄は %、procs r/b 列はあるが load average とは別概念
iostatavg-cpu は %、load average なし
sar -u% のみ
mpstat% のみ
psプロセス毎情報、load average なし
freeメモリのみ
netstatNW のみ

vmstatprocs 欄(r b)を見て「これが load average に近い値だな」と直感するのは正しいが、「load average を表示するコマンド」の集合には入らないr / b は瞬間値で、load average は移動平均という違いがある。

例外: sar -q

sar -q は例外的に load average を表示する。

sar -q 列意味
runq-sz実行キューサイズ
plist-szプロセス数
ldavg-11 分平均
ldavg-55 分平均
ldavg-1515 分平均

ただし試験で「load average を表示するコマンド」と問われたときの 標準解答は top / w / uptime の 3 つ。sar -q は補助知識。

%CPU 系コマンドの集合との対比

問の言葉正解集合
CPU 使用率(システム全体)」vmstat / iostat / top / sar -u
CPU 使用率(プロセス毎)」ps / top
CPU 使用率(CPU 毎・コア毎)」mpstat / sar -P
負荷平均」「load averagetop / w / uptime

「使用率」と「負荷平均」は 別の集合。問題文の言葉で切り替える。

試験本番で踏みやすい罠 4 種

罠①: load average を %CPU と混同

%CPU は時間使用率(0〜100%)、load average はプロセス数の移動平均(絶対値)。単位も意味も違う。「load average 0.85」を「85% 使用率」と読むのは誤り。

罠②: I/O 待ちが load average に含まれることを忘れる

D 状態(uninterruptible sleep、通常 I/O 待ち)も load average の対象。「CPU が暇 + load average 高い」 = I/O ネック、というシナリオを見逃さない。

罠③: マルチコアで絶対値判定

load average 4.0 を「過負荷」と即決するのは 1 コア前提。4 コアなら飽和、8 コアならむしろ余裕nproc でコア数を必ず確認する。

罠④: 集合に vmstat を入れる

vmstat の cpu 欄は % 表示で load average は出さない。procs r/b は瞬間値で別概念。「load average を表示するコマンド」と問われたら 3 兄弟だけ

自己チェック

書きながら自問できるようにしておきたい項目:

  • load average の定義は何か(R + D 状態のプロセス数の移動平均)
  • load average の 3 値は何分平均か(1 / 5 / 15 分)
  • load average を表示するコマンドの集合は何か(top / w / uptime)
  • 4 コア環境で load average いくつから飽和とみなすか(4.0)
  • %CPU と load average の違いは何か(時間使用率 % vs プロセス数の絶対値)
  • 「CPU は暇なのに load average が高い」状況は何が原因か(D 状態の I/O 待ちプロセスが多い)
  • vmstat の r / b 列と load average の関係は何か(瞬間値 vs 移動平均で別概念)
  • sar -qldavg-1/5/15 は何を示すか(load average の 1/5/15 分平均)
  • 「現在時刻 / up 時間 / ユーザ数 / load average」を表示する 3 コマンドは何か(top / w / uptime)

変更履歴

  • 2026-05-06: 初版公開