王紹剛等
摘要:大數(shù)據(jù)量的遠程內(nèi)存訪問(RDMA)傳輸是并行計算機中最基本的通信模式之一,對系統(tǒng)整體性能的影響很大.隨著并行計算機系統(tǒng)的規(guī)模擴大,系統(tǒng)的容錯性設計面臨著很大的挑戰(zhàn),互連網(wǎng)絡具有鏈路不可靠、自適應路由等特點,如何面向不可靠網(wǎng)絡實現(xiàn)可靠的端到端RDMA傳輸是并行系統(tǒng)體系結(jié)構(gòu)設計的一大難題.提出一種面向不可靠網(wǎng)絡下的快速RDMA傳輸方法,方法能夠在節(jié)點控制器芯片上高效實現(xiàn),對上層驅(qū)動軟件和應用提供可靠的端到端RDMA傳輸服務.與傳統(tǒng)的建立連接的方法相比,方法的硬件設計復雜度大大降低;方法另一優(yōu)點是實現(xiàn)了按需重傳,避免了傳統(tǒng)方法中一次RDMA傳輸出現(xiàn)錯誤時,需要重傳整個RDMA數(shù)據(jù)的開銷,在相同的錯誤概率下,新方法的傳輸效率得到了很大的提升.
關鍵詞:遠程內(nèi)存訪問;RDMA;MPI;滑動窗口
中圖分類號:TP302.1 文獻標識碼:A
A Fast RDMA Offload Method for Unreliable
Interconnection Networks
WANG Shaogang,XU Weixia,WU Dan,PANG Zhengbin,XIA Jun
(College of Computer, National Univ of Defense Technology, Changsha, Hunan410073, China)
Abstract:Large data RDMA (Remote Data Memory Access) transport is the most commonly used parallel communication mode for parallel computers, which has great impact on the whole system performance. As the system size increases, the faulttolerate architecture design faces new challenges. The interconnection network usually uses the adaptive routing mode and becomes more unreliable. This paper proposed a fast RDMA offload method for unreliable interconnection networks, which can be efficiently implemented on the NIC hardware and provides reliable RDMA communication for upper driver and programs. Compared with the traditional approaches, the hardware overhead is greatly reduced. Another benefit is that it can partially retransmit the fault data, which greatly reduces the whole RDMA delay. Simulation results show that the RDMA delay is greatly reduced, compared with the traditional methods.
Key words:remote data memory access, RDMA, MPI, sliding window approach
高性能并行計算機系統(tǒng)發(fā)展迅速,2013年11月份發(fā)布的Top500高性能計算機排行榜中,系統(tǒng)峰值性能已經(jīng)達到50 P (Petaflops),處理核數(shù)達到數(shù)十萬的規(guī)模.據(jù)此發(fā)展趨勢,國際上高性能計算機計算水平將在2015年左右達到100 P量級,在2016年達到1 E (Exaflops)量級[1-4].如此大規(guī)模的系統(tǒng)需要支持數(shù)百萬個節(jié)點的高效通信,節(jié)點間通信機制已成為制約系統(tǒng)性能乃至成敗的關鍵因素.
并行計算機互連網(wǎng)絡中,Serdes鏈路速率已達40Gbps[5-7],高速鏈路的誤碼率大大增加,給鏈路級的可靠傳輸帶來了很大的挑戰(zhàn);隨著網(wǎng)絡規(guī)模的擴大,網(wǎng)絡的平均故障時間越來越短,并行計算機的互連網(wǎng)絡變得越來越“不可靠”.在這種條件下,并行計算機體系結(jié)構(gòu)設計迫切需要進行對應的容錯設計.
遠程內(nèi)存訪問(RDMA)是并行機系統(tǒng)中最基本的通信模式之一[1,3],其他復雜的聚合通信也依賴基本的RDMA支持,在其基礎上實現(xiàn)的并行軟件運行庫(MPI,PGAS等)是并行作業(yè)的基礎,對作業(yè)的性能影響很大.在實現(xiàn)方案上,基于節(jié)點控制器硬件支持的RDMA操作是提高通信性能的有效方式,也是控制器設計中的難點.在高速互連網(wǎng)絡環(huán)境下,如何實現(xiàn)可靠的端到端RDMA傳輸,需要有效解決報文到達亂序、鏈路層校驗漏檢、鏈路故障處理等問題.
硬件支持RDMA通信的現(xiàn)有方法包括文獻[2-4,8]中的工作.總體來看,現(xiàn)有方法存在的主要問題是方法的可擴展性不高,在提高并行RDMA傳輸?shù)臄?shù)量時,硬件資源的開銷增長較快;單報文出錯的情況下,需要將整個RDMA報文完全重傳,帶來了不必要的開銷.
針對現(xiàn)有方法的缺點,本文提出了面向不可靠網(wǎng)絡快速RDMA通信的實現(xiàn)方法,方法可高效的實現(xiàn)在節(jié)點控制器中.本文針對底層互連網(wǎng)絡的假設為:1)由于自適應路由、鏈路流量控制等原因,互連網(wǎng)絡是亂序的;2)由于鏈路故障等原因,互連網(wǎng)絡可能丟棄報文.
本文提出的面向不可靠網(wǎng)絡的快速RDMA傳輸方法具有如下的創(chuàng)新點:
1)方法更易于在硬件中實現(xiàn),具有很好的擴展性,在同等硬件資源的條件下,本文方法能夠?qū)⒐?jié)點控制器所支持的并行RDMA傳輸數(shù)量大大提升.
2)本文提出的方法最大限度地減少了數(shù)據(jù)重傳,通過采用部分重傳的方法,避免了現(xiàn)有方法在單報文出錯或丟失時,需要將整個RDMA數(shù)據(jù)進行重傳所帶來的開銷.
1遠程內(nèi)存訪問(RDMA)
1.1概念
遠程內(nèi)存訪問(RDMA)是并行計算環(huán)境下基本的通信模式,在此基礎上能夠?qū)崿F(xiàn)多種軟件通信協(xié)議,如MPI,TCP/IP通信協(xié)議等[9].因而RDMA通信模式的效率對系統(tǒng)通信性能具有顯著的影響.一次RDMA傳輸?shù)幕静僮魇菍l(fā)送方指定內(nèi)存區(qū)域中的數(shù)據(jù)搬移到接收方指定的內(nèi)存區(qū)域中,可以通過表1的參數(shù)進行描述.
2.2連接上下文格式
連接上下文是記錄RDMA傳輸狀態(tài)的表格數(shù)據(jù)結(jié)構(gòu),表格中每一個表項記錄一次RDMA傳輸過程中的狀態(tài).在硬件實現(xiàn)上,上下文記錄表主要保存在片內(nèi)存儲器中,上下文表項的個數(shù)是折衷性能和硬件資源而確定的.上下文表項的項數(shù)越多,則其他節(jié)點與該節(jié)點可以建立的連接數(shù)越多,因而系統(tǒng)中可以并發(fā)進行的RDMA傳輸越多,并發(fā)傳輸規(guī)模對大系統(tǒng)的可擴展性具有意義.
在本文提出的方法中,連接上下文包括發(fā)送端和接收端兩部分,進行RDMA傳輸時,需要在發(fā)送端和接收端的連接上下文間建立連接,上下文表項的結(jié)構(gòu)由表4所示.
2.3RDMA傳輸流程
2.3.1連接建立流程
建立連接的過程是在發(fā)送方和接收方的上下文中為本次RDMA傳輸分配資源.發(fā)送方的上下文資源在節(jié)點收到處理器發(fā)出的RDMA請求時分配,并向接收方節(jié)點發(fā)送連接請求當前窗口的數(shù)據(jù)報文接收標志,由向量格式表示,向量的位寬表明當前接收窗口的大小,即系統(tǒng)可支持的一次RDMA傳輸中并發(fā)報文傳輸數(shù)量. 第i 位為1時,表示接收方已經(jīng)收到序列號為WBASE + i的RDMA數(shù)據(jù)報文(為了計算方便,向量索引的下標從1開始計數(shù)).〖BG)F〗〖HJ〗〖HT5SS〗
接收方將分配的結(jié)果,即CID號,通過RDMA_RSP報文通知發(fā)送方.接收方無可用上下文資源而導致分配失敗時,也通過RDMA_RSP報文告知發(fā)送方,發(fā)送方可按照策略(延遲重試等)重試.
2.3.2正常數(shù)據(jù)傳輸流程
在高性能并行計算機中,互連網(wǎng)絡由于鏈路帶寬平衡、自適應路由等特性,網(wǎng)絡經(jīng)常是亂序的,即報文在發(fā)送端發(fā)送的順序和報文在接收端接收的順序不一致.互連網(wǎng)絡的鏈路故障也會導致報文丟失.為了解決以上的問題,本文采用滑動窗口的方式支持上述的網(wǎng)絡特性.
舉例來說明數(shù)據(jù)的傳輸流程,假設發(fā)送方需要發(fā)送5個數(shù)據(jù)報文到接收方,報文的序列號分別為0至4, 由于網(wǎng)絡亂序的原因,到達接收方時的順序為2,1,0,4,3,接收方接收的流程如圖2所示.
在接收上下文中,WBASE的含義是當前期望接收的數(shù)據(jù)報文的最小序列號,即序號之前的報文全部接收.在建立連接時,WBASE初始化為0,即RDMA報文序列中的第1個報文.接收標志向量表明的是WBASE序號之后的128個(假設標志向量的位寬為128位)數(shù)據(jù)報文是否已經(jīng)收到,為了計算方便,向量的下標從1開始計數(shù),如果WVEC的第i位為1,則表明序號為WBASE+i的報文已經(jīng)被接收方成功接收.
如果接收方收到報文的序列號在接收窗口內(nèi),但不是最小的未接收報文的序列號,即:PIDX>WBASE,并且PIDX≤WBASE+128.在這種情況下,只需要將WVEC[PIDXWBASE]置為1即可,表明已經(jīng)收到了序號為PIDX的數(shù)據(jù)報文.即在向量WVEC中,索引下標為i的位為1時,表示收到了序號為WBASE+i的數(shù)據(jù)報文.
如果收到的報文等于WBASE,則表明收到了下一個最小序號的數(shù)據(jù)報文,在這種情況下,需要更新當前窗口的WBASE和WVEC.窗口WBASE需要更新為未接收報文中的下一個最小的序號,可以根據(jù)當前WBASE和WVEC的值計算得到:
WBASE=WBASE+LOC(WVEC).
WVEC的更新方法是:
WVEC=WVEC< 其中,LOC(WVEC)表示向量WVEC從最低位開始連續(xù)1的個數(shù). 2.3.3窗口外報文處理 在某些極端互連網(wǎng)絡延遲情況下,有可能接收方收到的報文在窗口之外,即:PIDX PIDX PIDX>WBASE+128的情況是由于網(wǎng)絡亂序,或某些極端情況下的重傳引起的,此時,由于接收方的窗口還不能覆蓋該報文的序號,接收方也將丟棄此類報文,由于接收方主存還未寫入數(shù)據(jù),因而接收方需要向發(fā)送方返回RDMA_RESEND報文,通知發(fā)送方重發(fā)該報文. 綜上所述,接收方收到報文后的處理流程如圖3所示.在算法描述中,假設窗口向量的位寬為128位,為了方便計算,下標從1開始計數(shù). 2.3.4異常數(shù)據(jù)傳輸流程 RDMA傳輸過程中可能出現(xiàn)的異常情況包括:接收方報文接收超時、接收到窗口范圍之外的報文、僵尸報文處理. 1)接收方超時處理 基于本文提出的滑動窗口RDMA傳輸方法,接收方為上下文中WBASE所指示的數(shù)據(jù)報文建立超時機制,也就是滑動窗口中序列號最小的那個報文,因而每個窗口只需要一個超時計數(shù)器進行超時計數(shù).如果當前滑動窗口最底部的報文超時,接收方將主動向發(fā)送方發(fā)出RDMA_RESEND報文,該報文中攜帶著當前WBASE指針,要求發(fā)送方重發(fā)序號為WBASE的報文.發(fā)送方收到RDMA_RESEND報文后,需要根據(jù)RDMA請求中,源方的基地址以及報文序號,從源方內(nèi)存中重新讀取該報文的數(shù)據(jù).