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のアイドル時間)が増減していることも見受けれます。