vmstatをつかってみる
はじめに
vmstat
というコマンドは名前は聞いたことあったのですが、あんまり使ったことなかったのでちゃんと使えるようになりたいと思ってちょっとまとめてみようかと思います。
vmstatとは
vmstatコマンドはLinuxなどのOSでプロセス、メモリー、ページング、ブロックIO、ディスク、CPUアクティビティなどの統計情報を取得すためのコマンドです。
最初の出力では、PCがブートされてからの平均値の統計情報が出力され、続く出力はコマンドで指定される期間での情報を出力します。
使い方
動作環境
今回、コマンドを動作させる環境は以下の通り
$ uname -srvmpio Linux 5.4.0-65-generic #73-Ubuntu SMP Mon Jan 18 17:25:17 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux $ lsb_release -a LSB Version: core-11.1.0ubuntu2-noarch:security-11.1.0ubuntu2-noarch Distributor ID: Ubuntu Description: Ubuntu 20.04.2 LTS Release: 20.04
基本的な構文
基本的には以下の構文を取ります。
$ vmstat [options] [delay [count]]
ここで、delay
では情報の出力の間隔、count
では
例えば、以下のような実行では、1秒の間隔での出力を4回繰り返します。
$ vmstat 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 22358960 1103068 5680548 0 0 11 23 99 10 15 4 80 0 0 0 0 0 22361072 1103068 5678012 0 0 0 0 545 1324 1 1 98 0 0 0 0 0 22351748 1103076 5675704 0 0 0 48 799 2035 3 1 95 1 0 1 0 0 22365932 1103084 5663560 0 0 0 48 1060 2647 4 1 94 0 0
ここで、 delay
とcount
両方、もしくはcount
のみ省略することが可能で、両方を省略した場合、最後に起動してからの平均値を一回のみ出力し、count
を省略した場合は
# 起動時からの平均を一回のみ出力 $ vmstat 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 23076780 1106336 5189788 0 0 10 23 100 18 15 4 81 0 0 # 1秒間に1回停止するまで情報を出力 $ 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 0 23088852 1106396 5181076 0 0 10 23 100 19 15 4 81 0 0 4 0 0 23061588 1106396 5196904 0 0 0 0 751 1929 3 1 96 0 0 0 0 0 23072540 1106396 5202800 0 0 0 64 2225 5278 7 1 92 0 0 1 0 0 23076960 1106396 5200228 0 0 0 0 1398 2723 3 0 97 0 0 0 0 0 23077212 1106420 5200048 0 0 0 792 675 1625 2 1 98 0 0 0 0 0 23094096 1106420 5193604 0 0 0 0 590 1443 2 0 98 0 0 1 0 0 23098632 1106420 5193620 0 0 0 0 625 1338 2 0 98 0 0 0 0 0 23103672 1106420 5188916 0 0 0 52 592 1369 1 1 98 0 0 ・ ・ ・ ・
各出力項目の意味
以下に基本的な各出力項目の意味をまとめます。
- prpcs
- r : 実行可能な待ちプロセス
- b : 割り込み不可能なスリープ状態のプロセス
- Memory
- swpd : 利用されている仮想メモリの合計値
- free : アイドル状態のメモリの合計値
- buff : バッファーとして利用されているメモリの合計値
- cache : キャッシュとして利用されているメモリの合計値
- inact : インアクティブな状態のメモリの合計値(-a オプション指定時)
- active : アクティブな状態メモリの合計値(-a オプション指定時)
- Swap
- IO
- System
- in : 一秒間に起こる割り込みの数
- cs : 一秒間に起こるコンテキストスイッチの数
- CPU
- us : non-kernelコードを実施している時間
- sy : kernalコードを実施している時間
- id : アイドル時間
- wa : IOの待ち時間(Linux 2.5.41以上はアイドル時間を含む)
- st : Virtual Machineによって取られる時間
オプションの一覧
以下にオプションの一覧をまとめます。
オプション | 説明 |
---|---|
-a, --active | アクティブとインアクティブのメモリの総量を表示 |
-f, --forks | 起動時からのフォークの数を出力。forkとvfork(子プロセスを起動し親プロセスを停止)、clone system callsがカウントされる。作成されたタスクの合計値と同数になる。このオプションを指定指定した場合一回のみの出力が行われる |
-m, --slabs | Slab(カーネルのキャッシュ)情報を出力 |
-n, --one-header | 初回に一回のみのヘッダー表示 |
-d, --disk | ディスクの統計情報を表示 |
-D, --disk-sum | ディスクアプティビティのサマリを出力 |
-p, --partition [device] | パーティションの詳細情報の表示 |
-S, --unit [character] | 出力単位を指定。1000(k)、1024(K)、1000000(m)、1048576 (M) バイト |
-t, --timestamp | タイムスタンプの出力 |
-w, --wide | ワイドアプトプット |
-V, --version | バージョン情報の表示 |
-h, --help | ヘルプの表示 |