3ware 9650SE-8LPML 的 stripe size 對 RAID-5 效能影響的測試

超頻的部分玩得差不多了,
接下來開始測試 RAID 卡的參數。
測試數據集中用 HD Tune 4.01 Pro 跑,
從謠言最多的 stripe size 開始測。
硬體設備如下:

RAID 卡 3ware 9650SE-8LPML (write cache enabled, without BBU)
HDD WD1001FALS x 8

3ware 提供的 stripe size 選項不多,
就 16k、64k、256k,
新版 firmware 普遍會幫你預設 256k,
但網路上看到不少人說 64k 比較好。
比較合理的講法是用途取向,
循序存取多的影音編輯就用大的,
小檔多又常需要隨機存取就選小的。
也有人提醒 stripe size 小會很操 RAID 卡上的 DSP,
可能過熱或燒掉,
總之前言大概就這些。
我只測 64k 和 256k 這兩種 stripe size,
因為 rebuild 很花時間,
所以這一測下來居然花了 10 幾小時。

以下數據左邊的圖是 stripe size = 64 KB,
右邊的圖是 stripe size = 256 KB。
HD Tune 在標準測試裡可以設定測試時寫入的 block size,
所以也重點挑了幾種 block size 各測一次。

標準測試/讀取/Block Size = 64KB:

標準測試/寫入/Block Size = 64KB:

標準測試/讀取/Block Size = 256KB:

標準測試/寫入/Block Size = 256KB:

標準測試/讀取/Block Size = 512KB:

標準測試/寫入/Block Size = 512KB:

標準測試/讀取/Block Size = 1MB:

標準測試/寫入/Block Size = 1MB:

標準測試/讀取/Block Size = 4MB:

標準測試/寫入/Block Size = 4MB:

標準測試/讀取/Block Size = 8MB:

標準測試/寫入/Block Size = 8MB:

這部份的測試結果其實很簡單,
就是 stripe size 256k 的循序讀取速度平均會比 64k 的快 50 MB/s,
寫入速度則只有快約 10 MB/s。
某些測試項目會發現 access time 會有 4 ~ 5 ms 的差異,
這個部分也是 256k 的能獲得較好的數據。

隨機存取/讀取:

隨機存取/寫入:

隨機存取的部分在 1MB 以下幾乎看不出兩種 stripe size 的效能差異。
但是在 1MB 以上的測試,
讀取時 256k 會比 64k 慢 1MB/s 左右,
而寫入時 256k 則會快約 1MB/s 左右。
因此如果是寫入動作頻繁的話,
似乎選擇大一點的 stripe size 會比較好?

額外測試/讀取:

額外測試/寫入:

讀取的部分,
隨機搜尋在 64k 時會快 9MB/s 左右,
外圈連續讀取則是 256k 的快上 94MB/s 左右。
寫入的部分,
隨機搜尋和蝶型搜索是 64k 的會快上約 1MB/s,
外圈的表現一樣是 256k 的具顯著優勢,
內圈的部分也是 256k 小贏 20MB/s 上下。

比較值得注意的地方是最下面的 cache 存取速度,
256k 的測試在寫入到 40MB 附近時 cache 的存取速度會急遽下降,
原因請自行想像。
我的想法是因為狂寫新值造成嚴重的 cache miss,
256k 又比 64k 大所以覆蓋得比較快,
而 RAID-5 又是那種每次寫入資料就要從硬碟讀 data 出來做 XOR 的架構。
以上純屬個人猜測。

檔案測試的部分我直接開 NTFS 的快速格式化整顆做下去,
格式化參數參數全部預設。

檔案測試/1MB:

檔案測試/64MB:

檔案測試/256MB:

檔案測試/512MB:

寫入的部分不知道為什麼幾乎是 0,
這表現跟軟體 RAID-5 有得拼了,
希望它只是個 HD Tune 的 bug,
或是快速格式化有在背景跑什麼我不知道的東西。

讀取的部分差異會出現在檔案大小 > 256MB 的地方,
256k 很明顯可以壓上 450 MB/s 的線,
64k 的連 400 MB/s 的線都壓不到。

雖然只測了 HD Tune Pro,
不過光看目前得到的數字,
拿這張卡用八顆硬碟組 RAID-5 的話,
我應該會選擇 stripe size = 256k 吧。