天天看點

讀IOPS 640萬、寫110萬:24G SAS/NVMe RAID卡性能謎團

作者:企業存儲技術

引言:讀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晶片。

讀IOPS 640萬、寫110萬:24G SAS/NVMe RAID卡性能謎團

從上圖中至少可以先看出兩點:1、本次有PCIe x16插槽的闆卡;2、有提供總共24個内部SAS/PCIe lane下行裝置接口的型号(3個×8 SFF-8654連接配接器)。

大家還記得上代MegaRAID産品性能的“一點遺憾”嗎?——RAID 5随機寫IOPS最大隻有24萬,可能不少客戶覺得夠用吧?但别忘了今天NVMe SSD的單盤性能水準。

最大讀IOPS翻一倍、RAID 5寫IOPS翻三倍

讀IOPS 640萬、寫110萬:24G SAS/NVMe RAID卡性能謎團

本文關注的重點還是性能。上圖截自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(讀寫)”,

針對這個疑點,下文中會繼續讨論,您能提前猜到技術實作的原因嗎?

讀IOPS 640萬、寫110萬:24G SAS/NVMe RAID卡性能謎團

圖檔點開後可放大顯示

如上表,本次釋出的新品中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的性能瓶頸早已不再計算處理上。

讀IOPS 640萬、寫110萬:24G SAS/NVMe 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提高,随機讀卻下降

讀IOPS 640萬、寫110萬:24G SAS/NVMe RAID卡性能謎團

本次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:

讀IOPS 640萬、寫110萬:24G SAS/NVMe RAID卡性能謎團

由于使用NVIDIA GPU來加速Linux mdraid,GRAID借助硬體性能可發揮的空間較大,比如未來規劃的EC糾删碼、Thin精簡配置、壓縮/加密/dedup去重等。MegaRAID 9600這次會不會也用了糾删碼呢?

主要晶片性能:Arm核心和主頻與上代相同

讀IOPS 640萬、寫110萬:24G SAS/NVMe RAID卡性能謎團

再看看新一代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後面)。

讀IOPS 640萬、寫110萬:24G SAS/NVMe RAID卡性能謎團

最後補充一點,9600系列eHBA在稍後的firmware版本中,将支援SMR(企業級)和Multi-Actuator多磁頭臂硬碟。

更多參考《》

《》

注:本文隻代表作者個人觀點,與任何組織機構無關,如有錯誤和不足之處歡迎在留言中批評指正。如果您想在這個公衆号上分享自己的技術幹貨,也歡迎聯系我:)

尊重知識,轉載時請保留全文。感謝您的閱讀和支援!

繼續閱讀