Open3

【備忘録】vmstatコマンド

たなべたなべ

概要

vmstat はプロセス・メモリ・ページング・ブロック IO・トラップ・CPU 稼働状況 などに関する情報を報告するコマンドです。

$ cat /etc/os-release
PRETTY_NAME="Ubuntu 22.04.3 LTS"
NAME="Ubuntu"
VERSION_ID="22.04"
VERSION="22.04.3 LTS (Jammy Jellyfish)"
……

$ uname -r
5.15.146.1-microsoft-standard-WSL2

$ 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 6478212  89524 550936    0    0     7     4   11   76  0  0 99  0  0

フィールド(VMモード)

分類 フィールド (省略なしのフィールド名) 説明
Procs Processes プロセスに関するフィールド
r runnable 実行待ちプロセス数
b blocked 割り込み不可能なスリープ状態にあるプロセス数
Memory Memory メモリに関するフィールド
swpd swapped 仮想メモリの量
free free 空きメモリの量
buff buffer バッファメモリの量
chache chache キャッシュメモリの量
inact inactive アクティブではないメモリの量
active active アクティブなメモリの量
Swap Swap スワップメモリに関するフィールド
si swap in 1秒ごとのディスクからスワップインしているメモリの量
so swap out 1秒ごとのディスクからスワップアウトしているメモリの量
IO Input Output ブロックデバイス(≒ストレージ等)とメモリとのやり取りに関するフィールド
bi block input 1秒ごとのブロックデバイスから受け取ったブロック
bo block output 1秒ごとのブロックデバイスに送り出したブロック
System System Linuxシステムにおける情報に関するフィールド
in interrupts 1秒ごとの割り込み時間
cs context switches 1秒ごとのコンテキストスイッチ時間(CPUを複数のプロセスで共有する時間。)
CPU CPU CPU時間に関するフィールド
us user time カーネルコードの実行以外に使用した時間
sy system time カーネルコードの実行に使用した時間
id idle time アイドル時間(CPUにおける処理待ち時間)
wa wait time IO待ち時間
st stolen time 仮想マシンによって使用された(奪われた)時間
たなべたなべ

挙動の確認

環境

stressコマンドによって確認します。

sudo apt install stress-ng
$ stress-ng --version
# stress-ng, version 0.13.12 (gcc 11.3, x86_64 Linux 5.15.146.1-microsoft-standard-WSL2) 💻🔥
$ lscpu # CPUの確認
Architecture:            x86_64
  CPU op-mode(s):        32-bit, 64-bit
  Address sizes:         39 bits physical, 48 bits virtual
  Byte Order:            Little Endian
CPU(s):                  8
  On-line CPU(s) list:   0-7
Vendor ID:               GenuineIntel
  Model name:            11th Gen Intel(R) Core(TM) i7-1185G7 @ 3.00GHz

$ lsmem # メモリの確認
RANGE                                  SIZE  STATE REMOVABLE BLOCK
0x0000000000000000-0x00000000f7ffffff  3.9G online       yes  0-30
0x0000000100000000-0x0000000207ffffff  4.1G online       yes 32-64

$ lsblk # ディスクの確認
NAME MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
sda    8:0    0 388.5M  1 disk
sdb    8:16   0     2G  0 disk [SWAP]
sdc    8:32   0     1T  0 disk /snap
                               /mnt/wslg/distro
                               /
たなべたなべ

r(実行待ちプロセス数)

$ stress-ng -c 10 # CPUストレッサーを10個実行
# stress-ng: info:  [105016] defaulting to a 86400 second (1 day, 0.00 secs) run per stressor
# stress-ng: info:  [105016] dispatching hogs: 10 cpu

直前にvmstat 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
 1  0 350080 6674612  53976 578860    0   30     5    35   11   80  3  1 96  0  0
 0  0 350080 6674612  53976 578860    0    0     0     0   48  512  1  0 99  0  0
 0  0 350080 6674644  53976 578860    0    0     0     0   70  550  0  0 99  0  0
 0  0 350080 6674644  53976 578860    0    0     0     0   63  537  1  0 99  0  0 # ←このタイミングで実行
10  0 350080 6640620  53976 581016    0    0   136     0   86  657 32  1 66  0  0
11  0 350080 6640368  53976 581176    0    0     0     0   25  632 100  0  0  0  0
10  0 350080 6640368  53976 581176    0    0     0     0   15  638 100  0  0  0  0
10  0 350080 6641932  53976 581176    0    0     0     0   39  805 100  0  0  0  0
10  0 350080 6641932  53976 581176    0    0     0     0   21  620 100  0  0  0  0
10  0 350080 6641932  53984 581168    0    0     0   112   15  639 100  0  0  0  0
11  0 350080 6626168  53984 581176    0    0     0     0   34  933 100  0  0  0  0
10  0 350080 6627308  54224 581156    4    0     4  1364  266 2861 100  0  0  0  0
12  0 350080 6629624  54712 580960  232    0   232  1140  551 4998 97  3  0  0  0
10  0 350080 6651812  54736 581236   32    0    32    64   72  979 100  0  0  0  0
10  0 350080 6651560  54736 581236    0    0     0     0   22  616 100  0  0  0  0 # ←このタイミングで終了
 0  0 350080 6674680  54928 579076    0    0     0  2364  404 1435 33  1 64  2  0
 0  0 350080 6674680  54944 579060    0    0     0   236  114  677  0  1 99  1  0
 0  0 350080 6674680  54944 579076    0    0     0     0   79  570  1  0 99  0  0
 0  0 350080 6674680  54944 579076    0    0     0     0  100  619  1  0 99  0  0
 0  0 350080 6674680  54944 579076    0    0     0     0   71  553  0  1 99  0  0

rが概ね10で推移していることが見えます。また、前後でid(CPUのアイドル時間)が増減していることも見受けれます。