ディスクのレイテンシやスループットの取得方法

お世話になります。

タイトルの通りなのですが、ディスクのレイテンシ(待ち時間)とスループットを取得する方法はございませんでしょうか?
色々調べてはいるのですが、それらしき方法が見つからずに困っております・・・。

簡素な内容で申し訳ないですが、何卒ご教授頂ければと存じます。

コメント表示オプション

お好みのコメント表示方法を選び「設定の保存」をクリックすると変更が反映されます。

広瀬です

すでに調べられているとは思いますが、ディスクの性能に関して取得可能な
アイテムキーは現状だと、

vfs.dev.read[device,<type>,<mode>]
vfs.dev.write[device,<type>,<mode>]

の2種です。typeに指定可能なのはsectors、operations、bytes、sps、ops、bps
のいずれかになります(OSにより取得可・不可がまだ存在します)。

アイテムキーの具体的な利用については、以下をご参照ください

http://www.zabbix.com/documentation/jp/1.8/manual/config/items

Windows系はそもそもこのパラメータ自体、すべてNGですので、性能指標を取る
ことは、そもそも論無理だということになります。

当然ですが、これはご希望のレイテンシやスループットを計測するためのものでは
ありませんので、上記に当てはまらないとなると別な手法(レイテンシなどを取得する
別プログラムやシェル)から値を取得するなどでは無いと対応は出来ないと思います。

・UserParameterを使う
・senderを使う

で、値を送る事はできます。前者の場合にはエージェントのタイムアウトが影響して
くるため、取得に時間の掛かる処理の場合にはsenderを利用されることをおすすめ
いたします。

単純なI/Oベンチ系であれば、bonnie++ とか?(hdparm/sar/iotopなどなど・・・)その
辺活用するかどうかだとは思いますが、ご希望のものとは違う気がします・・・。

ユーザー ortan の写真

ありがとうございます。

UserParameter辺りで受け取りしようかなと思います。

しかし、恥ずかしながらLinuxでレイテンシ等を取得する方法が分からないです(・_・;

広瀬様の書き込みを見る限り、デフォルトのLinuxで取得出来る値ではなく、書かれているような物を利用しない限り
取得は出来ないと捉えてよろしいのでしょうか?

広瀬です。

> デフォルトのLinuxで取得出来る値ではなく、書かれているような物を利用しない限り
> 取得は出来ないと捉えてよろしいのでしょうか?

本家のマニュアルにはvfs.dev.read、vfs.dev.writeの各Typeの細かい記載されていなかったので、
細かい定義まで確認していませんでしたが、過去ログに当該キーの意味について情報がありました

http://www.zabbix.jp/node/1114

sectors:マシン内で記録を開始してから今まで累積で読み書きされた「セクタ数」
operations:マシン内で記録を開始してから今まで累積で読み書きされた「回数」
bytes:マシン内で記録を開始してから今まで累積で読み書きされた「バイト数」
sps:「sectors」の秒間平均版(1秒間に増加した値?)
ops:「operations」の秒間平均版(1秒間に増加した値?)
bps:「bytes」の秒間平均版(1秒間に増加した値?)

とありました・・・。

spsなら、sectorsの秒間のアベレージって事なので、sector/secって事ですね。
1秒間に読み込み、または書き込みされた平均値・・・でしょうか(さらにmode
オプションがどう絡むのかが不明ですが・・・)。

細かい意味での「ディスクのレイテンシ」の正確な意味は私も存じ上げないのですが、広義
の意味では、所謂シークタイムなのだろうと思います<ご存じな方、訂正お願いします

もし、シークタイムという意味であれば、上記のアイテムキー等の場合には意味が違う事は
お解りになるかと思いますので、利用したところで意味はないですよね。
・・・となると、やはりZABBIXが標準で用意しているアイテムキーでは現時点では無理だろ
うと言う事です。

なお、私もLinuxでディスクのレイテンシを取る方法は存じ上げません(・・・というかWinでも
判りません・・・汗)。
スループットに関して言えば、hdparmでリード性能を、ddコマンドでライト性能を定期的に
計算した結果から割り出せなくは無いとは思います。ただし、これらのコマンド処理結果を
UserParamterでやるとタイムアウトでコケそうなので、Senderの方がオススメです。

http://hesonogoma.com/linux/HardDiskPerformance.html

この辺、参考にはなるのではないでしょうか?

※本番環境ではこれらを監視対象にするのは、NGだと思います。負荷掛かっているところ
 に更に意味無く負荷を掛けるだけに過ぎません(こっちはあくまでも自論です)

※どんなコマンド・ツールにしてもそうですが、性能系取得する際にはキャッシュ効果が働い
 てしまうため、初回と2回目以降の結果、またSWAPが発生している状況下では大幅な差
 が出るかと思います。

以上です。

ユーザー kodai の写真

個人的な経験ですと、Linuxでレイテンシを監視されている事例はあまり聞いたことがないですね。。。I/O周りはLinuxカーネルの仕事になると思うので、/proc以下にレイテンシに関する値がなければ監視は難しいと思います。

スループットについてはhdparmを使えばディスクの書き込み速度は出ると思いますが、ディスク自体の書き込み性能測定になってしまう気がするので、これも定常的に監視をすべき値とは少し違う気がします。

通常はロードアベレージとCPU使用率のiowait時間を参照してI/Oにかかっている負荷を見たり、vfs.dev.read/writeのキーを使って実際に書き込み/読み込みを行ったデータの推移を見るのが一般的かと思います。

ユーザー ortan の写真

色々なご意見ありがとうございます。

やはりあまり無い事ですよね・・・
レイテンシの方はiowaitの%を設定し、スループットは何をもってそのスループットにするか分からないので
無しにしてもらいました。