プロセス、CPUアクティビティ、メモリなどに関する情報にアクセスするために使用できるコマンドラインユーティリティをお探しの場合は、 vmstatを知っていただければ幸いです。 あなたのためにこれを行います。
この記事では、わかりやすい例を使用して、このツールの基本について説明します。ただし、その前に、この記事のすべての例がUbuntu 20.04 LTSマシンでテストされていることを言及する価値がありますが、CentOSとDebianでも機能します。
Linuxvmstatコマンド
Linuxのvmstatコマンドは、仮想メモリの統計を報告します。その構文は次のとおりです。
vmstat [options] [delay [count]]
そして、ツールのマニュアルページで説明されているのは次のとおりです。
vmstat reports information about processes, memory, paging, block IO,
traps, disks and cpu activity.
The first report produced gives averages since the last reboot. Addi?
tional reports give information on a sampling period of length delay.
The process and memory reports are instantaneous in either case.
以下は、vmstatコマンドがどのように機能するかをよりよく理解するためのQ&Aスタイルの例です。
Q1。 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
1 0 0 401160 100252 1307468 0 0 5 17 49 70 0 0 100 0 0
最初の行が示すように、出力は6つのセクションに分割されます。ツールのマニュアルページには、これらの値に関する詳細情報が含まれています。抜粋は次のとおりです:
Procs
r: The number of runnable processes (running or waiting for run time).
b: The number of processes in uninterruptible sleep.
Memory
swpd: the amount of virtual memory used.
free: the amount of idle memory.
buff: the amount of memory used as buffers.
cache: the amount of memory used as cache.
inact: the amount of inactive memory. (-a option)
active: the amount of active memory. (-a option)
Swap
si: Amount of memory swapped in from disk (/s).
so: Amount of memory swapped to disk (/s).
IO
bi: Blocks received from a block device (blocks/s).
bo: Blocks sent to a block device (blocks/s).
System
in: The number of interrupts per second, including the clock.
cs: The number of context switches per second.
CPU
These are percentages of total CPU time.
us: Time spent running non-kernel code. (user time, including nice time)
sy: Time spent running kernel code. (system time)
id: Time spent idle. Prior to Linux 2.5.41, this includes IO-wait time.
wa: Time spent waiting for IO. Prior to Linux 2.5.41, included in idle.
st: Time stolen from a virtual machine. Prior to Linux 2.6.11, unknown.
Q2。 vmstatに出力を自動更新させる方法は?
デフォルトでは、vmstatは出力を1回生成します。ただし、vmstatで出力を自動的に更新する場合は、コマンドへの入力として数値を指定することで更新できます。
この数値は、出力が更新されるまでの遅延(秒単位)として機能します。例:
vmstat 3
このように、vmstatの出力は3秒ごとに更新されます。
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 0 410928 100276 1307480 0 0 5 17 49 70 0 0 100 0 0
0 0 0 410920 100284 1307480 0 0 0 181 108 143 0 0 100 0 0
0 0 0 410920 100292 1307480 0 0 0 7 92 132 0 0 100 0 0
0 0 0 410920 100292 1307480 0 0 0 0 87 124 0 0 100 0 0
...
...
...
Q3。 vmstatにslabinfoを表示させる方法は?
slabinfoの場合、-mコマンドラインオプションを使用する必要があります。このオプションを機能させるには、Linuxディストリビューションのカーネルがslabinfoをサポートしている必要があることに注意してください。サポートがある場合は、sudo権限でコマンドを実行する必要があります。
sudo vmstat -m
たとえば、私の場合、生成された出力の抜粋は次のとおりです。
Cache Num Total Size Pages
ufs_inode_cache 0 0 808 40
qnx4_inode_cache 0 0 680 48
hfsplus_attr_cache 0 0 3840 8
hfsplus_icache 0 0 896 36
hfs_inode_cache 0 0 832 39
minix_inode_cache 0 0 672 48
ntfs_big_inode_cache 0 0 960 34
ntfs_inode_cache 0 0 296 55
jfs_ip 0 0 1280 25
xfs_dqtrx 0 0 528 31
xfs_dquot 0 0 496 33
xfs_buf 0 0 384 42
xfs_rui_item 0 0 696 47
xfs_rud_item 0 0 176 46
xfs_inode 0 0 1024 32
xfs_efd_item 0 0 440 37
xfs_buf_item 0 0 272 30
xfs_trans 0 0 232 35
xfs_da_state 0 0 480 34
xfs_btree_cur 0 0 224 36
...
...
...
Q4。 vmstatがディスクアクティビティの要約統計を報告するようにするにはどうすればよいですか?
-Dコマンドラインオプションを使用してください。
vmstat -D
このコマンドが私のシステムで生成した出力は次のとおりです。
10 disks
2 partitions
15066 total reads
5937 merged reads
1272794 read sectors
20063 milli reading
155026 writes
103687 merged writes
4602472 written sectors
105279 milli writing
0 inprogress IO
126 milli spent IO
Q5。 vmstatに各出力行にタイムスタンプを追加させる方法は?
vmstatコマンドが各出力行にタイムスタンプを追加することを確認するには、-tコマンドラインを使用します。
vmstat -t
$ vmstat 2 -t
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- -----timestamp-----
r b swpd free buff cache si so bi bo in cs us sy id wa st UTC
2 0 0 410116 100432 1308160 0 0 5 17 49 70 0 0 100 0 0 2020-05-08 09:40:05
0 0 0 410116 100432 1308160 0 0 0 88 100 136 0 0 100 0 0 2020-05-08 09:40:07
0 0 0 410116 100440 1308160 0 0 0 18 90 139 0 0 100 0 0 2020-05-08 09:40:09
0 0 0 410116 100440 1308160 0 0 0 0 93 126 0 0 100 0 0 2020-05-08 09:40:11
0 0 0 410368 100448 1308160 0 0 0 10 107 144 0 0 100 0 0 2020-05-08 09:40:13
0 0 0 410368 100448 1308160 0 0 0 0 86 122 0 0 100 0 0 2020-05-08 09:40:15
0 0 0 410368 100448 1308160 0 0 0 0 101 135 0 0 100 0 0 2020-05-08 09:40:17
強調表示されたエントリは、各行に含まれるタイムスタンプを示しています。
Linuxコマンドラインで行う作業の種類によっては、vmstatコマンドが非常に役立つ場合があります。ここで説明するオプションとは別に、このツールが提供するコマンドラインオプションは他にもたくさんあります。詳細については、こちらをご覧ください。