稼働するアプリケーションの性能評価を行う場合、CPU使用率、メモリ使用量などを取得する必要があります。Linuxでは、性能に関する情報を取得するコマンドが多数あり、その一つにvmstatコマンドがあります。
しかし、このvmstatコマンドは普通に「vmstat」と実行しただけでは、時刻を表示してくれません。
そこで、以下のように実行する。
vmstat -n 1 | awk ‘{print strftime(“%y/%m/%d %H:%M:%S”), $0}’
【実行結果】
1 2 3 4 5 6 7 8 |
14/11/29 15:08:54 procs -----------memory---------- ---swap-- -----io---- -system-- -----cpu------ 14/11/29 15:08:54 r b swpd free buff cache si so bi bo in cs us sy id wa st 14/11/29 15:08:54 2 0 0 887072 49148 473272 0 0 433 56 123 311 1 3 93 4 0 14/11/29 15:08:55 1 0 0 886948 49148 473272 0 0 0 0 31 111 0 0 100 0 0 14/11/29 15:08:56 0 0 0 886932 49148 473284 0 0 0 0 56 240 0 1 99 0 0 14/11/29 15:08:57 0 0 0 886932 49148 473284 0 0 0 0 44 203 0 0 100 0 0 14/11/29 15:08:58 0 0 0 886932 49148 473284 0 0 0 0 42 146 1 0 99 0 0 14/11/29 15:08:59 0 0 0 886932 49148 473284 0 0 0 0 36 130 0 0 100 0 0 |
パフォーマンスを監視するようなツールがインストールされていて自動で性能情報を取得できる場合は問題無いのですが、そのようなツールが用意されていない環境でよく上記のコマンドによくお世話になっています。実行結果をエクセルでグラフ化して性能テストの検証結果としてお客様に提出したりもしています。
参考情報:vmstatの出力内容
・procs
r 実行待ちプロセス数
b スリープ状態にあるプロセス数
w スワップアウトされているが、実行可能なプロセス数
・memory
swpd:仮想メモリ総量(kB)
free:空きメモリ(kB)
buff:バッファ用メモリ(kB)
cache:キャッシュ用メモリ(kB)
・swap
si:ディスクからスワップインされているメモリ
so:ディスクからスワップアウトされているメモリ
・io
bi:ブロックデバイスに送られたブロック
bo:ブロックデバイスから受け取ったブロック
・system
in:1秒あたりの割り込み回数
cs:1秒あたりのコンテキストスイッチの回数
・cpu
us:CPUの総時間に対するユーザ時間のパーセンテージ
sy:CPUの総時間に対するシステム時間のパーセンテージ
id:CPUの総時間に対するアイドル時間のパーセンテージ
wa:CPUの総時間に対するIO 待ち時間のパーセンテージ
st:仮想マシンから盗まれた時間