vmstatでLinuxシステム全体を監視する方法|CPU・メモリ・I/Oの見方を解説

ソフトウェアテスト
スポンサーリンク
google.com, pub-5238665064291805, DIRECT, f08c47fec0942fa0

はじめに

性能試験でシステムの遅延が発生したとき、CPUだけでなくメモリ使用量やI/O 状況を含めて確認する必要があります。
このとき有効なツールが、Linuxに標準搭載されているvmstatコマンドです。

vmstatは、CPU、メモリ、スワップ、I/O、プロセスの状況を一画面で俯瞰できるため、原因切り分けやボトルネックの初期診断に非常に有用です。

💡補足
スワップとは、物理メモリが不足した際にディスク領域を仮想メモリとして一時的に使用する仕組みです。スワッピングが発生するとシステム性能が低下します。


vmstatの基本コマンドと使い方

vmstatは、ほとんどのLinux環境にインストールされており、以下のように使います。

基本構文

vmstat [オプション] [間隔(秒)] [回数]

使用例

vmstat 1 5

→ 1秒ごとに5回、システム統計を出力。

主なオプション

オプション説明
-w出力をワイド表示(項目名が見やすくなる)
-S mメモリ量をMB単位で表示
-s累積統計の要約を表示
-dディスクI/Oの統計情報を表示
-p /dev/sdX特定デバイスの統計を表示

📝 補足
-S m を使うと、出力されるメモリ量が KB ではなく MB 単位になり、大規模システムではより見やすくなります。


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
 2  0   2048  51200 102400 204800   0    0   128   256  500 1000 20 10 65  5  0

プロセス

  • r: 実行可能状態でCPUを待っているプロセス数(ランキュー)
  • b: ブロック中のプロセス数(I/O待ちなど)

メモリ

  • swpd: スワップ領域の使用量(KB)
  • free: 空き物理メモリ(KB)
  • buff: バッファキャッシュ(KB)
  • cache: ページキャッシュ(KB)

スワップ

  • si: スワップイン(ディスク → メモリ)KB/s
  • so: スワップアウト(メモリ → ディスク)KB/s

I/O

  • bi: ブロックデバイスへの読み込み(blocks/s)
  • bo: ブロックデバイスへの書き出し(blocks/s)

システム

  • in: 割り込み回数(per sec)
  • cs: コンテキストスイッチ数(per sec)

CPU

  • us: ユーザーモードでのCPU使用率
  • sy: システム(カーネル)モードの使用率
  • id: アイドル(待機)時間
  • wa: I/O待ち時間
  • st: 仮想環境で他のVMに割り当てられていたCPU時間

実践例:ログから問題を特定する

性能試験中、データベースサーバーのレスポンスが遅延した。
そのときの 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
 1  0    512 524288 204800 409600   0    0   256   128  400  800 15 10 70  5  0
 2  1   1024 491520 204800 409600  64   32   512   256  500 1000 20 15 60  5  0

分析のポイント

  • swpd が 512 → 1024 に増加 → スワップ領域の使用が進行中
  • si / so が発生 → メモリ不足によるスワッピングが進行
  • r = 2, b = 1 → 実行待ちとI/O待ちの両方が発生中
  • wa = 5 → I/O処理にCPUが待たされている状態

対処案

  • メモリの増設を検討
  • データベースのキャッシュ設定を調整
  • 不要なインデックスや大容量データの最適化
  • アプリケーションのメモリ使用パターンを見直す

💡 補足
性能試験では、スワップ発生タイミングと I/O 増加の関係に注目することで、ボトルネックを特定しやすくなります。


まとめ

vmstatを使えば、システム全体の状態(CPU、メモリ、I/O、スワップ、プロセス)を 一画面でリアルタイムに可視化 できます。
性能試験やトラブル調査の場面では、次のような観点でログを観察するとよいでしょう。

  • r / b の変化 → CPUやI/Oの待ち行列
  • swpd / si / so の動き → メモリ不足の兆候
  • wa の割合上昇 → ディスクI/Oボトルネックの可能性
  • us / sy のバランス → アプリ vs システムの処理負荷比率

参考資料


コメント

タイトルとURLをコピーしました