Linuxのvmstatコマンドの使い方と実行例についてまとめました。
メモリ使用量を確認(vmstatコマンド)
vmstatは、仮想メモリの統計情報を表示するコマンドです。
vmstat [オプション] [更新間隔 [回数]]
オプション | 概要 |
---|---|
-a | アクティブ/非アクティブなメモリ量を表示 |
-d | ディスクの統計情報を表示 |
-D | ディスクの統計情報を1項目1行で表示 |
-f | ブート後のフォーク数を表示 |
-m | スラブ情報を表示root権限が必要) |
-n | 繰り返し表示する場合、ヘッダは1度だけ表示(デフォルトは一定周期でヘッダを表示) |
-p パーティション | 指定したパーティションの統計を表示 |
-s | 1項目1行でメモリの統計情報とイベントカウンタを表示(常に1回のみ) |
-S 単位 | 単位を定(kだと1000、Kだと1024、mだと1000000、Mだと1048576バイト単位) |
-t | タイムスタンプを表示(オプションなし、「-a」「-d」使用時のみ) |
表示項目 | 記号 | 説明 |
---|---|---|
procs | – | procsの値はシステムの動作の重さを数値的に観察できます。Linuxは複数のプロセスを同時実行をCPUコアの時分割により、擬似的に実現しています。例えば、1個のCPUコアで3個のプロセスを実行する際、実行キュー(待ち行列)中に3個のプロセスをリストアップし、単位時間内に3回の切り替えを行って、すべてのプロセスが同時に実行されているように見せかけています。この「実行キューに入っているプロセス数」が「procsのrの数値」となります。値が大きいほどなかなか処理が進まずシステムが重くなります。また、「実行中であるがディスクやネットワークなどのI/Oで待ち状態に入って、実際には実行できていないプロセス数」が「procsのb」の数値となり、値が大きいほどシステムの動作が重くなります。そして、「procsのrとbを足した値」を「ロードアベレージ」といいます。1プロセスがCPUを100%占有している場合、ロードアベレージが1となります。2プロセスで100%占有している場合は2となります。CPUのコア数が1個の場合、ロードアベレージが1になるとCPUが100%使用されている状態となります。コア数が4個の場合。ロードアベレージ4になるとCPUが100%使用されている状態となります。逆に、CPUの負荷が掛かっていないにも関わらず、ロードアベレージが高い場合、I/Oがボトルネックになっていることになります。 |
procs | r | 実行待ちのプロセス数(実行可能で「実行キュー」に入っている状態のプロセス数)。CPUのコア数以下の値であることが望ましい。 |
procs | b | IO待ちのプロセス数(割り込み不可能なスリープ状態にあるプロセス数)。bの値は0であることが望ましく、定常的に多い場合、ディスク性能に問題がある、ディスクIOが多いなどの理由でシステムが重くなっている可能性がある。 |
memory | swpd | 使用中の仮想メモリ量 |
memory | free | 純粋な空きメモリ量。空きメモリ量が増えると、その分がcacheに回されるため、この値が小さいからといった「メモリ容量が不足している」とは判断できない。 |
memory | buff | バッファに用いられているメモリ量。メモリ全体が逼迫するほど、この値が大きくなる。 |
memory | cache | キャッシュに用いられているメモリ量。キャッシュデータ(使用頻度が高いデータ)を保存しているだけなので、値が大きくなっても基本的には問題ない。 |
memory | inact | アクティブではないメモリ量 |
memory | active | アクティブなメモリの量 |
swap | si | swap inの略。スワップ領域(ディスク)からメモリへ展開したデータ量を示す。通常は0。スワップとは、メモリ量が不足したとき、メモリ上にある不要データやプログラムをディスクに書き込んでメモリの空き容量を増やすこと。 |
swap | so | swap outの略。メモリからスワップ領域(ディスク)へ展開したデータ量を示す。通常は0。0以外の値になっている場合、メモリ不足や大量のメモリ量を消費するプログラムが動いている可能性がある。 |
io | bi | ブロック型デバイス(HDD等)から読み込んだブロック数の秒間平均。大きなデータファイルの操作(移動、コピー、ダウンロードなど)や、大量のデータをデータベースから読む込むときに値が大きくなる。ブロック型デバイスス(HDD等)の性能に依存するため、一時的に高いから悪いとは一概にいえない。高い値が長時間続く場合、ディスクIOが頻発し、割り込み出来ない状態になっているため、ディスクの増設、サーバーの分散化などを検討する必要がある。 |
io | bo | ブロック型デバイス(HDD等)へ書き込んだブロック数の秒間平均。大きなデータファイルの操作(移動、コピー、ダウンロードなど)や、大量のデータをデータベース等に書き込むときに値が大きくなる。ブロック型デバイスス(HDD等)の性能に依存するため、一時的に高いから悪いとは一概にいえない。高い値が長時間続く場合、ディスクIOが頻発し、割り込み出来ない状態になっているため、ディスクの増設、サーバーの分散化などを検討する必要がある。 |
system | in | 1秒当たりの割り込み回数 |
system | cs | コンテクストスイッチの回数。csの値が大きいと、時分割によるプログラム切替えが頻発し、ロス(オーバーヘッド)が大きいことになる。 |
cpu | us | カーネルコード以外の実行に使用した時間(ユーザー時間) |
cpu | sy | カーネルコードの実行に使用した時間(システム時間) |
cpu | id | 空転していたアイドル時間 |
cpu | wa | I/O待ち時間 |
cpu | st | 仮想環境で実行している際、ホストOSにCPUリソースを割当ててもらえなかった時間の割合 |
sysstatパッケージのインストール
sudo apt-get install sysstat
sudo yum install sysstat
【実行例】メモリの統計情報を表示
メモリの統計情報を表示します。
$ vmstat procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 5 0 0 926516 147648 1637024 0 0 0 5 3 6 1 2 97 0 0
【実行例】アクティブ/非アクティブなメモリの統計情報を表示
アクティブ/非アクティブなメモリの統計情報を表示します。
$ vmstat -a procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 5 0 0 926516 147648 1637024 0 0 0 5 3 6 1 2 97 0 0
【実行例】メモリの統計情報を1項目1行で表示
$ vmstat -s 3885396 K total memory 1173656 K used memory 1474648 K active memory 957216 K inactive memory 927080 K free memory 147648 K buffer memory 1637012 K swap cache 102396 K total swap 0 K used swap 102396 K free swap 5165892 non-nice user cpu ticks 884 nice user cpu ticks 13627994 system cpu ticks 661589039 idle cpu ticks 754139 IO-wait cpu ticks 0 IRQ cpu ticks 136342 softirq cpu ticks 0 stolen cpu ticks 841519 pages paged in 34920233 pages paged out 0 pages swapped in 0 pages swapped out 618866785 interrupts 987754169 CPU context switches 1702013858 boot time 366946 forks
【実行例】ディスクI/Oの情報を表示
$ vmstat -d disk- ------------reads------------ ------------writes----------- -----IO------ total merged sectors ms total merged sectors ms cur sec ram0 0 0 0 0 0 0 0 0 0 0 ram1 0 0 0 0 0 0 0 0 0 0 ram2 0 0 0 0 0 0 0 0 0 0 ram3 0 0 0 0 0 0 0 0 0 0 ram4 0 0 0 0 0 0 0 0 0 0 ram5 0 0 0 0 0 0 0 0 0 0 ram6 0 0 0 0 0 0 0 0 0 0 ram7 0 0 0 0 0 0 0 0 0 0 ram8 0 0 0 0 0 0 0 0 0 0 ram9 0 0 0 0 0 0 0 0 0 0 ram10 0 0 0 0 0 0 0 0 0 0 disk- ------------reads------------ ------------writes----------- -----IO------ total merged sectors ms total merged sectors ms cur sec ram11 0 0 0 0 0 0 0 0 0 0 ram12 0 0 0 0 0 0 0 0 0 0 ram13 0 0 0 0 0 0 0 0 0 0 ram14 0 0 0 0 0 0 0 0 0 0 ram15 0 0 0 0 0 0 0 0 0 0 loop0 0 0 0 0 0 0 0 0 0 0 loop1 0 0 0 0 0 0 0 0 0 0 loop2 0 0 0 0 0 0 0 0 0 0 loop3 0 0 0 0 0 0 0 0 0 0 loop4 0 0 0 0 0 0 0 0 0 0 loop5 0 0 0 0 0 0 0 0 0 0 disk- ------------reads------------ ------------writes----------- -----IO------ total merged sectors ms total merged sectors ms cur sec loop6 0 0 0 0 0 0 0 0 0 0 loop7 0 0 0 0 0 0 0 0 0 0 mmcblk0 29641 8104 1682910 114617 10619563 666426 69841090 35020383 0 25842
【実行例】指定したパーティションの情報を表示
パーティション「/dev/sda1」の情報を表示します。
$ vmstat -p /dev/sda1
【実行例】メモリの統計情報を10秒間隔で表示
$ vmstat 10
【実行例】ディスクI/Oの統計情報を10秒間隔で10回表示
$ vmstat -d 1 10
【実行例】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 9 0 0 603676 147708 1646492 0 0 0 5 6 5 1 2 97 0 0 5 0 0 601724 147708 1646508 0 0 0 8 2296 5291 5 94 0 0 0 5 0 0 601328 147708 1646508 0 0 0 20 2202 4369 6 88 5 0 0 4 0 0 600032 147708 1646508 0 0 0 40 2230 5821 7 90 3 0 0 4 0 0 597480 147708 1646508 0 0 0 8 1991 4473 13 83 4 0 0 4 0 0 595800 147708 1646508 0 0 0 8 2039 5160 5 95 0 0 0 4 0 0 594116 147708 1646508 0 0 0 8 2123 5334 3 96 1 0 0 4 0 0 592580 147708 1646508 0 0 0 24 2169 5125 4 96 0 0 0 4 0 0 590884 147708 1646508 0 0 0 24 2361 4908 4 94 2 0 0 4 0 0 588128 147708 1646508 0 0 0 8 2183 4730 4 93 4 0 0 4 0 0 586836 147708 1646508 0 0 0 16 2125 4502 5 90 6 0 0
関連ページ
LinuCの試験対策と例題まとめ
LinuCの試験対策と例題(学習サイト)についてまとめました。
LPICの試験対策と例題まとめ
LPICの試験対策と例題(学習サイト)についてまとめました。
【Linux超入門】システムの基礎とよく使うコマンドなど徹底解説
Linuxシステムの基礎とよく使うコマンドなどについて入門者向けに解説します。
コメント