はじめに
性能試験でシステムの遅延が発生したとき、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/sso
: スワップアウト(メモリ → ディスク)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 システムの処理負荷比率
コメント