📘 はじめに
Linuxでサーバーの負荷状況やメモリ使用量を確認したいとき、vmstat コマンドは非常に便利です。 でも、出力される数字の意味が分かりづらくて「結局どこを見ればいいの?」となりがち。
この記事では、vmstat の出力をフィールド番号付きで丁寧に解説し、実際のトラブルシューティングや監視にどう活かせるかを紹介します。初心者でも安心して読める内容を目指しました。
🖥️ vmstatとは?
vmstat(Virtual Memory Statistics)は、Linuxのメモリ、CPU、プロセス、I/Oなどの状態を簡潔に表示するコマンドです。
vmstat 1 5
この例では、1秒間隔で5回の統計を表示します。
📊 出力の読み方(フィールド番号付き)
以下は vmstat の典型的な出力例です:
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
3 0 0 280228 4204 353764 0 0 13 1 86 153 0 0 99 0 0
これを分かりやすく再構成すると:
| # | カテゴリ | フィールド名 | 値 | 説明 |
|---|---|---|---|---|
| 1 | procs | r |
3 | 実行可能状態のプロセス数(ランキュー) |
| 2 | procs | b |
0 | ブロック状態のプロセス数(I/O待ち) |
| 3 | memory | swpd |
0 | 使用中のスワップメモリ(KB) |
| 4 | memory | free |
280228 | 空きメモリ(KB) |
| 5 | memory | buff |
4204 | バッファに使用されているメモリ(KB) |
| 6 | memory | cache |
353764 | ページキャッシュに使用されているメモリ(KB) |
| 7 | swap | si |
0 | スワップイン(KB/s) |
| 8 | swap | so |
0 | スワップアウト(KB/s) |
| 9 | io | bi |
13 | ブロックデバイスからの読み込み(KB/s) |
| 10 | io | bo |
1 | ブロックデバイスへの書き込み(KB/s) |
| 11 | system | in |
86 | 割り込み数(/s) |
| 12 | system | cs |
153 | コンテキストスイッチ数(/s) |
| 13 | cpu | us |
0 | ユーザーCPU使用率(%) |
| 14 | cpu | sy |
0 | システムCPU使用率(%) |
| 15 | cpu | id |
99 | アイドルCPU率(%) |
| 16 | cpu | wa |
0 | I/O待ちCPU率(%) |
よく見るポイント
r が多い → CPU待ちが多く、負荷が高い可能性
free が少ない → メモリ不足の兆候
si / so が増える → スワップが発生している
wa が高い → I/O待ちが多く、ディスクボトルネックの可能性
id が低い → CPUが忙しい
おまけ:他のツールとの比較
| コマンド | 特徴 |
|---|---|
top |
プロセス単位で詳細表示。動的更新あり。 |
free |
メモリ使用量の概要のみ。 |
iostat |
I/Oの詳細分析に特化。 |
vmstat |
全体のバランスを把握するのに最適。 |
まとめ
vmstat はシンプルながら非常に強力な監視ツールです。 数字の意味さえ分かれば、メモリ不足やCPUボトルネックの兆候をすばやく察知できます。
初心者の方も、まずは vmstat 1 5 でリアルタイムの動きを観察してみましょう!