dstatコマンドで覚えておきたい使い方6個

Linuxなどでパフォーマンスのモニタリングを行うコマンドといえば、vmstatやtopなどいくつかあるが、その中でも比較的情報が見やすいのが、このdstatコマンドだ。
今回は、このdstatコマンドで覚えておきたい使い方についてを紹介する。

1.基本的な使い方

基本的には、得たい情報に合わせてオプションを指定して実行してやる。
もちろん、オプションなしでもそれなりの情報を得ることができる。

bash
dstat

それぞれのオプションを指定して得られる情報は以下の通り。
なお、オプションは指定された順番に左から表示されていくので、指定する順番も重要だ。

  • -t … システム時間を表示する
  • -c … CPU使用時間の割合を表示する
    • usr … ユーザ空間で使われたCPU使用時間の割合
    • sys … システム空間で使われたCPU仕様時間の割合
    • idl … アイドル状態のCPU時間の割合
    • wai … 応答の待ち状態にあったCPU時間の割合
    • hiq … ハードウェア割り込み処理に使われたCPU時間の割合
    • siq … ソフトウェア割り込み処理に使われたCPU時間の割合
  • -m … メモリの利用状態を表示する
    • used … 物理メモリ全体での使用容量
    • buff … バッファキャッシュで使っているメモリ使用容量
    • cach … ページキャッシュからバッファキャッシュを引いたメモリ使用容量
    • free … 未使用のメモリ使用容量
  • --vm … バーチャルメモリの利用状態を表示する
    • majpf … 物理メモリ上に該当データがロードされなかった回数
    • minpf … 物理メモリに該当データがロードされた回数
    • alloc … 空きメモリを探して割り当てた回数
    • free … メモリを解放した回数
  • -s … スワップの利用状態を表示する
    • used … スワップ全体での使用容量
    • free … 未使用のスワップ容量
  • -g … ページの入出力数を表示する
    • in … ディスクからメモリに読み込んだバイト数
    • out … メモリ不足時にディスクに書き出したバイト数
  • -d … ディスクの利用状態を表示する
    • read … ディスクの読み込みバイト数
    • writ … ディスクの書き込みバイト数
  • -r … ディスクへの読み書きリクエスト数(IOPS)
    • read … ディスクの読み込みリクエスト数
    • writ … ディスクの書き込みリクエスト数
  • -i … 割り込み処理の状態を表示する
    • interrupts … 実行待ちのプロセス数
  • -l … ロードアベレージの状態を表示する
    • 1m … 1分平均でのCPU時間の利用割合
    • 5m … 5分平均でのCPU時間の利用割合
    • 15m … 15分平均でのCPU時間の利用割合
  • -p … プロセスの状態を表示する
    • run … 実行中プロセス数
    • blk … ブロック中のプロセス数
    • new … 新しく実行されたプロセス数
  • -y … システム状態を表示する
    • int … 割り込み回数
    • csw … コンテキストスイッチの回数
  • --lock … ファイルロックの状態を表示する
    • pos … posixロック数
    • lck … flockロック数
    • rea … 読み込みロック数
    • wri … 書き込みロック数
  • -n … ネットワーク状態を表示する
    • recv … ネットワーク全体での受信データ容量
    • send … ネットワーク全体での送信データ容量
  • --ipc … プロセス間通信の状態を表示する
    • msg … メッセージキュー
    • sem … セマフォ
    • shm … 共有メモリセグメント
  • --unix … UNIXドメインのソケット状態を表示する
    • dgm … Datagram通信の件数
    • str … Stream通信の件数
    • lis … listenな通信の件数
    • act … activeな通信の件数
  • --tcp … TCP通信のバイト数を表示する
    • lis … 待ちうけ状態の数
    • act … ACTIVE状態の数
    • syn … SYN状態の数
    • tim … TIME_WAIT状態の数
    • clo … CLOSE状態の数
  • --udp … UDP通信のバイト数を表示
    • lis … 待ちうけ状態の数
    • act … ACTIVE状態の数
  • -a … デフォルト。「-cdngy」の内容が出力される
  • -f … 「-C,-D,-I,-N,-S」をすべて表示する
  • -v … vmstatコマンドと同じように表示する

2.表示の更新間隔・回数を指定する

dstatで表示の更新間隔・回数を指定する場合は、vmstatと同じようにコマンドの後ろに値をいれてやればいい。

bash
dstat [オプション] 更新間隔[ 回数]
shell
[root@BS-PUB-CENT7-01 uchardet]# dstat -ta 10 5 ----system---- ----total-cpu-usage---- -dsk/total- -net/total- ---paging-- ---system-- time |usr sys idl wai hiq siq| read writ| recv send| in out | int csw 12-06 16:19:42| 0 0 100 0 0 0| 152B 246B| 0 0 | 0 0 | 10 13 12-06 16:19:52| 0 0 100 0 0 0| 0 0 | 69B 470B| 0 0 | 14 16 12-06 16:20:02| 0 0 100 0 0 0| 0 0 | 60B 408B| 0 0 | 14 16 12-06 16:20:12| 0 0 100 0 0 0| 0 0 | 96B 408B| 0 0 | 14 15 12-06 16:20:22| 0 0 100 0 0 0| 0 0 | 66B 408B| 0 0 | 13 14 12-06 16:20:32| 0 0 100 0 0 0| 0 0 | 132B 414B| 0 0 | 14 15

なお、このとき中間更新として、下の画面のように1秒ごとの情報が薄く表示されるようになっている。

これを表示させないようにするには、「--noupdate」オプションを付与すればよい。

3.モニタリングデータをCSVとしてファイルに出力する

モニタリングデータをCSVとして出力させたい場合は、以下のように「--output」オプションを付与することで指定したファイルPATHへCSVファイルとして出力させることができる。
なお、ファイル出力中でもコンソール上はデータが出力されていく。ファイルへの書き込みは追記モードで行われるので、既存のファイルを指定しても消えないから大丈夫だ。

bash
dstat --output ファイルPATH

4.ヘッダーの表示を一回きりにする

dstatは、そのままだとヘッダーが画面から消えないよう、定期的に再出力される。
これを非表示にする場合は、オプションで「--noheaders」を付与する。

bash
dstat --noheaders

5.表示する数字の整数・小数点表示を指定する

表示するデータを整数か、小数点ありの数字にするかを指定するには、整数の場合は「--integer」を、少数点を含む場合は「--float」オプションを付与する。

bash
dstat --integer # 整数の場合 dstat --float # 小数点を含める場合

6.IOPSを調べる

IOPSを調べる場合は、「-r」で出力される情報を足してやればよい。
例えば、awkで足す場合は以下のようにする。

bash
dstat -tr | awk -F '|' 'NR>2{split($2,arr," ");sum=arr[1]+arr[2];print $0,sum}'
shell
[root@BS-PUB-CENT7-01 ~]# dstat -tr | awk -F '|' 'NR>2{split($2,arr," ");sum=arr[1]+arr[2];print $0,sum}' 12-06 17:46:59|0.01 0.02 0.03 12-06 17:47:00| 0 31.0 31 12-06 17:47:01| 0 31.0 31 12-06 17:47:02| 0 35.0 35