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

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

1.基本的な使い方

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

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と同じようにコマンドの後ろに値をいれてやればいい。

dstat [オプション] 更新間隔[ 回数]
[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ファイルとして出力させることができる。
なお、ファイル出力中でもコンソール上はデータが出力されていく。ファイルへの書き込みは追記モードで行われるので、既存のファイルを指定しても消えないから大丈夫だ。

dstat --output ファイルPATH

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

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

dstat --noheaders

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

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

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

6.IOPSを調べる

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

dstat -tr | awk -F '|' 'NR>2{split($2,arr," ");sum=arr[1]+arr[2];print $0,sum}'
[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