2009年05月20日
vmstatコマンド
用途
CPUやメモリ、ディスクの負荷状況や、使用状況を表示する
書式
vmstat [オプション] [間隔(sec) [回数] ]
主なオプション
【応援してみる】←人気ブログランキングへ
基本的な使い方
・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)]
【役に立った】←にほんブログ村 Linuxへ
この記事へのコメント
コメントを書く
この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/29251461
※ブログオーナーが承認したトラックバックのみ表示されます。
※言及リンクのないトラックバックは受信されません。
この記事へのトラックバック
http://blog.sakura.ne.jp/tb/29251461
※ブログオーナーが承認したトラックバックのみ表示されます。
※言及リンクのないトラックバックは受信されません。
この記事へのトラックバック