vmstat – 仮想メモリやCPU/IOの状態を要約表示する

一覧・詳細

vmstat は、仮想メモリ・プロセス・CPU・入出力などのシステム全体の状態を要約して表示します。一定間隔で繰り返し表示でき、ボトルネックの一次切り分けに便利です。
実務では、負荷調査中の「CPU待ち」「スワップ発生」「IO詰まり」などの兆候確認に使います。

構文(Syntax)

vmstat [OPTIONS] [DELAY [COUNT]]

# ディスク/パーティション統計
vmstat -d
vmstat -D
vmstat -p PARTITION
  • DELAY は更新間隔(秒)、COUNT は回数。DELAY を省略すると1回だけ表示します。

主なオプション一覧

オプション説明使用例
-aメモリ列を active/inactive で表示(通常は buff/cachevmstat -a 1
-f起動以来の fork 合計を表示vmstat -f
-mSlab の統計を表示(環境により非推奨/未実装あり)vmstat -m
-n見出し(ヘッダ)を最初だけ表示vmstat -n 1
-s各種カウンタ/メモリ統計を一覧(スナップショット)vmstat -s
-tタイムスタンプ列を付与vmstat -t 2 5
`-S {kKm
-w幅広い表示(カラムの折返しを抑制)vmstat -w 1
-dディスク統計(デバイスごと)vmstat -d
-Dディスクの総計を表示vmstat -D
-p PARTパーティション PART の統計vmstat -p sda1
-Vバージョン表示vmstat -V

実行例

スナップショットを1回表示(基本)

説明:現在の概況を1度だけ表示します。
コマンド

vmstat

出力例(抜粋)

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      0 123456  7890 456789    0    0     1     2  100  200  3  1 95  1  0
  • r:実行待ちプロセス、b:割り込み不可のスリープ
  • si/so:スワップイン/アウト、wa:IO待ちCPU時間 など

1秒間隔で5回監視(リアルタイム確認)

説明:変化を追って傾向を掴みます。
コマンド

vmstat 1 5

出力例:1秒ごとに5行出力。

ヘッダは最初だけ(ログ取り向け)

説明:ログ解析しやすいようヘッダ再表示を抑えます。
コマンド

vmstat -n 2 10

主要カウンタを一覧(合計値で把握)

説明:スワップ発生の有無や割り込み/コンテキストスイッチ総数などを一望。
コマンド

vmstat -s | head

出力例(例)

      163840 K total memory
      120000 K used memory
       43840 K free memory
...

ディスク全体の統計を確認

説明:デバイス/パーティションのIO統計を概観します。
コマンド

vmstat -D
vmstat -d
vmstat -p sda1

エラー例:不正なオプション

説明:存在しないオプションを渡すとエラー終了します。
コマンド

vmstat --no-such-option
echo $?

出力例(例)

vmstat: unrecognized option '--no-such-option'
1

関連コマンド

  • top / htop:プロセス別の利用状況を対話的に確認。
  • iostat:デバイス/パーティションごとのIO詳細を時系列で表示。
  • mpstat:CPU全体/コア別の使用率を表示。
  • free:メモリ消費のスナップショットを表示。
  • sar:各種リソースの統計を収集・保存し時系列で分析。

備考

  • 取得元:多くの列は /proc/proc/meminfo, /proc/stat, /proc/vmstat など)から集計されます。コンテナ環境や権限設定で値が限定されることがあります。
  • 環境差:本稿は Linux の procps-ngvmstat を前提。BusyBox 版は対応オプションが少なく、BSD系の vmstat は項目や意味が異なります。
  • 読み方のコツr がコア数を大きく超え続ける → CPU飽和の疑い、wa が高止まり → IO待ち、si/so が増える → メモリ逼迫の兆候、などを他コマンドと突き合わせて判断します。
  • 単位指定-S で KiB/MiB などに切替可能。ログに残すときは単位を明示しましょう。

参考

Bash玄

はじめまして!Bash玄です。

エンジニアとしてシステム運用に携わる中で、手作業の多さに限界を感じ、Bashスクリプトを活用して業務を効率化したのがきっかけで、この道に入りました。「手作業は負け」「スクリプトはシンプルに」をモットーに、誰でも実践できるBashスクリプトの書き方を発信しています。

このサイトでは、Bashの基礎から実践的なスクリプト作成まで、初心者でもわかりやすく解説しています。少しでも「Bashって便利だな」と思ってもらえたら嬉しいです!

# 好きなこと
- シンプルなコードを書くこと
- コマンドラインを快適にカスタマイズすること
- 自動化で時間を生み出すこと

# このサイトを読んでほしい人
- Bashに興味があるけど、何から始めればいいかわからない人
- 定型業務を自動化したい人
- 効率よくターミナルを使いこなしたい人

Bashの世界に一歩踏み出して、一緒に「Bash道」を極めていきましょう!

Bash玄をフォローする

コメント