iostat -xで出力される項目のうち、rrqm/s、wrqm/sとr/s、w/sは、一秒間のI/Oリクエスト数を表示している。
システムへの負荷を確認するという目的でどちらの項目を重視すべきかは、それぞれの表示の違いを把握する必要がある。
- r/s、w/sは一秒間に発行したリード/ライト・リクエストの数
- rrqm/s、wrqm/sは一秒間にマージされたリード/ライト・リクエストの数
LinuxはI/O性能を高めるため複数のI/OオペレーションをまとめてI/O装置に発行する。ディスクシークに時間がかかるから、リクエストをマージしてディスクにコマンドを送っているのだ。
ということは、プログラムが呼び出しているリクエスト数の論理的数値はr/s、w/sとなるが、実際の物理的なリクエスト数は、まとめられたオペレーションのrequest/secを表しているrrqm/s、wrqm/sとなる。
システムへの負荷を確認するという目的では、物理的なリクエスト数をみるべきなので、rrqm/s、wrqm/sを重視すべきとなる。
他の項目としてrkB/s、wkB/sがあるが、こちらは以下の内容を表示している。
- 一秒間に発行したリード/ライト・リクエストが読み書きに成功したkB数
システムへの負荷を確認するという目的では、各リクエストの大きさも必要となってくるので、rkB/s、wkB/sも有用な項目となる。
iostat -x 1
で毎秒の負荷を確認する方法としては、
- まず、%utilでI/OリクエストにCPU時間の何パーセントを割いているかを見て、そもそもI/O負荷が高いかどうかを把握
- rrqm/s、wrqm/sでリード/ライトのリクエスト数を確認
- rkB/s、wkB/sでリクエストのサイズを確認
という手順がいいだろう。