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

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

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

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

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