隨著互聯(lián)網(wǎng)的不斷發(fā)展,數(shù)據(jù)的規(guī)模爆發(fā)式增長,根據(jù)《2021-2025年中國大數(shù)據(jù)行業(yè)競爭分析及發(fā)展前景預測報告》研究表明,中國數(shù)據(jù)增量年均增速超過30%,2018年中國新增數(shù)據(jù)量為7.6ZB,成為世界第一數(shù)據(jù)生產(chǎn)國。預計2025年將達到48.6ZB。
為了滿足日益增長的存儲需求,數(shù)據(jù)存儲技術從介質(zhì)、架構、協(xié)議、模式方面都存在巨大轉變。由原本的機械硬盤存儲、易失型內(nèi)存演變?yōu)榱巳W存儲、非易失性內(nèi)存。架構從集中式存儲演變?yōu)榱塑浖x存儲、超融合架構。協(xié)議從AHCI、SCSI協(xié)議演變?yōu)榱薔VMe協(xié)議。
NVMe和NVMe Over Fabric的出現(xiàn),打破了傳統(tǒng)SCSI協(xié)議對性能的限制,多隊列模型能更好的發(fā)揮高性能存儲介質(zhì)的性能。在如今的存儲網(wǎng)絡當中,NVMe及NVME Over Fabric已經(jīng)成為高性能存儲架構的標桿。
為了解決數(shù)據(jù)中心內(nèi)爆炸式增長的數(shù)據(jù)存儲和讀取效率問題、應用業(yè)務對延遲的要求日益增高,對數(shù)據(jù)中心網(wǎng)絡的要求是:更低的時延、更高的帶寬。為了解決此問題,RDMA(Remote Direct Memory Access)技術應運而生。
在傳統(tǒng)的TCP/IP中,從網(wǎng)卡收到數(shù)據(jù)包,到應用層接收,需要經(jīng)過網(wǎng)卡ring buffer ——>內(nèi)核空間——>用戶空間,帶來大量CPU、內(nèi)存的開銷,且增加了時延。RDMA技術可以實現(xiàn)kernel bypass,在網(wǎng)卡當中就完成數(shù)據(jù)包的解析,直接將數(shù)據(jù)包傳輸至應用層,不需要額外的CPU開銷,降低了時延。
因為包的解析都下沉到了網(wǎng)卡中,所以RDMA特性需要網(wǎng)卡的支持。
目前RDMA主流實現(xiàn)方式有以下三種
Infiniband
RoCE(基于UDP)
iWRAP(基于TCP)
RDMA起初只是在InfiniBand上實現(xiàn),由于Infiniband在設計之初從硬件層面保證了數(shù)據(jù)包不丟,所以RDMA重傳機制設計的非常簡單:go-back-N重傳。簡單來說就是當有一個數(shù)據(jù)包丟失時,后續(xù)所有的數(shù)據(jù)包都需要重傳。
相對來說,在TCP協(xié)議上則只需要將丟失的包重傳即可,所以在RDMA網(wǎng)絡當中丟包,對傳輸性能有非常大的影響。
Infiniband天然就保證了不丟包,iWRAP以及RoCE是基于以太網(wǎng)實現(xiàn)的,而以太網(wǎng)是一個盡力而為的網(wǎng)絡,iWRAP使用了TCP協(xié)議保證無丟包,相對來說時延會略高。而RoCE(v2)則使用了UDP,延遲會比較低,但是對于網(wǎng)絡有更高的要求,需要底層網(wǎng)絡來保證無損。
在Mellanox官網(wǎng)的測試結果當中,RoCE的時延基本只有iWRAP的1/5。
無損網(wǎng)絡
在上文的介紹中,明確了RDMA如果產(chǎn)生丟包,對性能會有很大的影響。那么如何做到以太網(wǎng)中沒有丟包?
第一個能想到的就是將所有交換機當中的buffer都加大。假如buffer夠大,碰到速率不匹配時,會將包先放在緩存中。
但是包放在緩存中會導致時延上升,緩存過大會導致時延很高,本身使用RDMA主要就是為了保證低時延,只能采用小buffer。在這種前提下,能夠實現(xiàn)無損網(wǎng)絡的方式為PFC以及ECN。
PFC
PFC全稱Priority-based Flow Control。顧名思議,它是Flow Control的升級版本。Flow Control是基于端口做的檢測,當網(wǎng)絡出現(xiàn)擁塞時,會將整個端口的流量都停止掉,也就是說可能會由于一些不重要的數(shù)據(jù)流,影響到非常重要的數(shù)據(jù)流。這顯然不是我們想看到的結果。
PFC會將網(wǎng)絡流量分為8個優(yōu)先級,可以針對不同的優(yōu)先級設置流控的策略。在隊列中的buffer消耗達到水位線時,會通過發(fā)送Pause幀通知上游設備暫停發(fā)包,防止緩存溢出丟包。如下圖,隊列7的buffer使用達到水位線,則本端交換機會向上游交換機發(fā)送Pause幀,同時不影響其它隊列的正常發(fā)送。
ECN
ECN:Explicit Congestion Notification,為顯示擁塞通知。ECN是報文在網(wǎng)絡設備傳輸過程中,發(fā)生擁塞并觸發(fā)ECN水線時,會使用IP報文頭的ECN字段標記數(shù)據(jù)包,表明該報文遇到網(wǎng)絡擁塞。當接收端接收到帶ECN的報文時,則會馬上向源端發(fā)送一個CNP報文。CNP消息里包含了導致?lián)砣腇low信息。源端服務器收到后,通過降低相應流發(fā)送速率,緩解網(wǎng)絡設備擁塞,從而避免發(fā)生丟包。
CNP報文在傳輸回源端時,也有可能發(fā)生擁塞,導致源端收到的不及時。所以可以讓CNP報文走單獨的PFC隊列,保證優(yōu)先轉發(fā)
ECN不是必須配置的(但是建議配置),ECN能夠進一步減緩擁塞。從充分發(fā)揮網(wǎng)絡高性能轉發(fā)的角度,我們需要通過調(diào)整ECN和PFC的buffer水線,讓ECN快于PFC觸發(fā),即網(wǎng)絡還是持續(xù)全速進行數(shù)據(jù)轉發(fā),讓服務器主動降低發(fā)包速率。如果還不能解決問題,再通過PFC讓上游交換機暫停報文發(fā)送,雖然整網(wǎng)吞吐性能降低,但是不會產(chǎn)生丟包。
交換機
想實現(xiàn)無損網(wǎng)絡就得讓網(wǎng)絡設備支持PFC/ECN功能。當然,并不是所有的交換機都支持這些功能。目前各大產(chǎn)商都有支持此功能(DCB)的交換機。
無損網(wǎng)絡配置完成后,可以制造一些擁塞場景進行測試,比如使用RDMA二打一流量進行測試,假如性能損失嚴重,則說明無損網(wǎng)絡配置存在問題。部分交換機也可以在命令行提供丟包信息查看。
NVMe是一個邏輯設備接口規(guī)范,與SCSI和SATA協(xié)議相比,NVMe標準將訪問時間縮短了幾個數(shù)量級。
NVMe Over Fabric(簡稱NVMe-oF)基于NVMe技術發(fā)展而來。NVMe適用于服務器內(nèi)部或直接連接存儲設備。NVMe-oF使用基于消息的模型通過網(wǎng)絡在主機和目標存儲設備之間發(fā)送請求和響應,簡單來說,NVMe-oF可以將存儲設備通過網(wǎng)絡傳輸?shù)搅硪粋€節(jié)點。
相比之前存在的iSCSI、FC存儲協(xié)議,NVMe-oF在性能、時延、并行度、可擴展性上都存在巨大優(yōu)勢 。
NVMe-oF可以在TCP/RDMA上實現(xiàn),基于RDMA的實現(xiàn)中,由于RDMA低延遲、低抖動和低CPU使用率的特性,性能和時延表現(xiàn)都會會優(yōu)于基于TCP的實現(xiàn)。綜上所述,NVMe over RDMA總體會更好一些。
了解了RoCE的實現(xiàn)方式以及NVMe-oF這款基于RDMA的應用后,就可以開始進行測試了!
首先構建一個簡單的環(huán)境測試一下基于RoCE環(huán)境的NVMe-oF的性能,搭建了一個環(huán)境如下圖所示。兩臺服務器各使用一張支持RDMA的100GB網(wǎng)卡,連接至支持DCB功能的交換機,存儲節(jié)點插10塊P4610 NVMe SSD(確保存儲節(jié)點性能足夠優(yōu)秀)。
對環(huán)境進行簡單的配置以支持RDMA
在服務器上開啟ECN功能、PFC隊列。并設置流量的TOS值(TOS值是IP報頭的一個字段,為了區(qū)分流量是進入哪個PFC隊列)?;诋斍碍h(huán)境,只需要一個隊列。
在交換機上配置ECN功能、PFC功能。參數(shù)需要與服務器側適配。對于水位線配置可先采取各產(chǎn)商建議值。
配置完無損網(wǎng)絡后,需要配置NVMe-oF協(xié)議,將存儲節(jié)點的盤輸送到計算節(jié)點上,配置完成后,使用FIO工具,對輸送上來的塊設備性能進行測試。
基于此環(huán)境,性能如下
由于是100GB的網(wǎng)卡,吞吐理論最佳在12GB左右,可以看到順序讀寫的吞吐已經(jīng)接近極限值。隨機讀寫也達到了100w左右,并且延遲也處于較低的水平。
由于性能基本已經(jīng)達到網(wǎng)卡的極限,現(xiàn)在采用scale-out方式再新增幾個節(jié)點。
將架構改成2臺應用節(jié)點,3臺存儲節(jié)點,為每臺節(jié)點插上兩塊100GB RDMA網(wǎng)卡。
同時優(yōu)化PFC配置,讓ECN回復的CNP報文單獨走到一個隊列,并使用嚴格優(yōu)先級保證最優(yōu)先轉發(fā)。
基于此環(huán)境,測試性能結果如下
可以看到遠端應用節(jié)點性能也已經(jīng)達到了網(wǎng)卡的極限值,基于目前的測試,在傳輸?shù)倪^程當中,性能基本沒有損耗。
那么與InfiniBand性能對比測試結果如何呢?
基于當前環(huán)境進行一個對比測試
通過測試發(fā)現(xiàn),RoCE的性能略低于IB。
測試完了FIO,基于數(shù)據(jù)庫表現(xiàn)對RoCE與InfiniBand做一個簡單的對比測試?;谏鲜霏h(huán)境搭建Oracle RAC,全用HammerDB對數(shù)據(jù)庫進行壓測。
基于當前環(huán)境,測試RoCE與InfiniBand環(huán)境下數(shù)據(jù)庫性能,結果為RoCE與InfiniBand性能持平。
總體來說,NVMe-oF情況下IB略優(yōu)于RoCE,數(shù)據(jù)庫情況下IB與RoCE持平。
從配置上說,InfiniBand的使用較為簡單,RoCE的使用方式較難,但成本相對較低。并且由于RoCE是基于以太網(wǎng)的,在對外以及和傳統(tǒng)網(wǎng)絡的兼容性上有極大的優(yōu)勢。具體的選擇還需要根據(jù)業(yè)務場景。
本文簡單的描述了基于以太網(wǎng)RDMA的實現(xiàn)方式,并使用FIO工具對NVMe-oF進行了簡單的測試,橫向對比了Infiniband性能。通過實驗,對NVMe-oF以及RDMA的性能有了一些了解,相比傳統(tǒng)存儲架構,NVMe-oF性能有了極大的提升。在底層存儲性能越來越高的情況下,NVMe-oF或許是越來越不可或缺的一環(huán)。RoCE是目前大環(huán)境下一個不錯的選擇。
參考資料
六年間全球數(shù)據(jù)總量爆發(fā)式增長 中國數(shù)據(jù)增量年均增速超過30%:
https://www.chinairn.com/hyzx/20210527/100320817.shtml
下一代數(shù)據(jù)存儲技術研究報告(2021年)
淺析RDMA網(wǎng)絡下MMU水線設置 淺析RDMA網(wǎng)絡下MMU水線設置:
https://www.ruijie.com.cn/fa/xw-hlw/61714/
詳解:什么是NVMe over Fabrics?:
https://3d83611d.wiz06.com/wapp/pages/view/share/s/0ZwS4t1uXQPY2SmgZY2xRrOB3ZDb9q1AZkkG2KdeoX1lWHX8
服務電話: 400-678-1800 (周??周五 09:00-18:00)
商務合作: 0571-87770835
市場反饋: marketing@woqutech.com
地址: 杭州市濱江區(qū)濱安路1190號智匯中?A座1101室