topコマンドでロードアベレージを見る
Linuxにおいて、システムの全体的な負荷状況を知りたい時、リアルタイムの状況を知るにはtopコマンド、ある程度の期間に渡る傾向をつかむにはsar(sysstat)の結果を確認するのが一般的だろう。
そのサーバ上で動作するアプリケーションの動作が遅いなどといったパフォーマンス劣化がある時、まず最初に見るべきがロードアベレージの値。これは「CPUの処理を待っているタスクの数」であり、ほとんど何も処理を行っていない時には0になる。
topコマンドの表示内容
top - 16:04:44 up 15 days, 21:40, 2 users, load average: 0.00, 0.00, 0.00
Tasks: 108 total, 2 running, 105 sleeping, 0 stopped, 1 zombie
Cpu(s): 0.0% us, 0.0% sy, 0.0% ni, 100.0% id, 0.0% wa, 0.0% hi, 0.0% si
Mem: 8113608k total, 8082584k used, 31024k free, 69652k buffers
Swap: 8385920k total, 352k used, 8385568k free, 6008888k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1 root 16 0 1848 552 472 S 0.0 0.0 0:01.32 init
2 root RT 0 0 0 0 S 0.0 0.0 0:17.52 migration/0
3 root 34 19 0 0 0 S 0.0 0.0 0:00.40 ksoftirqd/0
4 root RT 0 0 0 0 S 0.0 0.0 0:15.31 migration/1
5 root 34 19 0 0 0 S 0.0 0.0 0:00.32 ksoftirqd/1
6 root RT 0 0 0 0 S 0.0 0.0 0:11.21 migration/2
7 root 34 19 0 0 0 S 0.0 0.0 0:00.17 ksoftirqd/2
8 root RT 0 0 0 0 S 0.0 0.0 0:15.26 migration/3
9 root 34 19 0 0 0 S 0.0 0.0 0:00.25 ksoftirqd/3
10 root 5 -10 0 0 0 S 0.0 0.0 0:00.00 events/0
11 root 5 -10 0 0 0 S 0.0 0.0 0:00.00 events/1
12 root 5 -10 0 0 0 S 0.0 0.0 0:00.00 events/2
13 root 5 -10 0 0 0 S 0.0 0.0 0:00.00 events/3
14 root 7 -10 0 0 0 S 0.0 0.0 0:00.00 khelper
15 root 15 -10 0 0 0 S 0.0 0.0 0:00.00 kacpid
95 root 5 -10 0 0 0 S 0.0 0.0 0:00.00 kblockd/0
96 root 5 -10 0 0 0 S 0.0 0.0 0:00.00 kblockd/1
1行目の右端に表示されているのがロードアベレージの値。前述の通りCPUの処理を待っているタスクの数がロードアベレージなので、値が大きければ大きいほどCPUの処理を待っているタスクが多いということになり、それだけサーバのレスポンスが落ちることになる。ただし、単に計算を待っているだけではなく、IOの処理を待っている場合もこの値が大きくなるので、ロードアベレージが大きいことが即CPUが遅いことになるわけではない。CPUそのもの、メモリ、ディスク、それ以外、の何が原因で遅いか調査する必要がある。
なお、topでのロードアベレージの表示は、左から、1分、5分、15分間の平均値になっている。つまり、左の方が値が大きければ、直近の数分間で急に負荷が上がっていることを表す。
言わずもがなだが下半分には、CPUの使用率順に並んだプロセス一覧が表示されるので、ここからCPU負荷が高かったりメモリの使用量が多いアプリケーションが何なのかは大体つかめる。topからなんとなくのあたりをつけたあと、何がボトルネックになっているかを探すには、sarコマンドで過去のパフォーマンスデータを確認していく。