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