Linux vmstat コマンド
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 操作を待機していることを示します
ベストプラクティスに関する提案
- 監視間隔の選択:本番環境では 5〜10 秒間隔を推奨し、システムパフォーマンスへの影響を避けます
- 長期的な監視:組み合わせて
nohup出力をファイルにリダイレクトするnohup vmstat 10 360 > vmstat.log &
- 総合的な分析:組み合わせて
top、iostatなどのツールと一緒に使用する - ベンチマークテスト:システム正常時に基準データを記録し、異常時の比較に役立てます
よくある質問と回答
Q1: vmstat と top コマンドの違いは何ですか?
topプロセスレベルの詳細情報を提供しますvmstatシステム全体のリソース使用状況の概要を提供します
Q2: si/so の値が非常に高い場合、何を意味しますか?
システムが頻繁にスワップ領域を使用していることを示しており、物理メモリが不足している可能性があります。メモリの追加またはアプリケーションのメモリ使用量の最適化を推奨します。
Q3: 特定のディスクを監視するにはどうすればよいですか?
使用して-pパラメータでディスクパーティションを指定します:
例
vmstat -p /dev/sda1
vmstat コマンドを習得することで、Linux システムのパフォーマンスボトルネックを迅速に診断し、システム最適化のためのデータサポートを得ることができます。実際の運用では、他の監視ツールと組み合わせて使用し、より包括的なシステムパフォーマンスビューを取得することをお勧めします。
その他の拡張