連載
» 2017年07月13日 05時00分 UPDATE

Linux基本コマンドTips(126):【 vmstat 】コマンド――仮想メモリやディスクI/Oの統計情報を表示する

本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、仮想メモリやディスクI/Oの統計情報を表示する「vmstat」コマンドです。

[西村めぐみ,@IT]
「Linux基本コマンドTips」のインデックス

Linux基本コマンドTips一覧

 本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、仮想メモリやディスクI/Oの統計情報を表示する「vmstat」コマンドです。

vmstatコマンドとは?

 「vmstat」は仮想メモリやCPU、ディスクI/Oの統計情報を表示するコマンドです。

 デフォルトでは起動(再起動)からの平均値を表示します。「vmstat 1」のように更新間隔を指定することで、リアルタイムに値を表示できます。



vmstatコマンドの書式

vmstat [オプション] [更新の間隔 [回数]]

※[ ]は省略可能な引数を示しています





vmstatの主なオプション

短いオプション 長いオプション 意味
-a --active アクティブ/非アクティブなメモリの量を表示する(カーネル2.5.41以降)
-d --disk ディスクの統計情報を表示する(カーネル2.5.70以降)
-D --disk-sum ディスクの統計情報を1項目1行で表示する(常に1回のみ表示)
-f --forks ブート後のフォーク数を表示する
-m --slabs スラブ情報を表示する(root権限が必要)
-n --one-header 繰り返し表示の際にヘッダを1度だけ表示する(デフォルトでは一定の周期でヘッダを表示する)
-p パーティション --partition パーティション 指定したパーティションの統計を表示する(カーネル2.5.70以降)
-s --stats 1項目1行でメモリの統計情報とイベントカウンタを表示する(常に1回のみ表示)
-S 単位 --unit 単位 単位をk,K,m,Mで指定する(kは1000、Kは1024、mは1000000、Mは1048576バイト単位)
-t --timestamp タイムスタンプを表示する(オプションなし、「-a」「-d」使用時のみ) ※

※Ubuntuでは「-t」を利用できない。




仮想メモリの統計情報を表示する

 「vmstat」または「vmstat -a」で、最後に起動(再起動)した時から現在までの統計情報を表示します(画面1)。

コマンド実行例

vmstat画面1

(メモリの統計情報を表示する)

vmstat -a

(アクティブ/非アクティブなメモリの統計情報を表示)


画面1 画面1 vmstatコマンドが統計情報を出力したところ

 表示内容は左列から6種類に分かれていて、順にプロセス(procs)、メモリ(memory)、スワップ(swap)、ブロックI/O(io)、システム情報(system)、CPU(cpu)について示しています。CPUでは総時間を100%として、5種類の動作それぞれに使用した時間をパーセンテージ表示しています。

記号 数値の意味
procs r 実行中と実行待ち中のプロセス数の合計
b 割り込み不可能なスリープ状態にあるプロセス数
memory swpd 使用中の仮想メモリの量
free 空きメモリの量
buff バッファとして使用しているメモリの量
cache キャッシュに使用している量
inact アクティブではないメモリの量 ※
active アクティブなメモリの量 ※
swap si ディスクからスワップインしているメモリの量
so スワップアウトしている量
io bi HDDのようなブロック型デバイスから受け取ったブロック数
bo ブロック型デバイスに送ったブロック数
system in 1秒当たりの割り込み回数
cs コンテクストスイッチの回数
cpu us カーネルコード以外の実行(ユーザー時間)に使用した時間(ユーザー時間)
sy カーネルコードの実行に使用した時間(システム時間)
id 空転していたアイドル時間
wa I/O待ち時間
st 仮想マシンから“盗まれた”時間 ※※

※画面1の下部のように「-a」オプション付きで実行した場合、buffとcacheの代わりに表示する
※※仮想環境で実行している際、ホストOSにCPUリソースを割当ててもらえなかった時間の割合。Linux 2.6.11以降。カーネルのバージョンは「uname -r」で表示できる。



 vmstatコマンドの出力方向を変えるには、「vmstat -s」を使います。横方向に出力するのではなく、各項目を縦方向に1行ずつで表示します(画面2)。「vmstat」と「vmstat -a」を組み合わせた内容になっていて、起動からの経過時間(boot time)が追加されています。

コマンド実行例

vmstat -s画面2

(メモリの統計情報を1項目1行で表示する)


画面2 画面2 vmstatの統計情報を縦方向に出力したところ


ディスクI/Oの統計情報を表示する

 「vmstat -d」でディスクI/Oの統計情報を表示します(画面3)。ここでは、大きく3つの項目があります。成功した読み出し(reads)と書き込み(writes)、実行中のI/Oです。各項目中のmsとsecは合計時間を示しています。

 パーティションを指定して統計情報を表示したい場合は「vmstat -p パーティション」とします。表示内容は4つあります。

  • 指定したパーティションに発行した読み出しの総数(reads)
  • 読み出された総セクタ数(read sectors)
  • 書き込みの総数(writes)
  • 書き込み要求の総数(requested writes)

 なお、「-d」と「-p」を同時に指定することはできません。

コマンド実行例

vmstat -d画面3

(ディスクI/Oの情報を表示)

vmstat -p /dev/sda1

(/dev/sda1の情報を表示)


画面3 画面3 ディスク情報(上)とパーティション情報(下)を出力したところ


リアルタイムの統計情報を表示する

 「vmstat 秒数」または「vmstat 秒数 回数」のように更新の間隔を指定すると、リアルタイムの統計情報を表示します(画面4)。回数を指定しなかった場合は[CTRL]+[C]で終了します。

 実行すると、まず“最後に起動(再起動)した時からvmstatコマンド実行開始までの統計情報を表示”し、続いて、“直前の表示から現在までの統計情報”を表示していきます。

コマンド実行例

vmstat 1画面4

(メモリの統計情報を1秒間隔で表示)

vmstat -d 1 10

(ディスクI/Oの統計情報を1秒間隔で10回表示)


画面4 画面4 1秒ごとに統計情報を表示しているところ

 なお、更新の間隔を指定した場合、端末の行数に応じて一定間隔ごとにヘッダ行(“procs ---”のような行)を表示します。1度だけでよい場合は「-n」オプションを併用してください。



筆者紹介

西村 めぐみ(にしむら めぐみ)

PC-9801NからのDOSユーザー。PC-486DX時代にDOS版UNIX-like toolsを経てLinuxへ。1992年より生産管理のパッケージソフトウェアの開発およびサポート業務を担当。著書に『図解でわかるLinux』『らぶらぶLinuxシリーズ』『はじめてでもわかるSQLとデータ設計』『シェルの基本テクニック』など。2011年より、地方自治体の在宅就業支援事業にてPC基礎およびMicrosoft Office関連の教材作成およびeラーニング指導を担当。


Copyright© 2017 ITmedia, Inc. All Rights Reserved.

@IT Special

- PR -

TechTargetジャパン

この記事に関連するホワイトペーパー

Focus

- PR -

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。