vmstatコマンド LinuxでメモリやCPUの使用状況確認する

Linuxでよく使われる「vmstat」コマンドとは、メモリの空き容量やCPUの負荷状況、ディスクI/Oなどを表示・確認するコマンドです。

リアルタイムでもシステムの負荷状況を確認することができるので、ボトルネックを切り分けるときに「vmstat」コマンドを使います。

vmstatの統計情報

    1. プロセス(procs)
    2. メモリ(memory)
    3. スワップ(swap)
    4. ブロックI/O(io)
    5. システム情報(system)
    6. CPU(cpu)

サーバーの処理が遅いと感じたら「vmstat」コマンドで調べてみてください。

 

 

 

vmstatコマンドの基礎知識

 

vmstatコマンドを使う前に必要最低限の知識は身につけておきましょう。

こちらでは、vmstatの基本的な知識をご紹介します。

 

vmstatのバージョン確認方法

vmstatのバージョンを調べる場合は、

「vmstat --version」で確認することができます。

$ vmstat --version
vmstat from procps-ng 3.3.10

 

vmstatのヘルプ確認方法

vmstatでヘルプを調べる場合は、

vmstat --help」または、「vmstat -h」で確認することができます。

$ vmstat --help
Usage:
 vmstat [options] [delay [count]]

Options:
 -a, --active           active/inactive memory
 -f, --forks            number of forks since boot
 -m, --slabs            slabinfo
 -n, --one-header       do not redisplay header
 -s, --stats            event counter statistics
 -d, --disk             disk statistics
 -D, --disk-sum         summarize disk statistics
 -p, --partition <dev>  partition specific statistics
 -S, --unit <char>      define display unit
 -w, --wide             wide output
 -t, --timestamp        show timestamp

 -h, --help     display this help and exit
 -V, --version  output version information and exit

For more details see vmstat(8).

 

vmstatコマンドのオプション

vmstatコマンドを使用する場合は、オプションも覚えておくことをおすすめします。

 

オプション解説

-a:メモリの使用状況を表示
-f:ブート後のフォーク数を表示
-m:スタブの情報を表示
-n:ヘッダがコマンド投入時に一回だけ表示
-s:メモリの統計表示
-d:全ディスクの統計を表示
-p:パーティションの詳細表示
-S:「k」「K」「m」「M」をつけると、メモリ単位で表示
-V:バージョン情報を表示

 

procs:プロセス

procsは、アクティブなプロセスに関する統計になります。

r:実行待ち状態にあるプロセス数
b:割り込み不可能なスリープ状態にあるプロセス数
w:スワップアウトされており,実行可能なプロセス数

 

memory:メモリ

memoryは、メモリの使用量と使用可能量に関するデータになります。

swpd:仮想メモリー量
free:空きメモリー量(Kバイト)
buff:バッファとして用いられているメモリー量(Kバイト)

 

swap:スワップ

swapは、スワップに関する統計になります。

si:ディスクからスワップインしているメモリー量(Kバイト/秒)
so:ディスクにスワップしているメモリー量(Kバイト/秒)

 

io:ブロックI/O

ioは、デバイスとの転送量になります。

ioは、Input/outputの略です。

ファイルのダウンロードやデータの読み込みを行ったりするとioの数値が高くなります。

長時間ioの数値が高い場合は、ディスクioが頻発しています。

そのため、ディスクの増設やサーバーの負荷分散などを検討する必要があります。

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

 

system:システム情報

systemは、システム全体の割り込みおよびコンテキストの切り替えレート
in:毎秒の割り込み回数
cs:毎秒のコンテキスト・スイッチ回数

 

cpu:CPU

cpuは、CPUの使用量の割合になります。

id(アイドル時間)の数値が100に近いほどサーバーが安定している状態になります。

目安としてidが90以上あることが望ましいです。

idの数値が低いとCPUに負荷がかかっている状況になりますので調査を行う必要があります。

us:ユーザー時間
sy:システム時間
id:アイドル時間
wa:IO待ち時間

 

スポンサーリンク

vmstatコマンドの使い方

実際にvmstatコマンドの使い方についてご紹介します。

 

vmstat

オプションを指定しない場合の「vmstat」コマンドの結果はこちらです。

$ vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 3  0 3705840 252023792      0 9325548    1    3    53   153    0    0  8  4 88  0  0

 

vmstatを〇秒間隔で実行

10秒間隔でメモリやCPU、ディスクi/oなどをリアルタイム表示する場合は、「vmstat 〇」を実行します。

「〇」には秒数を指定します。

vmstatを10秒間隔で実行する場合の例はこちらです。

$ vmstat 10
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 4  0 3686512 252115072      0 9221152    1    3    53   153    0    0  8  4 88  0  0
10  0 3686504 252102288      0 9221392    0    0  1370  4343 32156 31125 11  3 87  0  0
 7  0 3686512 252097856      0 9221236    0    0  1069  3336 27250 25523  8  2 89  0  0
 2  0 3686512 252086576      0 9220500    0    0  1514 14537 33882 74228 15 13 72  0  0
 5  0 3686512 252103920      0 9218848    0    0  1652  6022 28570 30210  9  3 88  0  0
 6  0 3686512 252111200      0 9220496    0    0  1795  3700 30529 30174 11  2 87  0  0
 8  0 3686512 252091712      0 9223356    0    0   531 10390 33161 31358 10  2 88  0  0
10  0 3686512 252098816      0 9221888    0    0   222  3265 37758 38715  9  2 88  0  0
 6  0 3686512 252111328      0 9220492    0    0   876  4130 26984 26560  9  2 90  0  0
 6  0 3686512 252110624      0 9222664    0    0  1216 19309 38156 80161 17 13 70  0  0
 7  0 3686512 252108848      0 9224104    0    0  1493  8532 34255 32517 12  3 86  0  0

 

「vmstat -t 10」でも10秒間隔で表示することができます。

「-t」を追加することでtimestampを表示できます。

$vmstat -t 10
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- -----timestamp-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st                 JST
 5  0 3686532 252083632      0 9128132    1    3    53   153    0    0  8  4 88  0  0 2021-02-18 13:23:20
 3  0 3686532 252068368      0 9128924    0    0  1331  5993 38883 37514 13  3 83  0  0 2021-02-18 13:23:30
 4  2 3686532 252065744      0 9128996    0    0  1233  9512 31061 30797 10  2 88  0  0 2021-02-18 13:23:40
 2  0 3686532 252069376      0 9128220    0    0   212  8212 30537 29469  9  2 89  0  0 2021-02-18 13:23:50
11  0 3686532 252057296      0 9129364    0    0  1934  6238 29718 28451  9  2 89  0  0 2021-02-18 13:24:00

 

「vmstat」と「awk」を組み合わせることで日時を表示することもできます。

$ vmstat -a 1 | awk '{print strftime("%Y/%m/%d %H:%M:%S" ), $0}'
2021/02/18 13:48:20 procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
2021/02/18 13:48:20  r  b   swpd   free  inact active   si   so    bi    bo   in   cs us sy id wa st
2021/02/18 13:48:20  7  0 3686436 252044064 3989760 7544736    1    3    53   153    0    0  8  4 88  0  0
2021/02/18 13:48:30  5  0 3686436 252040976 3990008 7547068    0    0   290  1957 27796 28076  8  2 89  0  0

途中でコマンドを終了する場合は、「Ctrl+c」を実行します。

 

vmstatを〇秒間隔を〇回表示

vmstatを10秒間隔で3回表示する場合の例はこちらです。

$ vmstat 10 3
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 8  0 3686492 252073760      0 9120124    1    3    53   153    0    0  8  4 88  0  0
 5  0 3686536 252081728      0 9120692    0    0  1022 11542 34337 34504 13  4 83  0  0
 8  0 3686536 252081344      0 9119896    0    0   251  3940 33262 31662 10  2 88  0  0

 

表示単位を変更して表示

表示単位をメガバイトで表示したい場合は、「vmstat -S m」コマンドを実行します。

$ vmstat -S m
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
10  0   3774 258134      0   9411    0    0    53   153    0    0  8  4 88  0  0

 

キロバイトで表示したい場合は、「vmstat -S k」コマンドを実行します。

$vmstat -S k
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
18  0 3774967 258017664      0 9503482    1    3    53   153    0    0  8  4 88  0  0

 

表示を見やすくする

表示を見やすくする場合は、「vmstat -w」コマンドを実行します。

$ vmstat -w
procs -----------------------memory---------------------- ---swap-- -----io---- -system-- --------cpu--------
 r  b         swpd         free         buff        cache   si   so    bi    bo   in   cs  us  sy  id  wa  st
 9  0      3686448    251638960            0      9705516    1    3    53   153    0    0   8   4  88   0   0
スポンサーリンク
おすすめの記事