Linuxのサーバー管理やパフォーマンス監視を行う上で、メモリやCPUの使用率は非常に重要な情報です。数ある監視ツールの中でも、「vmstat」コマンドは軽量かつ手軽にシステムの状態を把握できる便利なツールとして多くの管理者に利用されています。この記事では、vmstatの基本的な使い方から、各項目の意味、応用的な使い方までを初心者にもわかりやすく解説していきます。
vmstat
は「virtual memory statistics」の略で、主に仮想メモリの使用状況を表示するコマンドです。しかし、実際にはメモリだけでなく、CPUの使用率やプロセスの状態、I/O(ディスクアクセス)など、システム全体のパフォーマンスを手軽に確認するための総合的なツールです。
Linuxを使用する上で、サーバーの負荷状況を把握することは非常に重要です。特にトラブル発生時の初動対応や、ボトルネックの調査の第一歩としてvmstatはとても役立ちます。
最もシンプルな形でvmstatを実行するには、次のコマンドを入力します。
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
0 0 0 123456 78910 654321 0 0 0 0 12 34 5 1 93 1 0
1回だけの出力では瞬間的な情報しか得られないため、指定した間隔で繰り返し監視することが一般的です。たとえば、2秒おきに5回表示するには以下のようにします。
vmstat 2 5
このようにすれば、2秒ごとに合計5回、システムの状態が表示されます。
vmstatの出力には多くの項目が並んでいますが、以下に主な項目の意味をわかりやすくまとめます。
r
: 実行可能状態のプロセス数(CPU待ち)b
: 割り込み不能なスリープ状態のプロセス数swpd
: スワップ使用量(KB)free
: 未使用メモリ(KB)buff
: バッファとして使用されているメモリcache
: キャッシュとして使用されているメモリsi
: スワップイン(スワップ領域からメモリへの読み込み)so
: スワップアウト(メモリからスワップ領域への書き出し)bi
: ブロックデバイスからの受信(読み取り)KB/sbo
: ブロックデバイスへの送信(書き込み)KB/sin
: 割り込み数/秒cs
: コンテキストスイッチ数/秒us
: ユーザーモードでのCPU使用率(%)sy
: カーネルモードでのCPU使用率(%)id
: アイドル状態(何もしていない状態)の割合(%)wa
: I/O待ち時間の割合(%)st
: 仮想マシンに奪われた時間(%)この中でも特に「r」「free」「si」「so」「us」「sy」「wa」「id」あたりは、システムの負荷を判断する上で重要です。
free
の数値が極端に少ないと、空きメモリが少ない状態です。us + sy
が合計で80%以上になると、CPUの使用率が高い状態といえます。wa
が高い場合は、ディスクI/Oの待ちが多い=ストレージにボトルネックがある可能性があります。st
が高い場合は仮想マシンの影響を受けているサーバー(クラウド環境など)で、ホストのリソース不足を疑う必要があります。以下のように入力すれば、2秒間隔でずっと表示を続けることも可能です。
vmstat 2
たとえば、CPUの情報だけを監視したい場合は次のようにすれば便利です。
vmstat 1 | awk 'NR==1 || NR==2 || { print $13, $14, $15, $16 }'
これで、us(ユーザーCPU)、sy(カーネルCPU)、id(アイドル)、wa(I/O待ち)だけを表示できます。
Linuxには他にも負荷監視ツールとして「top」や「htop」、「free」、「iostat」などがありますが、それぞれに特徴があります。
コマンド | 特徴 |
---|---|
vmstat | 全体的な負荷状況の軽量な表示。スナップショット向き。 |
top | プロセス単位での詳細な負荷状況。リアルタイム更新。 |
htop | topのビジュアル強化版。操作性が良い。 |
iostat | ディスクI/Oの詳細表示に特化。 |
free | メモリ状況のみをシンプルに表示。 |
vmstatはあくまで「広く浅く」システム全体の状態を確認したいときに最適です。
vmstat
は、サーバーのパフォーマンス監視やトラブル対応の第一歩として非常に有用なコマンドです。実行するだけで、メモリやCPU、I/Oの状況を一目で把握でき、トラブルの原因を絞り込む手がかりになります。
常駐プロセスに頼らず、軽快に動作するのも大きな利点です。サーバー負荷の兆候をいち早く察知し、安定運用を維持するためにも、vmstat
をぜひ活用してみてください。