vmstat

vmstat は、CPU・メモリ・I/Oの利用状況を調べるのに用いるコマンド。

実行例

$ vmstat 1 5
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa
 0  0    864  45868  11164 1021700    0    0     8    36   66  144  4  1 95  0
 0  0    864  45372  11164 1022112    0    0     0     8  204  639  1  1 98  0
 0  0    864  45372  11164 1022340    0    0     0     0  198  605  2  0 98  0
 1  0    864  45372  11164 1022412    0    0     0     0  170  586  2  1 97  0
 0  0    864  45372  11164 1022380    0    0     0     0  185  594  1  0 99  0

パラメータの意味

1行目 2行目 説明
procs r CPU割り当て中、または、割り当て可能なプロセス数
b 割り込み禁止(I/O待ちなど)をしているプロセス数
memory swapd 使用している仮想メモリサイズ(KB)
free 空きメモリサイズ(KB)
buff バッファキャッシュ(ブロックデバイス)に割り当てられたメモリサイズ(KB)
cache ページキャッシュ(ファイル)に割り当てられたメモリサイズ(KB)
swap si スワップINメモリサイズ(KB/s)
so スワップOUTメモリサイズ(KB/s)
io bi ブロックデバイスに送られたブロック数(blocks/s)
bo ブロックデバイスから読み取ったブロック数(blocks/s)
system in 1秒あたりの割り込み回数
cs 1秒あたりのコンテキストスイッチ回数
cpu us ユーザのCPU利用率(%)
sy システムのCPU利用率(%)
id CPUのアイドル率(%)
wa I/O待ちCPU利用率(%)

注目すべき箇所

1.CPUの状況

procs/r の値がCPUの数より大きい場合、実行プロセスがCPU待ちをしているということになる。CPU がどの処理で多くリソースを割いているかは、cpu/us、cpu/sy、cpu/wa の値でわかる。

2.I/Oの状況

procs/b の値が大きい場合、I/O待ちをしているプロセスが多いと言える。(通常は 0)
io/bi, io/bo の値でHDDなどの読み書きの負荷状況がわかる。

3.メモリ/スワップの状況

swap/si, swap/so が発生していると実メモリが不足していることがわかる。実メモリが不足すると仮想メモリが利用されるが、仮想メモリは低速でパフォーマンスを極端に低下させる原因になる。

4.その他

system/cs は、動作中の処理がパフォーマンスが出ているかどうかの指標になる。例えば DBの稼働状況を確認したい時に参考にしている。いくつが適正な値かは一概に言えないが、異常な状態と平常な状態では明らかに違う。