vmstatコマンド

vmstatコマンド

用途

CPUやメモリ、ディスクの負荷状況や、使用状況を表示する

書式

vmstat [オプション] [間隔(sec) [回数] ]

主なオプション

  • -Vvmstatコマンドのバージョンを表示する
  • -nヘッダー(項目)を一度だけ表示する
  • -aメモリのアクティブ/非アクティブ情報について表示する
  • -dディスクに関する統計情報を表示する
  • -p指定したパーティションの統計情報を表示する
  • -s各項目の情報を詳しく表示する
  • -m各項目の情報の一覧表示(?)
  • -S各項目の情報を指定した単位で表示する

基本的な使い方

・1秒間隔で10回表示する
[devi@syslog ~]$ vmstat 1 10
procs ———–memory———- —swap– —–io—- –system– —–cpu——
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 0 128 61548 297348 762376 0 0 0 9 2 2 1 0 98 0 0
0 0 128 61548 297348 762376 0 0 0 180 1024 56 0 0 100 0 0
0 0 128 61548 297348 762380 0 0 0 0 1022 29 0 0 100 0 0
0 0 128 61548 297348 762380 0 0 0 0 1006 9 0 0 100 0 0
0 0 128 61548 297348 762380 0 0 0 0 1022 29 0 0 100 0 0
0 0 128 61548 297348 762380 0 0 0 12 1006 18 0 0 100 0 0
0 0 128 61548 297348 762380 0 0 0 12 1024 41 0 0 100 0 0
0 0 128 61548 297348 762380 0 0 0 0 1003 10 0 0 100 0 0
0 0 128 61548 297348 762380 0 0 0 0 1021 26 0 0 100 0 0
0 0 128 61548 297348 762380 0 0 0 0 1003 12 0 0 100 0 0
[devi@syslog ~]$
・メモリのアクティブ/非アクティブについて表示
[devi@syslog ~]$ vmstat -a 1 4
procs ———–memory———- —swap– —–io—- –system– —–cpu——
r b swpd free inact active si so bi bo in cs us sy id wa st
0 0 128 60804 525880 621336 0 0 0 9 2 2 1 0 98 0 0
0 0 128 60804 525880 621336 0 0 0 0 1004 17 1 0 99 0 0
0 0 128 60804 525880 621336 0 0 0 0 1022 27 0 0 100 0 0
0 0 128 60804 525880 621336 0 0 0 0 1004 9 0 0 100 0 0
[devi@syslog ~]
・表示の単位をメガ(M)で表示する(デフォルトK)
[devi@syslog ~]$ vmstat -S M 1 4
procs ———–memory———- —swap– —–io—- –system– —–cpu——
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 0 0 59 290 744 0 0 0 9 2 2 1 0 98 0 0
0 0 0 59 290 744 0 0 0 28 1024 43 0 1 99 0 0
0 0 0 59 290 744 0 0 0 16 1008 14 0 0 100 0 0
0 0 0 59 290 744 0 0 0 0 1022 31 0 0 100 0 0
[devi@syslog ~]$
・ディスク情報の表示
[devi@syslog ~]$ vmstat -d
disk- ————reads———— ————writes———– —–IO——
total merged sectors ms total merged sectors ms cur sec
ram0 0 0 0 0 0 0 0 0 0 0
ram1 0 0 0 0 0 0 0 0 0 0
ram2 0 0 0 0 0 0 0 0 0 0
ram3 0 0 0 0 0 0 0 0 0 0
ram4 0 0 0 0 0 0 0 0 0 0
ram5 0 0 0 0 0 0 0 0 0 0
ram6 0 0 0 0 0 0 0 0 0 0
ram7 0 0 0 0 0 0 0 0 0 0
ram8 0 0 0 0 0 0 0 0 0 0
ram9 0 0 0 0 0 0 0 0 0 0
ram10 0 0 0 0 0 0 0 0 0 0
ram11 0 0 0 0 0 0 0 0 0 0
ram12 0 0 0 0 0 0 0 0 0 0
ram13 0 0 0 0 0 0 0 0 0 0
ram14 0 0 0 0 0 0 0 0 0 0
ram15 0 0 0 0 0 0 0 0 0 0
hda 97405 25645 2797562 2028942 15116941 18857906 271779542 82578965 0 9181
hdc 0 0 0 0 0 0 0 0 0 0
md0 0 0 0 0 0 0 0 0 0 0
[devi@syslog ~]$

vmstatコマンド解説

vmstatコマンドのよく使う使い方で得られる表示についての解説です。
詳細の確認については、「man vmstat」で。

各項目の説明

procs ———–memory———- —swap– —–io—- –system– —–cpu——
r b swpd free buff cache si so bi bo in cs us sy id wa st

[procs]
r : 実行待ち状態のプロセスの数
b : 割り込み不可能なスリープ状態にあるプロセスの数

[memory]
swpd : 現在の仮想メモリの量
free : 現在空いている実メモリの量
buff : バッファに使われている実メモリの量
cache : キャッシュとして使われている実メモリの量
inact : アクティブになっていない実メモリの量(-a)
active: アクティブな実メモリの量(-a)

[swap]
si : ディスクからスワップインしているメモリ量(KB/s)
so : ディスクにスワップしているメモリ量(KB/s)

[io]
bi : ブロックデバイスから受け取ったブロック数 (ブロック/s)
bo : ブロックデバイスに送られたブロック数 (ブロック/s)

[system]
in : 一秒あたりの割り込み回数
cs : 一秒あたりのコンテキストスイッチ回数

[cpu]
us : 実行に使用したユーザ時間
sy : カーネルコードの実行に使用したシステム時間
id : アイドル時間
wa : IO の待ち時間
st : 仮想マシンから盗まれた時間(何のこっちゃい。)不明です

負荷状況の見方と考え方

・通常時
[devi@syslog ~]$ vmstat 1
procs ———–memory———- —swap– —–io—- –system– —–cpu——
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 0 128 59232 297844 763896 0 0 0 9 2 2 1 0 98 0 0
0 0 128 59232 297844 763896 0 0 0 0 1005 13 0 0 100 0 0
0 0 128 59232 297844 763896 0 0 0 0 1021 26 0 0 100 0 0
0 0 128 59232 297844 763896 0 0 0 0 1004 9 0 0 100 0 0
[devi@syslog ~]$
・負荷時(PHPコンパイルで検証)
[devi@syslog ~]$ vmstat 1
procs ———–memory———- —swap– —–io—- –system– —–cpu——
r b swpd free buff cache si so bi bo in cs us sy id wa st
2 0 128 23788 279960 808312 0 0 0 9 3 2 1 0 98 0 0
2 0 128 27228 279924 805084 0 0 728 0 1089 316 62 17 0 21 0
4 0 128 26856 279932 805076 0 0 16 276 1038 637 54 41 0 5 0
1 0 128 25368 279932 805116 0 0 0 112 1113 498 67 33 0 0 0
2 0 128 27168 279936 805192 0 0 56 0 1034 412 66 34 0 0 0
0 1 128 25868 279936 805232 0 0 52 0 1045 393 65 30 0 5 0
1 0 128 26496 279940 805468 0 0 244 0 1091 927 34 51 0 15 0
2 0 128 26752 279940 805700 0 0 236 0 1115 1055 34 56 0 10 0
[devi@syslog ~]$

[procs]に注目!

「r」は実行待ち状態のプロセスの数を表しているものです。
ちょうど、コンビニやスーパーのレジに並ぶ様子が該当しますね。

上記の検証マシンでは、「4」という数字が得られましたが、
この状態が続くようであれば、サーバ利用者は「重い」と感じるかもしれません。

おおよそですが、この値がCPUの数よりも常に多いようであれば、
CPUの処理能力不足
が考えられます。

「b」は、何らかの理由により、処理をブロックされているプロセス数を表しています。
多くの場合は、ディスクやネットワークへの入出力を待っている状態のようです。
CPUの処理速度に比べ、他のデバイスはアクセスに時間がかかることから、このよう状態が発生します。
入出力処理が終わると、実行待ち状態[r」へ移ります。

この値が常にあるようであれば、ディスクへの入出力状態[io項目]や、
プログラムの入出力の状況を、確認してみると良いかもしれません。

[memory]の見方

仮想メモリの使用状況を表す「swpd」ですが、
放っておいても一定値になるようですので、
[swap項目]の、「si」や「so」が増えていなければ気にする必要もありません。

「free」は純粋に利用していな実メモリ量、
「cache」は過去に呼び出した情報の格納用に利用している実メモリ量です。

一見すると「free」の値が少なく、もうすぐメモリ不足?かとも思ってしまいますが、
実際には「free」と[cache」の合計が、自由に使える実メモリの総量となります。

vmstatコマンドは、「サーバが重い」と苦情が来たときや、
日々の運用で定期的に発行する(問題が起こった時にログを確認)コマンドですので、
簡単に見方を抑えておくと、とても便利なコマンドです。

さらに詳しく知りたいなら、下記のサイトが参考になります。
vmstatの見方と考え方 [PC(OS/Linux・CentOS・Vine)]

タグ

2009年5月20日 | コメントは受け付けていません。 | トラックバックURL |

カテゴリー:システム管理系コマンド

トラックバック&コメント

コメントは受け付けていません。