使用Driver-based RAID作一些不同Stripe Size的測試..



贊助商連結


per1
2010-12-19, 09:17 PM
我相信這類測試已有相關文章可循...
不過這次我要用ioMeter來一些比較特別的測試...
Driver-based RAID又稱Firmware-based RAID, 也有人叫fake RAID....
我們可以看下面這張圖, 這張圖是來自Adaptec by PMC的一份文件-Adaptec Hardware RAID vs Software RAID所示:
http://i666.photobucket.com/albums/vv22/per1-q1222/DriverBasedRAIDTest/hostraidstack.gif
從這張Stack圖可以發現其中Host RAID Engine指的就是RAID的相關算法...
可以理解到Host RAID Engine是被封裝在Driver裡面...
RAID的操作是當進入作業系統載入完後才進行操作...
他的優勢是..
這樣的設計不會侷限在哪種IOC下...
只要透過firmware載入相關的Option ROM用來設定有關RAID的組態和定址到某個IOC的位址...
開機進行初始化的時候會載入一個Pre-Boot選單, 用來預先設定有關RAID的組態...
真正操作是在進入OS後才進行...
較低的成本是他的優勢...
不需要額外的硬線設計成本, 例如像是Hardwate XOR Assist設計或著built-in processor實作....
當然這是要付出代價的..
1. 不當的H/W reset, 有可能導致寫入條帶不全, 毀掉VD, Hardware RAID建立在自有的RAID stack, 不當的H/W reset還是會繼續運行....
2. RAID Engine是建立在Driver裡, 可能會受到非法的例外操作導致對資料安全性造成衝擊
3. 某些RAID模式下, 會提供很低的寫入性能, 例如RAID5.
4. 有限的功能限制
5. 沒有built-in processor, 全部的相關RAID運算都要交給Host CPU操作...
大致上就是這幾點缺陷...
這次透過ioMeter測試上有主要幾點:
1. 不同Stripe Size的傳輸速度為何...
2. 不同Stripe Size對於I/O request觸發的中斷數量為何
3. 不同Stripe Size對於CPU所獲得的效益為何..

==使用環境==
IO Controller: Intel ICH10R Controller
Option ROM Version: 8.9.1.1002
Storage: Crucial C300 128GB x2 (RAID 0; 回寫快取我是強制關閉...)
CPU: Intel Xeon [email protected]

ioMeter規格設定
Queue Depth強制設成256佇列...
http://i666.photobucket.com/albums/vv22/per1-q1222/DriverBasedRAIDTest/iometer_spec.gif
這個規格方案是最大I/O讀取操作...
來看看測試結果, 小弟將它弄成一張表單:
http://i666.photobucket.com/albums/vv22/per1-q1222/DriverBasedRAIDTest/globaltest.jpg
各類折線圖情況:
這個很容易明白, 不詳述...
http://i666.photobucket.com/albums/vv22/per1-q1222/DriverBasedRAIDTest/speed.gif
超小的stripe size事實上是很爛的設定,這I/O中斷數量實在嚇死人..
http://i666.photobucket.com/albums/vv22/per1-q1222/DriverBasedRAIDTest/interrupt.gif
這是一個interrupt所需要的時間, 不表意見...
http://i666.photobucket.com/albums/vv22/per1-q1222/DriverBasedRAIDTest/interrupt_time.gif
CPU所獲取的I/O效益在64K尺寸左右下可以看到最高點...
http://i666.photobucket.com/albums/vv22/per1-q1222/DriverBasedRAIDTest/iometer_eff.gif

下面這張, 不同Stripe Size, %DPC Time, CPU使用量的一整張列表, 看不懂得可以忽略..=3=:
http://i666.photobucket.com/albums/vv22/per1-q1222/DriverBasedRAIDTest/table.jpg
DPC queue被卡在某顆CPU上...
這個問題和OS與硬體設計有關....
大量的中斷操作可能發生對於多核心系統無法分配....

大致上就這樣..
謝謝惠顧...!!

各位自行參考看看要使用怎樣大小的Stripe Size..

有時間拿Hardware RAID來檢測看看...:)

贊助商連結


tvirus
2010-12-20, 04:21 AM
Oh...這個好文
有些人習慣性就是Stripe size設到越大越好...
我是試過FreeNAS後就習慣性設32KB...
看樣子,以後可以試試64KB?
或者是...看晶片或軟體Raid及使用常態才決定?

per1
2010-12-20, 07:49 AM
"或者是...看晶片或軟體Raid及使用常態才決定? "
Host-RAID Engine算法去決定...
不同的Stripe Size應用上也不同....

不過Hardware RAID跟第一樓的測試是完全兩回事...
這點要稍微注意!!...

由於是SSD的關係...
我認為這測試還是不夠嚴謹...
還要加入其他測試項目重用一次...