プロジェクト

全般

プロフィール

Linuxでパフォーマンス解析

計算機リソースの使用状況を計測

vmstat

計算機全体のCPU、メモリ、IOの使用状況をモニターするコマンド。
オプションに指定した時間間隔、回数で計測を実施します。回数を省略すると中断するまで実行し続けます。

~$ vmstat 5
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 526516   4252 659540    0    0  4803   396  940  701 41  5 53  1  0
 0  0      0 513696   4252 659560    0    0    38     0  359  377  4  0 96  0  0
 0  0      0 513792   4252 659560    0    0     0     3  221  350  0  0 100  0  0
 0  0      0 513728   4252 659560    0    0     0     0  214  344  0  0 100  0  0
  :
項目略名 内容
r 実行待ちのプロセス数
b 中断不可の待機中のプロセス数
swpd 仮想メモリ使用量(KB)。スワップしているサイズです。
free 未使用メモリ使用量(KB)。OSは空きメモリをcacheに振るので、free+cacheが空きメモリとなります。
buff バッファに使用しているメモリ量(KB)
cache キャッシュに使用しているメモリ量(KB)
si ディスクから読み出したスワップメモリ量(KB/s)
so ディスクに書き込みしたスワップメモリ量(KB/s)
bi ブロックデバイスから受け取ったブロック数(block/s)
bo ブロックデバイスに送ったブロック数(block/s)
in クロック割込みを含む割込み回数(秒間)
cs コンテクストスイッチ回数(秒間)
us 非カーネルコードの実行に費やした時間(ユーザー時間の%)
sy カーネルコードの実行に費やした時間(システム時間の%)
id 何も実行していない時間(%)
wa IO待ち時間(%)
st 仮想マシン上で実行している時にCPU割当が失われた時間(%)

コマンド実行結果のファイル保存

vmstatの実行結果をリダイレクトでファイルに保存する場合、タイムスタンプがないので、vmstatを開始した時刻を覚えておき、実行間隔からタイムスタンプを計算する方法がありますが、得てして時刻の記録を忘れます。そこで、

~$ (date & vmstat 5) >> vmstat-5.log

のように、vmstatを開始する時刻をdateコマンドでファイルにリダイレクトします。

または、vmstatの各出力行の頭にタイムスタンプを追加します。

~$ vmstat 5 | awk '{print strftime("%H:%M:%S"), $0; system("")}' > vmstat-5.log
  • awkは入力をバッファリングするので、vmstat を Ctrl-Cで中断するとバッファサイズ内に残って出力されていない情報が消えてしまいます。そこで、各行を出力する都度に system("") でバッファをフラッシュさせます。

top

プロセスごとのCPU、メモリ使用状況を使用率の大きい順にソートして表示します。

項目略名 内容
VIRT プロセスに割当(予約)したメモリ量
RES 物理メモリを使っている量
SHR RESのうち、共有メモリに使われている量
%CPU CPUの処理のうちそのプロセスに使った割合
%MEM 物理メモリの容量のうちそのプロセスのRESの割合


約1年前に更新