リクエストがあったのでやってみた。
#お題
2Uサーバーでよくある2.5"x24本と3.5"x12のどちらのシャーシを使って、どんなディスク構成すれば容量を性能を両立させられるのか?
社内の検証環境で10000rpm SAS x8本 RAID5(7D+1P)と 7200rpm SATA x8本 RAID1x4セット で性能の傾向や差はいかほどか比べてみた。
RAIDコントローラのキャッシュは2GB、READもWRITEもキャッシュは有効にしてある。
DataCore SANsymphonyでディスクプール化して、仮想ディスクを自身でループバックマウントした。
DataCoreのキャッシュサイズは20GB、WriteSizeStopは0(無制限)。
IOメーターでリピートするとキャッシュがあふれるたびに波打つためどこで止めるかで結果が大きく異なってしまうので、あえてシンプルにCrystalDiskMarkにし、サイズはRAIDコントローラーのキャッシュを十分に上回る8GBでテストした。
#試行回数:5回の場合
まずはデフォルトの5回から。
##SAS RAID5
Sequential Read (Q= 32,T= 1) : 2906.199 MB/s
Sequential Write (Q= 32,T= 1) : 2841.900 MB/s
Random Read 4KiB (Q= 8,T= 8) : 526.660 MB/s [ 128579.1 IOPS]
Random Write 4KiB (Q= 8,T= 8) : 177.368 MB/s [ 43302.7 IOPS]
Random Read 4KiB (Q= 32,T= 1) : 488.980 MB/s [ 119379.9 IOPS]
Random Write 4KiB (Q= 32,T= 1) : 130.923 MB/s [ 31963.6 IOPS]
Random Read 4KiB (Q= 1,T= 1) : 115.736 MB/s [ 28255.9 IOPS]
Random Write 4KiB (Q= 1,T= 1) : 47.673 MB/s [ 11638.9 IOPS]
Test : 8192 MiB [H: 8.0% (0.8/10.0 GiB)] (x5) [Interval=5 sec]
Sequential Read (Q= 32,T= 1) : 2988.810 MB/s
Sequential Write (Q= 32,T= 1) : 2192.312 MB/s
Random Read 4KiB (Q= 8,T= 8) : 582.244 MB/s [ 142149.4 IOPS]
Random Write 4KiB (Q= 8,T= 8) : 213.105 MB/s [ 52027.6 IOPS]
Random Read 4KiB (Q= 32,T= 1) : 431.919 MB/s [ 105449.0 IOPS]
Random Write 4KiB (Q= 32,T= 1) : 170.303 MB/s [ 41577.9 IOPS]
Random Read 4KiB (Q= 1,T= 1) : 117.186 MB/s [ 28609.9 IOPS]
Random Write 4KiB (Q= 1,T= 1) : 37.143 MB/s [ 9068.1 IOPS]
Test : 8192 MiB [G: 8.0% (0.8/10.0 GiB)] (x5) [Interval=5 sec]
###結果
READは5回繰り返すことでほぼキャッシュでの応答になってしまうのでほぼ性能差は少ない。
肝心のWRITEはシーケンシャルならSAS RAID5だがランダムアクセスはRAID1x4の方が早い。
回転数よりRAIDの方が影響が大きいようだ。
#試行回数:1回の場合
キャッシュの影響が少ない1回で試してみた。
Sequential Read (Q= 32,T= 1) : 2868.212 MB/s
Sequential Write (Q= 32,T= 1) : 403.015 MB/s
Random Read 4KiB (Q= 8,T= 8) : 440.903 MB/s [ 107642.3 IOPS]
Random Write 4KiB (Q= 8,T= 8) : 59.464 MB/s [ 14517.6 IOPS]
Random Read 4KiB (Q= 32,T= 1) : 488.658 MB/s [ 119301.3 IOPS]
Random Write 4KiB (Q= 32,T= 1) : 143.197 MB/s [ 34960.2 IOPS]
Random Read 4KiB (Q= 1,T= 1) : 109.576 MB/s [ 26752.0 IOPS]
Random Write 4KiB (Q= 1,T= 1) : 23.078 MB/s [ 5634.3 IOPS]
Test : 8192 MiB [H: 8.0% (0.8/10.0 GiB)] (x1) [Interval=5 sec]
Sequential Read (Q= 32,T= 1) : 2907.148 MB/s
Sequential Write (Q= 32,T= 1) : 2146.498 MB/s
Random Read 4KiB (Q= 8,T= 8) : 566.541 MB/s [ 138315.7 IOPS]
Random Write 4KiB (Q= 8,T= 8) : 182.481 MB/s [ 44551.0 IOPS]
Random Read 4KiB (Q= 32,T= 1) : 416.643 MB/s [ 101719.5 IOPS]
Random Write 4KiB (Q= 32,T= 1) : 165.086 MB/s [ 40304.2 IOPS]
Random Read 4KiB (Q= 1,T= 1) : 115.293 MB/s [ 28147.7 IOPS]
Random Write 4KiB (Q= 1,T= 1) : 37.514 MB/s [ 9158.7 IOPS]
Test : 8192 MiB [G: 8.0% (0.8/10.0 GiB)] (x1) [Interval=5 sec]
###結果
1スレッドのREAD以外はどれもSATA RAID1の方が早い。複数スレッドになるとバックエンドが4個ある方が有利だからだと思う。
Writeは回転数の優位性よりもRAID5のパリティ計算が相当不利に働いているようだ。
##Write-through で試行回数:1回の場合
よりディスクの性能差がわかるようにDataCoreの仮想ディスクをライトスルーにして比較してみた。
Sequential Read (Q= 32,T= 1) : 2868.914 MB/s
Sequential Write (Q= 32,T= 1) : 1031.095 MB/s
Random Read 4KiB (Q= 8,T= 8) : 508.260 MB/s [ 124086.9 IOPS]
Random Write 4KiB (Q= 8,T= 8) : 41.311 MB/s [ 10085.7 IOPS]
Random Read 4KiB (Q= 32,T= 1) : 432.336 MB/s [ 105550.8 IOPS]
Random Write 4KiB (Q= 32,T= 1) : 24.825 MB/s [ 6060.8 IOPS]
Random Read 4KiB (Q= 1,T= 1) : 108.526 MB/s [ 26495.6 IOPS]
Random Write 4KiB (Q= 1,T= 1) : 28.844 MB/s [ 7042.0 IOPS]
Test : 8192 MiB [H: 8.0% (0.8/10.0 GiB)] (x1) [Interval=5 sec]
Sequential Read (Q= 32,T= 1) : 2949.803 MB/s
Sequential Write (Q= 32,T= 1) : 363.674 MB/s
Random Read 4KiB (Q= 8,T= 8) : 567.970 MB/s [ 138664.6 IOPS]
Random Write 4KiB (Q= 8,T= 8) : 24.014 MB/s [ 5862.8 IOPS]
Random Read 4KiB (Q= 32,T= 1) : 425.995 MB/s [ 104002.7 IOPS]
Random Write 4KiB (Q= 32,T= 1) : 29.186 MB/s [ 7125.5 IOPS]
Random Read 4KiB (Q= 1,T= 1) : 117.259 MB/s [ 28627.7 IOPS]
Random Write 4KiB (Q= 1,T= 1) : 24.750 MB/s [ 6042.5 IOPS]
Test : 8192 MiB [G: 8.0% (0.8/10.0 GiB)] (x1) [Interval=5 sec]
###結果
シーケンシャルライトが遅いのはSAU(チャンク)サイズが4MBと荒すぎるからラウンドロビンが効率よくできてないと思われる。
ランダムライトが(Q= 8,T= 8)で下回って、(Q= 32,T= 1)で上回ったのはなんでだろう。それらしい理由がすぐには浮かばない…
#結論
READではあんまり差がでないし、同じ容量を作るなら3.5"の大容量HDDでRAID1をいっぱい作った方がいいんじゃないか。
ほんとか?自分で書いてて疑わしい。
というわけでその2に続く。→ https://qiita.com/tsurun/items/88cdddc64539eaff2e5d