引言:讀IOPS翻倍的原因相對簡單,但寫IOPS暴增似乎也是有代價的。MegaRAID 9600的算法會不會改用糾删碼了?
背景閱讀
《》(第二代Tri-Mode )
《》
《》(第一代Tri-Mode )
《》(6年前的Roadmap)
昨天看到消息,Broadcom(原LSI)的新一代24Gb/s(SAS)PCIe 4.0存儲産品家族釋出了,即第3代Tri-Mode三模NVMe/SAS/SATA MegaRAID和eHBA卡等,還有SAS Expander晶片。
從上圖中至少可以先看出兩點:1、本次有PCIe x16插槽的闆卡;2、有提供總共24個内部SAS/PCIe lane下行裝置接口的型号(3個×8 SFF-8654連接配接器)。
大家還記得上代MegaRAID産品性能的“一點遺憾”嗎?——RAID 5随機寫IOPS最大隻有24萬,可能不少客戶覺得夠用吧?但别忘了今天NVMe SSD的單盤性能水準。
最大讀IOPS翻一倍、RAID 5寫IOPS翻三倍
本文關注的重點還是性能。上圖截自Broadcom 9600 Series 24G PCIe 4.0 Tri-Mode RAID Adapters and eHBAs的Product Brief文檔,裡面的資訊量(包括隐含資訊量)其實蠻大的。
首先,針對MegaRAID 9600系列陣列卡和eHBA産品,最高4K随機讀IOPS能達到600萬-640萬之間,這是在JBOD和HBA模式下;
RAID 0/1的4K随機讀IOPS最高可達450萬-640萬,也相當不錯吧;
RAID 5最高IOPS在90萬-110萬,注意這裡寫的是“4K RW(讀寫)”,
針對這個疑點,下文中會繼續讨論,您能提前猜到技術實作的原因嗎?
圖檔點開後可放大顯示
如上表,本次釋出的新品中MegaRAID卡有3款:9660-16i、9670-24i和9670W-16i,分别為16、24、16個内部驅動器接口。前2款的PCIe主機插槽都是x8 Gen 4.0,而9670W-16i卡使用的SAS4116W ROC(RAID-on-Chip)晶片前後端接口設計都是x16 Gen 4.0 PCIe/24G SAS。
往下看闆卡功耗與3顆ROC主要的關系,16 lane的SAS4116為18W,24 lane的SAS4124提高到24W,而SAS4116W的25W相對更高一點。
eHBA卡共6款:9600-8i8e、9600-16e、9600W-16e、9600-16i、9600-24i、9620-16i,下行裝置接口lane數量分别為8内8外、16外、16外、16内、24内和16内。同樣也是帶有字母W的9600W-16e(SAS4016W IOC晶片也帶這個字母)前後端接口都是x16 lane PCIe/SAS。
在這次的新品中,我沒看到以前那種不帶緩存支援“軟RAID”的MegaRAID 9x40型号,eHBA卡也僅有一款9620-16i提供了RAID 0、1、10支援,同時它的最大SAS/SATA實體盤數量也限制為32。
SAS4016、SAS4024、SAS4016W三款IOC主要晶片對應的闆卡功耗,分别為15W、17W和18W。
上面表格缺失了以往RAID卡一項挺重要的規格參數——Cache緩存容量。可能是在SSD時代影響不大了吧?畢竟HDD機械盤RAID的性能瓶頸早已不再計算處理上。
大家注意了,SAS 24G的資料傳輸率為22.5Gb/s,在12Gb/s及之前的幾代資料編碼都是8b/10b(含校驗)。如果這次SAS4的實際應用資料能達到每個phy 2.4GB/s全雙工,則新一代的編碼效率提高了。
如上表,MegaRAID 9660 -16i Tri-Mode帶有4GB單通道DDR4-3200緩存;MegaRAID 9670 -24i提高到8GB單通道;隻有MegaRAID 9670W -16i配備了8GB雙通道緩存——簡單說就是為了比對其高性能。
RAID 5随機寫IOPS提高,随機讀卻下降
本次Broadcom公布的資料中,最讓我燒腦的莫過于SAS4116W晶片(對應MegaRAID 9670W -16i)的性能名額。最高RAID随機寫IOPS達到1.1 million,而随機讀卻隻有900,000。這一度讓我懷疑是不是筆誤寫錯了?而仔細對照本文開頭那張截圖裡的“900K to 1.1M RAID 5 IOPS(4K RW)”,又沒有錯。但怎麼解釋其合理性呢?
晶片型号 | 随機讀IOPS | 随機寫IOPS |
SAS4116 | 300萬 | 50萬 |
SAS4124 | 300萬 | 110萬 |
SAS4116W | 90萬 | 110萬 |
SAS4016 | 300萬 | |
SAS4024 | 300萬 | |
SAS4016W | 600萬 |
Broadcom并沒有公布MegaRAID 9600系列每款卡的性能名額,但ROC晶片資料裡卻可以參考。比如SAS4116和SAS4124的最高讀IOPS都有300萬,随機寫IOPS則分别為50萬和110萬(前面提到了功耗也不一樣)。讓人有點看不懂的是,我認為隻有一種解釋:這個90萬對應RAID 5性能,而另外2款的300萬則是RAID 0/1;寫IOPS則應該都寫的是RAID 5。
再來看下不帶“硬RAID”的IOC晶片性能:SAS4016和SAS4024也都是300萬随機讀IOPS,SAS4016W就高達600萬了。這裡我猜測,如果SAS4116W隻做RAID 0/1的話,應該也能達到600萬讀IOPS。
注:600萬4KB IOPS對應的資料吞吐已高達23,437 MB/s,這裡如果使用PCIe 4.0 x8接口帶寬已經不夠,不難了解W結尾型号是PCIe 4.0 x16了吧。
“非正常”性能背後:RAID 5算法改用糾删碼?
看到讀/寫IOPS在一個大緻對等的位置,我忽然想起了ZFS檔案系統的全條帶(Full Stripe)讀寫。RAID Z的好處是,不借助Cache就可以在順序寫時達到最小的寫懲罰,因為每次都寫到新位置而不是讀-改-寫;ZFS随機寫原理上有點類似NetApp的WAFL(寫任意檔案布局),但是随機讀也是全條帶性能就不太好看了,相當于多個盤一起操作隻讀出其中一塊的資料。
擴充閱讀:《》
ZFS提高機械盤RAID随機讀可以借助L2ARC(SSD讀緩存),但我們讨論的RAID卡已經是全閃存陣列了,如果想用卡上DRAM Cache一共8GB也命中不了太多資料吧。而且RAID卡面對SSD為了提高性能通常都設定為繞過Cache直接讀盤。
那麼MegaRAID 9600系列的SSD RAID 5是不是也把算法改成了全條帶讀寫呢?我覺得從性能特征來看有些道理,“讀放大”不會影響SSD的壽命,不覆寫原有位置的全條帶寫反而對閃存媒體友好。當然處理上估計會複雜點,要維護中繼資料,以及像ZFS和WAFL那樣做GC(垃圾回收)。
上面這段屬于個人猜想了,如果寫的不對請大家拍磚哈。我是初步認為,MegaRAID 9600系列應該是在RAID 5進行中精簡了資料拷貝(包括改寫過程中的搬移)和記憶體I/O操作,進而在ROC性能提高有限和闆卡功耗受限的情況下,大幅提高了随機寫IOPS(算是傳統RAID的頑疾吧)。
RAID和SAS控制卡市場,看似Broadcom一家獨大,但在這個相當成熟的領域并非沒有新進競争者,比如我在《》裡面寫過的GRAID。下面是他們最近的Roadmap:
由于使用NVIDIA GPU來加速Linux mdraid,GRAID借助硬體性能可發揮的空間較大,比如未來規劃的EC糾删碼、Thin精簡配置、壓縮/加密/dedup去重等。MegaRAID 9600這次會不會也用了糾删碼呢?
主要晶片性能:Arm核心和主頻與上代相同
再看看新一代ROC晶片的參數:雙核Arm A15 1.6GHz與上一代SAS3808相同,隻是L2 Cache從1MB增加到2MB,on-chip片上記憶體從6MB提高到15MB。
IOC(I/O處理器)系列晶片Arm部分規格也一樣,但沒有RAID 5/6的XOR DMA引擎。雖然eHBA卡寫的支援PD(實體盤)數量與ROC一樣,但IOC晶片的最大能力——SAS/SATA裝置支援2000個,PCIe(NVMe)裝置64個(連接配接在PCIe Switch後面)。
最後補充一點,9600系列eHBA在稍後的firmware版本中,将支援SMR(企業級)和Multi-Actuator多磁頭臂硬碟。
更多參考《》
《》
注:本文隻代表作者個人觀點,與任何組織機構無關,如有錯誤和不足之處歡迎在留言中批評指正。如果您想在這個公衆号上分享自己的技術幹貨,也歡迎聯系我:)
尊重知識,轉載時請保留全文。感謝您的閱讀和支援!