Linux vmstat コマンド

Linux コマンド大全


vmstat コマンドとは

vmstat(Virtual Memory Statistics)は、Linux システム上で動作する強力なパフォーマンス監視ツールです。システムのプロセス、メモリ、スワップ領域、I/O ブロック、CPU アクティビティなどの主要なパフォーマンス指標をリアルタイムで報告します。

中核機能

  • メモリ監視:物理メモリとスワップ領域の使用状況を表示します
  • CPU使用率:ユーザープロセス、システムプロセス、アイドル時間の割合を表示します
  • プロセス状態:実行中、待機中、ブロック中のプロセス数を報告します
  • I/O 統計:ブロックデバイスの読み書き操作に関する詳細情報を提供します

基本構文と一般的なパラメータ

基本構文形式

vmstat [选项] [时间间隔] [次数]

一般的なパラメータの説明

パラメータ 説明
-a アクティブメモリと非アクティブメモリを表示
-d ディスク統計情報を表示
-p 指定したディスクパーティションの統計情報を表示
-s メモリ関連統計情報のサマリーを表示
-m slab 情報を表示
-t 出力にタイムスタンプを追加
-S 表示単位を指定(k/K/m/M はそれぞれ 1000/1024/1000000/1048576 を表します)

出力フィールドの詳細

実行vmstatコマンド実行後、出力は通常以下の部分に分けられます:

1. プロセス情報

procs
r: 运行队列中的进程数量
b: 等待 I/O 的进程数量

2. メモリ情報

memory
swpd: 使用的虚拟内存大小(KB)
free: 空闲的物理内存大小(KB)
buff: 用作缓冲区的内存大小(KB)
cache: 用作缓存的内存大小(KB)

3. スワップ領域情報

swap
si: 每秒从磁盘读入交换区的内存大小(KB/s)
so: 每秒写入磁盘的交换区内存大小(KB/s)

4. I/O 情報

io
bi: 每秒从块设备接收的块数(blocks/s)
bo: 每秒发送到块设备的块数(blocks/s)

5. システム情報

system
in: 每秒中断数(包括时钟中断)
cs: 每秒上下文切换次数

6. CPU使用率

cpu
us: 用户进程占用 CPU 时间百分比
sy: 系统进程占用 CPU 时间百分比
id: 空闲 CPU 时间百分比
wa: 等待 I/O 的 CPU 时间百分比
st: 被虚拟机偷取的时间百分比

実用的なサンプル解説

例1:基本監視(2秒ごとに更新)

例

vmstat 2

出力例:

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  78900 456789    0    0     5    12  345 6789 10  5 85  0  0

例2:ディスク統計情報の表示

例

vmstat -d

出力には各ディスクの読み取り/書き込み統計が表示され、読み取り/書き込み回数とセクタ数が含まれます。

例3:タイムスタンプ付き監視(5秒ごと、計3回)

例

vmstat -t 5 3

出力の各行の先頭にタイムスタンプが付加され、記録と分析が容易になります。


パフォーマンス問題診断ガイド

1. CPUボトルネックの判断

  • us の値が高い:ユーザープロセスが大量の CPU を消費しており、アプリケーションの最適化が必要な可能性があります
  • sy の値が高い:システムカーネルが大量の CPU を消費しており、システムコールが多すぎる可能性があります
  • wa の値が高い:I/O 待機時間が長く、ディスクがボトルネックになっている可能性があります

2. メモリ問題の診断

  • si/so が継続的に 0 以外:システムがスワップ領域を使用していることを示しており、物理メモリが不足している可能性があります
  • free の値が継続的に減少:メモリリークの可能性があります

3. プロセスブロック問題

  • b 列の値が大きい:複数のプロセスが I/O 操作を待機していることを示します

ベストプラクティスに関する提案

  1. 監視間隔の選択:本番環境では 5〜10 秒間隔を推奨し、システムパフォーマンスへの影響を避けます
  2. 長期的な監視:組み合わせてnohup出力をファイルにリダイレクトする
    nohup vmstat 10 360 > vmstat.log &
  3. 総合的な分析:組み合わせてtop、iostatなどのツールと一緒に使用する
  4. ベンチマークテスト:システム正常時に基準データを記録し、異常時の比較に役立てます

よくある質問と回答

Q1: vmstat と top コマンドの違いは何ですか?

  • topプロセスレベルの詳細情報を提供します
  • vmstatシステム全体のリソース使用状況の概要を提供します

Q2: si/so の値が非常に高い場合、何を意味しますか?

システムが頻繁にスワップ領域を使用していることを示しており、物理メモリが不足している可能性があります。メモリの追加またはアプリケーションのメモリ使用量の最適化を推奨します。

Q3: 特定のディスクを監視するにはどうすればよいですか?

使用して-pパラメータでディスクパーティションを指定します:

例

vmstat -p /dev/sda1

vmstat コマンドを習得することで、Linux システムのパフォーマンスボトルネックを迅速に診断し、システム最適化のためのデータサポートを得ることができます。実際の運用では、他の監視ツールと組み合わせて使用し、より包括的なシステムパフォーマンスビューを取得することをお勧めします。

Linux コマンド大全

その他の拡張