iostatとは
「I/O statics」の略称
iostatコマンドを使って、ディスク毎のI/O統計を集計して ディスクI/Oの使用率・飽和度を示す指標をみることができます。
利用シーンとしては、主にディスクI/O関連の調査を行う場合に使われます。
主なオプション
iostatを実行する際の主なオプションは以下のとおりです。
オプション | 説明 |
---|---|
-c | cpu統計を表示 |
-d | ディスク統計を表示 |
-k | 表示サイズ変更 ブロック数(512バイト)→ kb |
-m | 表示サイズ変更 ブロック数(512バイト)→ mb |
-p | 使用されているブロックデバイスと、そのパーティション毎の統計を表示する |
-x | 通常項目に加え、いくつかの拡張統計を表示する |
デフォルトでは、 -c -dが有効になっていて、cpu統計・ディスク統計を見ることができます。
具体的には以下のような感じで各統計データを見ることができます。
$ iostat Linux 2.6.32-431.17.1.el6.x86_64 _x86_64_ (2 CPU) #cpu統計 avg-cpu: %user %nice %system %iowait %steal %idle 0.02 0.00 0.02 0.03 0.00 99.92 #ディスク統計 Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn vda 0.46 2.63 9.55 2239142 8134170 vdb 0.00 0.00 0.00 1754 8 dm-0 1.27 2.61 9.47 2221322 8069280 dm-1 0.00 0.01 0.01 6288 6392
各項目の値の示す意味はman iostatで調べることができるので詳細を知りたい場合は読んでみると良いかもです。
ディスク統計の方の各項目について説明すると以下の通りになります。
項目 | 説明 |
---|---|
tps | 秒間あたりのトランザクション数 |
Blk_read/s Blk_write/s | 秒間あたりに(read | write)されたブロック数 |
Blk_read Blk_write | read | writeの合計数 |
ブロック数の単位を変えたい場合は -m -kオプションを使って変えることができます。
-x オプションをつかって詳細なI/O統計を表示させる
iostat実行時に-xオプションを付けることで、より詳細なディスクの統計データを表示できます。
# ディスクの詳細な統計データを表示 $ iostat -dx Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await r_await w_await svctm %util vda 0.01 0.87 0.06 0.41 2.62 9.52 26.17 0.00 6.71 2.31 7.30 1.71 0.08 vdb 0.00 0.00 0.00 0.00 0.00 0.00 8.39 0.00 1.22 1.00 49.00 1.22 0.00 dm-0 0.00 0.00 0.06 1.21 2.60 9.44 9.50 0.10 75.09 2.88 78.71 0.63 0.08 dm-1 0.00 0.00 0.00 0.00 0.01 0.01 8.00 0.00 45.32 2.91 87.04 0.90 0.00
項目 | 説明 |
---|---|
rrqm/s | 秒間あたりに読み込みキューに登録され、マージされた読み出し要求数 |
wrqm/s | 秒間あたりに読み込みキューに登録され、マージされた書き込み要求数 |
r/s | 秒間あたりにディスクデバイスに発行された読み出し要求数 |
w/s | 秒間あたりにディスクデバイスに発行された読み出し要求数 |
rsec/s | 秒間あたりにディスクデバイスから読み出されたセクタ数 |
wsec/s | 秒間あたりにディスクデバイスから書き込まれたセクタ数 |
await | I/O応答平均時間(ミリ秒) ドライバの要求キーで待っている時間と実際のI/O応答時間を合わせたもの |
r_await | awaitデータの読み込み処理のみのデータ(ミリ秒) |
w_await | awaitデータの書き込み処理のみのデータ(ミリ秒) |
%util | デバイスがI/O処理をしていたことによるビジー状態の時間の割合(使用率) |
この中で、もっとも重要な指標は awaitで、要求が発行されてからI/Oの応答が終わるまでの時間を表すものです。
%utilも重要な指標ですが、あくまでビジー状況の計測値を表すもので、複数ディスクからなる仮想デバイス環境ではあまり参考にならない指標と言われています。
rrqm/s と wrqm/sの値は、パフォーマンス向上のために、複数の読み込み・書き込み要求が1つにマージされていることを表す指標で、
シーケンシャルなワークロードが処理された兆候を表します。
参考
Understanding iostat (Example)
https://stackoverflow.com/questions/4458183/how-the-util-of-iostat-is-computed