Categories: linux

Linuxでシステム負荷を手軽に確認!vmstatコマンドの使い方と見方を徹底解説

Linuxのサーバー管理やパフォーマンス監視を行う上で、メモリやCPUの使用率は非常に重要な情報です。数ある監視ツールの中でも、「vmstat」コマンドは軽量かつ手軽にシステムの状態を把握できる便利なツールとして多くの管理者に利用されています。この記事では、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の出力には多くの項目が並んでいますが、以下に主な項目の意味をわかりやすくまとめます。

プロセス(procs)

  • r: 実行可能状態のプロセス数(CPU待ち)
  • b: 割り込み不能なスリープ状態のプロセス数

メモリ(memory)

  • swpd: スワップ使用量(KB)
  • free: 未使用メモリ(KB)
  • buff: バッファとして使用されているメモリ
  • cache: キャッシュとして使用されているメモリ

スワップ(swap)

  • si: スワップイン(スワップ領域からメモリへの読み込み)
  • so: スワップアウト(メモリからスワップ領域への書き出し)

入出力(io)

  • bi: ブロックデバイスからの受信(読み取り)KB/s
  • bo: ブロックデバイスへの送信(書き込み)KB/s

システム(system)

  • in: 割り込み数/秒
  • cs: コンテキストスイッチ数/秒

CPU(cpu)

  • us: ユーザーモードでのCPU使用率(%)
  • sy: カーネルモードでのCPU使用率(%)
  • id: アイドル状態(何もしていない状態)の割合(%)
  • wa: I/O待ち時間の割合(%)
  • st: 仮想マシンに奪われた時間(%)

この中でも特に「r」「free」「si」「so」「us」「sy」「wa」「id」あたりは、システムの負荷を判断する上で重要です。


使用率を見るときのポイント

メモリ使用状況の見方

  • freeの数値が極端に少ないと、空きメモリが少ない状態です。
  • ただし、Linuxでは未使用メモリをキャッシュやバッファとして積極的に利用するため、「free」だけで判断せず、「buff」や「cache」も含めて見ましょう。

CPU負荷の確認

  • us + syが合計で80%以上になると、CPUの使用率が高い状態といえます。
  • waが高い場合は、ディスクI/Oの待ちが多い=ストレージにボトルネックがある可能性があります。
  • stが高い場合は仮想マシンの影響を受けているサーバー(クラウド環境など)で、ホストのリソース不足を疑う必要があります。

応用的な使い方と組み合わせ

永続的に監視する

以下のように入力すれば、2秒間隔でずっと表示を続けることも可能です。

vmstat 2

grepと組み合わせて必要な情報だけ抜き出す

たとえば、CPUの情報だけを監視したい場合は次のようにすれば便利です。

vmstat 1 | awk 'NR==1 || NR==2 || { print $13, $14, $15, $16 }'

これで、us(ユーザーCPU)、sy(カーネルCPU)、id(アイドル)、wa(I/O待ち)だけを表示できます。


vmstatと他のツールとの違い

Linuxには他にも負荷監視ツールとして「top」や「htop」、「free」、「iostat」などがありますが、それぞれに特徴があります。

コマンド特徴
vmstat全体的な負荷状況の軽量な表示。スナップショット向き。
topプロセス単位での詳細な負荷状況。リアルタイム更新。
htoptopのビジュアル強化版。操作性が良い。
iostatディスクI/Oの詳細表示に特化。
freeメモリ状況のみをシンプルに表示。

vmstatはあくまで「広く浅く」システム全体の状態を確認したいときに最適です。


まとめ:vmstatは軽量で頼れる監視ツール

vmstatは、サーバーのパフォーマンス監視やトラブル対応の第一歩として非常に有用なコマンドです。実行するだけで、メモリやCPU、I/Oの状況を一目で把握でき、トラブルの原因を絞り込む手がかりになります。

常駐プロセスに頼らず、軽快に動作するのも大きな利点です。サーバー負荷の兆候をいち早く察知し、安定運用を維持するためにも、vmstatをぜひ活用してみてください。

upandup

Web制作の記事を中心に、暮らし、ビジネスに役立つ情報を発信します。 アフィリエイトにも参加しています。よろしくお願いいたします。