Linux の dstat コマンド は、CPU・メモリ・ディスク I/O・ネットワークなどのシステムリソースの使用状況をリアルタイムに表示するツールです。
従来の vmstat、iostat、netstat などの機能をまとめて置き換えることを目的としており、負荷調査や性能チューニングの際によく使われます。
インタラクティブな top と違い、一定間隔でメトリクスを行単位で出力していくスタイルなので、
ログに保存してあとからグラフ化したり、特定の時間帯のボトルネックを確認したりするときに便利です。
dstat [オプション] [間隔 [回数]]
間隔と回数を指定しない場合は、1 秒間隔で無限に出力を続けます(Ctrl + C で停止)。
例えば dstat 5 10 のように指定すると、5 秒間隔で 10 回分の統計情報を取得します。
・CPU・ディスク・ネットワーク・ページングなどをまとめて表示する(デフォルト)。
dstat
オプションなしの dstat は、CPU 使用率、ディスク I/O、ネットワーク I/O、ページング、システムコールなどを
1 秒ごとにまとめて表示します。障害調査の入口としてざっくり全体を見るのに向いています。
・CPU とディスク I/O のみを 5 秒間隔で 10 回表示する。
dstat -cd 5 10
-c は CPU、-d はディスク I/O を表示するオプションです。
指定した 2 つのメトリクスに絞って5 秒間隔で 10 行分のデータを取得します。
「CPU が頭打ちなのか、ディスク待ちなのか」を切り分けたいときに便利です。
・ネットワーク I/O とディスク I/O を確認する。
dstat -nd
-n はネットワーク I/O(受信・送信バイト)、-d はディスク I/O を表示します。
「外部から大量にアクセスが来ているのか」「ストレージへの書き込みが詰まっているのか」を見たいときに使えます。
・メモリとスワップの使用状況に絞って表示する。
dstat -m -s
-m はメモリ使用量、-s はスワップの使用量と I/O を表示します。
メモリ不足やスワップアウトが発生していないかを確認したいときに役立ちます。
・CPU の詳細な内訳(ユーザー/システム/アイドルなど)を表示する。
dstat -c --top-cpu
–top-cpu を付けると、最も CPU を消費しているプロセスも表示されます。
「どのプロセスが CPU を食っているのか」を素早く特定したいときに便利です。
・メモリ消費が大きいプロセスを確認する。
dstat -m --top-mem
–top-mem は、メモリ使用量の多いプロセスを表示します。
リークしていそうなプロセスや、急激にメモリを消費し始めたプロセスを探す際のヒントになります。
・出力を CSV 形式でファイルに保存する。
dstat -cdngym --output /tmp/dstat.csv 5 60
–output オプションを使うと、dstat の出力を CSV ファイルに保存できます。
この例では CPU・ディスク・ネットワーク・ページング・メモリを 5 秒間隔で 60 回(5 分間)計測し、
/tmp/dstat.csv に書き出します。あとから Excel やグラフ化ツールで可視化するのに向いています。
・ディスク I/O 詳細(デバイスごと)を表示する。
dstat -D sda,sdb 5
-D でデバイス名を指定すると、そのディスクの I/O 統計を表示します。
特定のディスクだけが高負荷になっていないか、どのディスクがボトルネックになっているかを確認できます。
・ロードアベレージと CPU をあわせて確認する。
dstat -cl
-l はロードアベレージ(実行待ちプロセス数の平均)を表示します。
CPU 使用率とロードアベレージを同時に確認することで、
「CPU は余裕があるのにロードだけ高い」などの状況を把握できます。
・サーバ負荷が高いときのボトルネック調査
「レスポンスが遅い」「CPU 使用率が高い気がする」といったとき、dstat で CPU・メモリ・ディスク・ネットワークを
同じタイムラインで観察することで、どこがネックになっているかを素早く推測できます。
・ピーク時間帯の挙動確認
アクセスが集中する時間帯に、dstat --output で数十分〜数時間分のメトリクスを収集し、
後からグラフ化することで、ピーク時の負荷状況を詳しく分析できます。
・リリースや設定変更時の影響確認
アプリケーションのアップデートや設定変更を行った直後に dstat を動かすことで、
CPU やディスク I/O に明らかな変化がないかをチェックできます。
・vmstat / iostat / netstat の代わりとして
個別のコマンドを何度も打ち分ける代わりに、dstat で一度に主要なメトリクスを見られるため、
現場での「とりあえずこれで全体を眺める」ツールとして採用しやすいです。
| short option | long option | description | |
|---|---|---|---|
| -a | よく使う統計情報をまとめて表示する(CPU・ディスク・ネットワーク・ページング・システムなどを一括表示) | ||
| -c | CPU 使用率を表示する(user/system/idle など) | ||
| -C | --cpu | 特定の CPU コアの統計情報を表示する(例: -C 0 | 1) |
| -d | ディスク I/O の統計情報を表示する | ||
| -D | --disk | 特定のディスクデバイスの I/O 統計情報を表示する(例: -D sda | sdb) |
| -n | ネットワーク I/O の統計情報を表示する | ||
| -N | --net | 特定のネットワークインターフェースの統計情報を表示する(例: -N eth0 | eth1) |
| -m | メモリ使用量の統計情報を表示する | ||
| -s | スワップ使用量およびスワップ I/O の統計情報を表示する | ||
| -l | ロードアベレージを表示する | ||
| -g | ページング(ページイン・ページアウト)の統計情報を表示する | ||
| -p | プロセス関連の統計情報を表示する(プロセス生成・コンテキストスイッチなど) | ||
| -t | 各行に経過時間(タイムスタンプ)列を追加して表示する | ||
| -y | システム関連の統計情報を表示する(割り込みなど) | ||
| --top-cpu | CPU 使用率が高いプロセス上位を表示する | ||
| --top-mem | メモリ使用量が多いプロセス上位を表示する | ||
| --output | 出力を CSV 形式でファイルに保存する(例: --output /tmp/dstat.csv) | ||
| --nocolor | カラー表示を無効にしてモノクロ出力にする | ||
| --noheaders | ヘッダ行を表示しない | ||
| -h | --help | dstat コマンドの使い方(ヘルプ)を表示して終了する | |
| -V | --version | dstat コマンドのバージョン情報を表示して終了する |
ここでは、dstat コマンドでよく使う主なオプションを TablePress の表にまとめています。
CPU・メモリ・ディスク・ネットワークなど、必要な項目だけを選んで表示できるのが特徴です。
より詳細なオプションやプラグインについては、Linux の
dstat --help やマニュアル、配布サイトのドキュメントもあわせて参照してください。
新着情報
ブログランキングに参加しています。クリックして応援していただけると嬉しいです。
