RDMA高速低延時網(wǎng)絡(luò):流動緩存背后的功臣
戴爾Fuild Cache for SAN,在服務(wù)器閃存緩存與SAN陣列的集成方面可謂獨樹一幟。相信一些讀者對該技術(shù)已經(jīng)不陌生,除了那500萬IOPS的Demo之外,網(wǎng)上也能找到相關(guān)資料和分析的文章,如:《性能與ILM的平衡:服務(wù)器閃存緩存的思考》。今天我們想回顧一下Fuild Cache for SAN的獨特技術(shù)優(yōu)勢,以及在流動緩存背后的功臣——RDMA高速低延時網(wǎng)絡(luò)。
如果說PCIe/ NVMe打通了主機內(nèi)部CPU與閃存之間通道的話,那么RDMA over InfiniBand或者RoCE則能夠有效改善跨節(jié)點的閃存訪問性能。
Fuild Cache for SAN的獨特優(yōu)勢
1 SAN整合盡管有多家廠商都宣稱他們的服務(wù)器閃存緩存軟件,可以配合后端SAN存儲使用,但許多也標明了只是單機讀緩存。除了戴爾Fuild Cache for SAN之外,具備分布式緩存一致性和RAC支持的寥寥無幾。
這里要強調(diào)一下,早期的Server Flash Cache軟件通常不支持像Oracle RAC這樣的雙活(Active/Active)集群訪問,簡單說就是當一臺服務(wù)器向后端共享存儲中寫入數(shù)據(jù)時會鎖定整個LUN。而Oracle RAC需要的是傳統(tǒng)SCSI-3規(guī)范的細粒度鎖機制,一個LUN上的不同LBA允許同時接受來自多個服務(wù)器的寫操作。
分布式緩存一致性解決的就是協(xié)同,或者說數(shù)據(jù)一致性。如果由一臺服務(wù)器改寫了后端LUN內(nèi)的數(shù)據(jù),在另一臺服務(wù)器上Flash Cache內(nèi)也有對應的數(shù)據(jù)塊,需要做過期處理,也就是說要維護一個同步的緩存元數(shù)據(jù)索引。
Server Cache Pool——戴爾將Fuild Cache for SAN稱為緩存池,是因為一臺服務(wù)器閃存緩存中的數(shù)據(jù)可以供集群中別的服務(wù)器加速存儲訪問,而后者并不是必須要作為這個閃存緩存池的貢獻者。
2 Server Cache Pool戴爾將Fuild Cache for SAN稱為緩存池,是因為一臺服務(wù)器閃存緩存中的數(shù)據(jù)可以供集群中別的服務(wù)器加速存儲訪問,而后者并不是必須要作為這個閃存緩存池的貢獻者。
3 異構(gòu)服務(wù)器訪問既然Fuild Cache for SAN網(wǎng)絡(luò)中不是每個服務(wù)器節(jié)點都需要配置閃存緩存(最少2個貢獻節(jié)點+1個仲裁節(jié)點),那么也就允許第三方服務(wù)器加入集群。
4 Write-back(寫回)緩存支持盡管一家戴爾友商曾表示將支持write back寫緩存,但直到去年我們也沒有看到這一功能的發(fā)布。
閃存一旦用于讀&寫緩存,和自動分層存儲已經(jīng)有相似之處。只是數(shù)據(jù)是否最終要持久化到后端的問題,因為這時閃存中的待寫入數(shù)據(jù)必須保證可靠性和高可用性。
這就涉及到本文的重點——RDMA網(wǎng)絡(luò)。為了緩存池中的全局訪問,還有把每臺服務(wù)器的閃存寫緩存鏡像到其它節(jié)點以實現(xiàn)冗余,最好能有一個低延遲的專用高速網(wǎng)絡(luò)。

5 低延時專用互連網(wǎng)絡(luò)戴爾Fuild Cache for SAN需要配置專用的40Gb或者10Gb RoCE(RDMA over Coverge Ethernet)緩存通信網(wǎng)絡(luò),RoCE在相同速率下的性能/延時表現(xiàn)可以媲美InfiniBand。我們看到部分多控制器的高端存儲陣列,其節(jié)點間就是用IB網(wǎng)絡(luò)互連,而戴爾Fuild Cache for SAN的閃存緩存池更加靠近服務(wù)器,取得更好的性能也在情理當中。
延時大跳水:繞開TCP/IP協(xié)議棧開銷

如上圖,我們看到40GbE和10GbE交換網(wǎng)絡(luò)的物理延遲(當然不包括TCP/IP)分別只有0.6和0.8微秒,RoCE(RDMA over Coverge Ethernet)的延遲也不到1微秒。這里我理解的應該是主機到交換機。
直行何必繞彎——看RDMA如何工作

來自去年閃存峰會資料的這張圖,簡明的解釋了RDMA over IB和RoCE的好處:從User層(用戶態(tài))繞過Kernel層(內(nèi)核態(tài)),直接走InfiniBand HCA或者RoCE網(wǎng)卡從網(wǎng)絡(luò)發(fā)送數(shù)據(jù);即從應用的buffer緩沖,繞過了OS的接收和發(fā)送buffer,甚至網(wǎng)卡上都可以不再做buffer。當然,我們前面提到的另外一點——繞開TCP/IP也是改善性能的重要因素。
從RNA內(nèi)存虛擬化到Fuild Cache for SAN

上圖來自Mellanox 2011年的資料,Mellanox是最大的InfiniBand網(wǎng)絡(luò)設(shè)備制造商,也是RoCE的主要發(fā)起者。戴爾與Mellanox在高性能計算和存儲方面有著緊密的合作。
RNA這家公司已于同年被戴爾收購,上面的對比數(shù)字是他們之前的MVX內(nèi)存虛擬化產(chǎn)品在RoCE和TCP/IP網(wǎng)絡(luò)下的延時對比。注意這里是應用級Benchmark和Round Trip延時,當時使用的ConnectX-2是10Gb萬兆網(wǎng)卡。從測試結(jié)果來看,RoCE延時只有TCP/IP網(wǎng)絡(luò)的1/3多一點。
值得一提的是,F(xiàn)uild Cache for SAN正是RNA的技術(shù)融入戴爾之后推出的產(chǎn)品,將RoCE高速網(wǎng)絡(luò)與PowerEdge服務(wù)器上ExpressFlash NVMe PCIe SSD的優(yōu)勢結(jié)合起來,相得益彰。
