32ビットCentOS 6.2で実行しているアプリケーションのIOPS要件を推定しようとしています。 SATAディスクを搭載したマシンで測定を開始しましたが、sarによって測定されたIOPSとtpsの違いにかなり混乱しています。
wikipedia によると、SATAディスクは75-100 IOPSを実行する必要があります。 iopingユーティリティ はランダムアクセステストでこれを確認するようです:
# ./ioping -R /dev/sda
--- /dev/sda (device 931.0 Gb) ioping statistics ---
279 requests completed in 3.0 s, 92 iops, 371.3 kb/s
min/avg/max/mdev = 2.7 ms / 10.8 ms / 130.8 ms / 7.9 ms
しかし、sarによって生成されるtps値ははるかに高くなります(/ dev/sda)。
# iostat 1
avg-cpu: %user %Nice %system %iowait %steal %idle
0.17 0.00 2.02 14.86 0.00 82.96
Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
sda 559.00 0.00 142600.00 0 142600
dm-0 18433.00 0.00 147464.00 0 147464
dm-1 0.00 0.00 0.00 0 0
dm-2 0.00 0.00 0.00 0 0
このロードがシーケンシャル(さまざまなブロックサイズのdd)であるかランダムアクセス(ioping)であるかは問題ではありませんが、値は同じです。 tpsは実際にはIOPSであり、転送された大きなチャンクでそれが下がると予想します。
では、tps値は正確にはどういう意味ですか?そして、それはIOPSとどのように関連していますか?
トランザクションは、RAWディスク(例ではdm-0)に書き込まれる単一のIOコマンド(ブロックのフェッチ/ブロックの書き込み)です。 linux-kernelは、これらのコマンドをより良いシーケンスに並べようとするか、それらをより効率的なコマンドに圧縮しようとします(例:1つのブロックを取得する代わりに2つのブロックを取得し、直後に別のブロックを取得する)。これらは、ディスクコントローラー(sdaのtps)に送信されるトランザクションです。
適切なコントローラーの移行には、トランザクションの実際の数をさらに削減する独自のロジックがあります。
トランザクションはSCSIコマンドである可能性があります。「セクター22から開始して、2 GBをcrontoller 1ターゲット2 lun 3に書き込みます。ご覧のとおり、これをスループット数と直接相関させることはできません。
あなたが求めているのは、持続的な書き込み速度です。ここにはいくつかの制限要因があります。
あなたのシステムに対する私の推測は、RAID 10または5を実行できる優れたハードウェアRAIDコントローラを入手し、少なくとも6つの高速(15k)ディスクを入手することです。
業務用には、SATAの代わりにSASを使用してください。
TPS
値は読み取りと書き込みを表すことにも注意してください。読み取りと書き込みが分離されている拡張ビューには-x
スイッチを使用できます(r/s =読み取りIOPS、w/s =書き込みIOPS) :
Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util
vda 0.07 24.65 0.30 18.95 30.65 330.22 18.74 0.07 3.61 0.98 1.89