王紹剛,徐煒遐,吳 丹,龐征斌,夏 軍
(國(guó)防科學(xué)技術(shù)大學(xué) 計(jì)算機(jī)學(xué)院, 湖南 長(zhǎng)沙 410073)
一種面向不可靠網(wǎng)絡(luò)的快速RDMA通信方法*
王紹剛?,徐煒遐,吳 丹,龐征斌,夏 軍
(國(guó)防科學(xué)技術(shù)大學(xué) 計(jì)算機(jī)學(xué)院, 湖南 長(zhǎng)沙 410073)
大數(shù)據(jù)量的遠(yuǎn)程內(nèi)存訪問(RDMA)傳輸是并行計(jì)算機(jī)中最基本的通信模式之一,對(duì)系統(tǒng)整體性能的影響很大.隨著并行計(jì)算機(jī)系統(tǒng)的規(guī)模擴(kuò)大,系統(tǒng)的容錯(cuò)性設(shè)計(jì)面臨著很大的挑戰(zhàn),互連網(wǎng)絡(luò)具有鏈路不可靠、自適應(yīng)路由等特點(diǎn),如何面向不可靠網(wǎng)絡(luò)實(shí)現(xiàn)可靠的端到端RDMA傳輸是并行系統(tǒng)體系結(jié)構(gòu)設(shè)計(jì)的一大難題.提出一種面向不可靠網(wǎng)絡(luò)下的快速RDMA傳輸方法,方法能夠在節(jié)點(diǎn)控制器芯片上高效實(shí)現(xiàn),對(duì)上層驅(qū)動(dòng)軟件和應(yīng)用提供可靠的端到端RDMA傳輸服務(wù).與傳統(tǒng)的建立連接的方法相比,方法的硬件設(shè)計(jì)復(fù)雜度大大降低;方法另一優(yōu)點(diǎn)是實(shí)現(xiàn)了按需重傳,避免了傳統(tǒng)方法中一次RDMA傳輸出現(xiàn)錯(cuò)誤時(shí),需要重傳整個(gè)RDMA數(shù)據(jù)的開銷,在相同的錯(cuò)誤概率下,新方法的傳輸效率得到了很大的提升.
遠(yuǎn)程內(nèi)存訪問;RDMA;MPI;滑動(dòng)窗口
高性能并行計(jì)算機(jī)系統(tǒng)發(fā)展迅速,2013年11月份發(fā)布的Top500高性能計(jì)算機(jī)排行榜中,系統(tǒng)峰值性能已經(jīng)達(dá)到50 P (Petaflops),處理核數(shù)達(dá)到數(shù)十萬的規(guī)模.據(jù)此發(fā)展趨勢(shì),國(guó)際上高性能計(jì)算機(jī)計(jì)算水平將在2015年左右達(dá)到100 P量級(jí),在2016年達(dá)到1 E (Exaflops)量級(jí)[1-4].如此大規(guī)模的系統(tǒng)需要支持?jǐn)?shù)百萬個(gè)節(jié)點(diǎn)的高效通信,節(jié)點(diǎn)間通信機(jī)制已成為制約系統(tǒng)性能乃至成敗的關(guān)鍵因素.
并行計(jì)算機(jī)互連網(wǎng)絡(luò)中,Serdes鏈路速率已達(dá)40Gbps[5-7],高速鏈路的誤碼率大大增加,給鏈路級(jí)的可靠傳輸帶來了很大的挑戰(zhàn);隨著網(wǎng)絡(luò)規(guī)模的擴(kuò)大,網(wǎng)絡(luò)的平均故障時(shí)間越來越短,并行計(jì)算機(jī)的互連網(wǎng)絡(luò)變得越來越“不可靠”.在這種條件下,并行計(jì)算機(jī)體系結(jié)構(gòu)設(shè)計(jì)迫切需要進(jìn)行對(duì)應(yīng)的容錯(cuò)設(shè)計(jì).
遠(yuǎn)程內(nèi)存訪問(RDMA)是并行機(jī)系統(tǒng)中最基本的通信模式之一[1,3],其他復(fù)雜的聚合通信也依賴基本的RDMA支持,在其基礎(chǔ)上實(shí)現(xiàn)的并行軟件運(yùn)行庫(MPI,PGAS等)是并行作業(yè)的基礎(chǔ),對(duì)作業(yè)的性能影響很大.在實(shí)現(xiàn)方案上,基于節(jié)點(diǎn)控制器硬件支持的RDMA操作是提高通信性能的有效方式,也是控制器設(shè)計(jì)中的難點(diǎn).在高速互連網(wǎng)絡(luò)環(huán)境下,如何實(shí)現(xiàn)可靠的端到端RDMA傳輸,需要有效解決報(bào)文到達(dá)亂序、鏈路層校驗(yàn)漏檢、鏈路故障處理等問題.
硬件支持RDMA通信的現(xiàn)有方法包括文獻(xiàn)[2-4,8]中的工作.總體來看,現(xiàn)有方法存在的主要問題是方法的可擴(kuò)展性不高,在提高并行RDMA傳輸?shù)臄?shù)量時(shí),硬件資源的開銷增長(zhǎng)較快;單報(bào)文出錯(cuò)的情況下,需要將整個(gè)RDMA報(bào)文完全重傳,帶來了不必要的開銷.
針對(duì)現(xiàn)有方法的缺點(diǎn),本文提出了面向不可靠網(wǎng)絡(luò)快速RDMA通信的實(shí)現(xiàn)方法,方法可高效的實(shí)現(xiàn)在節(jié)點(diǎn)控制器中.本文針對(duì)底層互連網(wǎng)絡(luò)的假設(shè)為:1)由于自適應(yīng)路由、鏈路流量控制等原因,互連網(wǎng)絡(luò)是亂序的;2)由于鏈路故障等原因,互連網(wǎng)絡(luò)可能丟棄報(bào)文.
本文提出的面向不可靠網(wǎng)絡(luò)的快速RDMA傳輸方法具有如下的創(chuàng)新點(diǎn):
1)方法更易于在硬件中實(shí)現(xiàn),具有很好的擴(kuò)展性,在同等硬件資源的條件下,本文方法能夠?qū)⒐?jié)點(diǎn)控制器所支持的并行RDMA傳輸數(shù)量大大提升.
2)本文提出的方法最大限度地減少了數(shù)據(jù)重傳,通過采用部分重傳的方法,避免了現(xiàn)有方法在單報(bào)文出錯(cuò)或丟失時(shí),需要將整個(gè)RDMA數(shù)據(jù)進(jìn)行重傳所帶來的開銷.
1.1 概 念
遠(yuǎn)程內(nèi)存訪問(RDMA)是并行計(jì)算環(huán)境下基本的通信模式,在此基礎(chǔ)上能夠?qū)崿F(xiàn)多種軟件通信協(xié)議,如MPI,TCP/IP通信協(xié)議等[9].因而RDMA通信模式的效率對(duì)系統(tǒng)通信性能具有顯著的影響.一次RDMA傳輸?shù)幕静僮魇菍l(fā)送方指定內(nèi)存區(qū)域中的數(shù)據(jù)搬移到接收方指定的內(nèi)存區(qū)域中,可以通過表1的參數(shù)進(jìn)行描述.
表1 RDMA的參數(shù)化描述
1.2 現(xiàn)有方法分析
在現(xiàn)有的并行計(jì)算機(jī)系統(tǒng)中,如天河1[8],Infiniband控制器[9-10]等,節(jié)點(diǎn)控制器支持RDMA傳輸?shù)姆椒ㄖ饕窃跀?shù)據(jù)傳輸之前,在發(fā)送方和接收方首先建立連接,建立連接的節(jié)點(diǎn)間可以進(jìn)行RDMA數(shù)據(jù)的傳輸.在亂序互連網(wǎng)絡(luò)中,并且有可能會(huì)產(chǎn)生丟包、錯(cuò)包的情況下,節(jié)點(diǎn)間在進(jìn)行RDMA數(shù)據(jù)傳輸一般依賴接收方的計(jì)數(shù)器來檢測(cè)一次RDMA傳輸?shù)乃袌?bào)文是否已經(jīng)收全.如果目的方計(jì)數(shù)器超時(shí),或者收到的報(bào)文校驗(yàn)出錯(cuò)時(shí),現(xiàn)有方法一般要求發(fā)送方將整個(gè)RDMA數(shù)據(jù)重傳一次.
在Cray系列超級(jí)計(jì)算機(jī)中[4],RDMA數(shù)據(jù)傳輸采用的是發(fā)送方滑動(dòng)窗口的策略,該策略與鏈路層滑動(dòng)窗口方案類似,即在發(fā)送方維護(hù)報(bào)文發(fā)送窗口,報(bào)文到達(dá)接收方后,要求接收方返回接收響應(yīng);發(fā)送方通過響應(yīng)確定接收方已經(jīng)成功接收?qǐng)?bào)文,并在出錯(cuò)或超時(shí)的情況下重傳發(fā)送方的報(bào)文.
通過分析可以看出,現(xiàn)有方法存在的主要缺點(diǎn)是:
1)對(duì)于鏈路出錯(cuò)導(dǎo)致的少量報(bào)文錯(cuò)誤時(shí)(實(shí)際系統(tǒng)中常見的情況),現(xiàn)有方案要求重傳整個(gè)RDMA數(shù)據(jù),而實(shí)際上只有小部分?jǐn)?shù)據(jù)才需要重傳,導(dǎo)致大部分已經(jīng)正確接收到的數(shù)據(jù)需要重傳.
2)計(jì)數(shù)器的硬件資源消耗較大,導(dǎo)致芯片中并行RDMA傳輸數(shù)量受限,直接導(dǎo)致方案的可擴(kuò)展性不好,這在大規(guī)模并行機(jī)中成為很嚴(yán)重的問題.
3)對(duì)于發(fā)送方滑動(dòng)窗口的方案,由于方案要求接收方為每個(gè)數(shù)據(jù)報(bào)文返回一個(gè)響應(yīng)報(bào)文,增加了互連網(wǎng)絡(luò)的開銷,并且加大了RDMA傳輸?shù)难舆t;此外,發(fā)送方的重傳緩沖區(qū)的資源開銷也很大,方案無法支持大容量的多路并行傳輸.
鑒于傳統(tǒng)RDMA實(shí)現(xiàn)方法存在的缺點(diǎn),本文提出了基于接收方滑動(dòng)窗口的RDMA實(shí)現(xiàn)方法,方法有效支持亂序傳輸?shù)幕ミB網(wǎng)絡(luò),并支持出錯(cuò)情況下的部分RDMA數(shù)據(jù)重傳,有效提高了在不可靠網(wǎng)絡(luò)環(huán)境下的數(shù)據(jù)傳輸效率.此外,方法的另一個(gè)有點(diǎn)硬件實(shí)現(xiàn)的資源開銷較小,在同等的資源開銷下,方法能夠支持更多數(shù)目的RDMA并行傳輸.
2.1 基于節(jié)點(diǎn)控制器的RDMA實(shí)現(xiàn)思路
在基于滑動(dòng)窗口的RDMA實(shí)現(xiàn)方法中,一次RDMA傳輸(以寫操作為例)分為如圖1所示的3步.
步驟1 發(fā)送方向接收方發(fā)送RDMA傳輸請(qǐng)求報(bào)文,接收方為其分配相應(yīng)的接收資源,主要是保存在片內(nèi)RAM的上下文接收資源.資源分配成功后,接收方向發(fā)送方發(fā)出響應(yīng),告知接收方上文標(biāo)號(hào)(CID),通過CID可以從RAM中取出接收方上下文信息并處理.如果不成功,則接收方返回分配失敗的響應(yīng),發(fā)送方接收到該響應(yīng)后,將按照一定的策略延遲重試,直到連接建立成功.
步驟2 連接建立成功后,發(fā)送方向接收方發(fā)出RDMA寫報(bào)文,其中每個(gè)報(bào)文中均攜帶接收方的接收上下文標(biāo)號(hào)(CID).由于一次RDMA傳輸分解為多個(gè)RDMA寫報(bào)文組成,每個(gè)RDMA寫報(bào)文攜帶相應(yīng)的序列號(hào).例如,一個(gè)RDMA報(bào)文分解為4 096個(gè)寫報(bào)文時(shí),報(bào)文攜帶的序列號(hào)為0~4 095.通過報(bào)文序列號(hào),可以計(jì)算出本報(bào)文所傳輸數(shù)據(jù)在內(nèi)存中的起始地址(基地址+序號(hào)×單報(bào)文數(shù)據(jù)長(zhǎng)度).
步驟3 接收方通過滑動(dòng)窗口,將RDMA報(bào)文收集完全后,向發(fā)送方返回響應(yīng),通知發(fā)送方RDMA傳輸完成,發(fā)送方和接收方可以將RDMA傳輸連接撤銷,相關(guān)資源可以釋放重用.
圖1 基于滑動(dòng)窗口的RDMA執(zhí)行順序
對(duì)于RDMA讀來說,可以看作是接收方首先向發(fā)送方發(fā)出RDMA請(qǐng)求,由RDMA讀的接收方發(fā)起RDMA寫請(qǐng)求,因而在實(shí)現(xiàn)上也可以由RDMA寫完成,本文中重點(diǎn)關(guān)注RDMA寫傳輸?shù)膶?shí)現(xiàn).
基于本文的方法,一次RDMA傳輸可能由多種類型的報(bào)文參與完成,報(bào)文所包含的位域和說明如表2所示.
表2 主要報(bào)文位域說明
報(bào)文類型及說明如表3所示.
表3 RDMA傳輸參與報(bào)文類型
2.2 連接上下文格式
連接上下文是記錄RDMA傳輸狀態(tài)的表格數(shù)據(jù)結(jié)構(gòu),表格中每一個(gè)表項(xiàng)記錄一次RDMA傳輸過程中的狀態(tài).在硬件實(shí)現(xiàn)上,上下文記錄表主要保存在片內(nèi)存儲(chǔ)器中,上下文表項(xiàng)的個(gè)數(shù)是折衷性能和硬件資源而確定的.上下文表項(xiàng)的項(xiàng)數(shù)越多,則其他節(jié)點(diǎn)與該節(jié)點(diǎn)可以建立的連接數(shù)越多,因而系統(tǒng)中可以并發(fā)進(jìn)行的RDMA傳輸越多,并發(fā)傳輸規(guī)模對(duì)大系統(tǒng)的可擴(kuò)展性具有意義.
在本文提出的方法中,連接上下文包括發(fā)送端和接收端兩部分,進(jìn)行RDMA傳輸時(shí),需要在發(fā)送端和接收端的連接上下文間建立連接,上下文表項(xiàng)的結(jié)構(gòu)由表4所示.
2.3 RDMA傳輸流程
2.3.1 連接建立流程
建立連接的過程是在發(fā)送方和接收方的上下文中為本次RDMA傳輸分配資源.發(fā)送方的上下文資源在節(jié)點(diǎn)收到處理器發(fā)出的RDMA請(qǐng)求時(shí)分配,并向接收方節(jié)點(diǎn)發(fā)送連接請(qǐng)求RDMA_RQT報(bào)文,通知接收方節(jié)點(diǎn)分配接收上下文.
表4 RDMA連接上下文表項(xiàng)數(shù)據(jù)結(jié)構(gòu)
接收方將分配的結(jié)果,即CID號(hào),通過RDMA_RSP報(bào)文通知發(fā)送方.接收方無可用上下文資源而導(dǎo)致分配失敗時(shí),也通過RDMA_RSP報(bào)文告知發(fā)送方,發(fā)送方可按照策略(延遲重試等)重試.
2.3.2 正常數(shù)據(jù)傳輸流程
在高性能并行計(jì)算機(jī)中,互連網(wǎng)絡(luò)由于鏈路帶寬平衡、自適應(yīng)路由等特性,網(wǎng)絡(luò)經(jīng)常是亂序的,即報(bào)文在發(fā)送端發(fā)送的順序和報(bào)文在接收端接收的順序不一致.互連網(wǎng)絡(luò)的鏈路故障也會(huì)導(dǎo)致報(bào)文丟失.為了解決以上的問題,本文采用滑動(dòng)窗口的方式支持上述的網(wǎng)絡(luò)特性.
舉例來說明數(shù)據(jù)的傳輸流程,假設(shè)發(fā)送方需要發(fā)送5個(gè)數(shù)據(jù)報(bào)文到接收方,報(bào)文的序列號(hào)分別為0至4, 由于網(wǎng)絡(luò)亂序的原因,到達(dá)接收方時(shí)的順序?yàn)?,1,0,4,3,接收方接收的流程如圖2所示.
在接收上下文中,WBASE的含義是當(dāng)前期望接收的數(shù)據(jù)報(bào)文的最小序列號(hào),即序號(hào)之前的報(bào)文全部接收.在建立連接時(shí),WBASE初始化為0,即RDMA報(bào)文序列中的第1個(gè)報(bào)文.接收標(biāo)志向量表明的是WBASE序號(hào)之后的128個(gè)(假設(shè)標(biāo)志向量的位寬為128位)數(shù)據(jù)報(bào)文是否已經(jīng)收到,為了計(jì)算方便,向量的下標(biāo)從1開始計(jì)數(shù),如果WVEC的第i位為1,則表明序號(hào)為WBASE+i的報(bào)文已經(jīng)被接收方成功接收.
如果接收方收到報(bào)文的序列號(hào)在接收窗口內(nèi),但不是最小的未接收?qǐng)?bào)文的序列號(hào),即:PIDX>WBASE,并且PIDX≤WBASE+128.在這種情況下,只需要將WVEC[PIDX-WBASE]置為1即可,表明已經(jīng)收到了序號(hào)為PIDX的數(shù)據(jù)報(bào)文.即在向量WVEC中,索引下標(biāo)為i的位為1時(shí),表示收到了序號(hào)為WBASE+i的數(shù)據(jù)報(bào)文.
圖2 基于窗口的目的方上下文處理
如果收到的報(bào)文等于WBASE,則表明收到了下一個(gè)最小序號(hào)的數(shù)據(jù)報(bào)文,在這種情況下,需要更新當(dāng)前窗口的WBASE和WVEC.窗口WBASE需要更新為未接收?qǐng)?bào)文中的下一個(gè)最小的序號(hào),可以根據(jù)當(dāng)前WBASE和WVEC的值計(jì)算得到:
WBASE=WBASE+LOC(WVEC).
WVEC的更新方法是:
WVEC=WVEC< 其中,LOC(WVEC)表示向量WVEC從最低位開始連續(xù)1的個(gè)數(shù). 2.3.3 窗口外報(bào)文處理 在某些極端互連網(wǎng)絡(luò)延遲情況下,有可能接收方收到的報(bào)文在窗口之外,即:PIDX PIDX PIDX>WBASE+128的情況是由于網(wǎng)絡(luò)亂序,或某些極端情況下的重傳引起的,此時(shí),由于接收方的窗口還不能覆蓋該報(bào)文的序號(hào),接收方也將丟棄此類報(bào)文,由于接收方主存還未寫入數(shù)據(jù),因而接收方需要向發(fā)送方返回RDMA_RESEND報(bào)文,通知發(fā)送方重發(fā)該報(bào)文. 綜上所述,接收方收到報(bào)文后的處理流程如圖3所示.在算法描述中,假設(shè)窗口向量的位寬為128位,為了方便計(jì)算,下標(biāo)從1開始計(jì)數(shù). 2.3.4 異常數(shù)據(jù)傳輸流程 RDMA傳輸過程中可能出現(xiàn)的異常情況包括:接收方報(bào)文接收超時(shí)、接收到窗口范圍之外的報(bào)文、僵尸報(bào)文處理. 1)接收方超時(shí)處理 基于本文提出的滑動(dòng)窗口RDMA傳輸方法,接收方為上下文中WBASE所指示的數(shù)據(jù)報(bào)文建立超時(shí)機(jī)制,也就是滑動(dòng)窗口中序列號(hào)最小的那個(gè)報(bào)文,因而每個(gè)窗口只需要一個(gè)超時(shí)計(jì)數(shù)器進(jìn)行超時(shí)計(jì)數(shù).如果當(dāng)前滑動(dòng)窗口最底部的報(bào)文超時(shí),接收方將主動(dòng)向發(fā)送方發(fā)出RDMA_RESEND報(bào)文,該報(bào)文中攜帶著當(dāng)前WBASE指針,要求發(fā)送方重發(fā)序號(hào)為WBASE的報(bào)文.發(fā)送方收到RDMA_RESEND報(bào)文后,需要根據(jù)RDMA請(qǐng)求中,源方的基地址以及報(bào)文序號(hào),從源方內(nèi)存中重新讀取該報(bào)文的數(shù)據(jù). 如果接收方連續(xù)多次數(shù)據(jù)報(bào)文接收超時(shí),可能的原因是網(wǎng)絡(luò)中某條鏈路持續(xù)故障,導(dǎo)致大量數(shù)據(jù)報(bào)文丟包.在這種情況下,接收方可以要求發(fā)送方重發(fā)從WBASE索引號(hào)開始的所有數(shù)據(jù)報(bào)文.報(bào)文重發(fā)的類型(單報(bào)文重發(fā),或多報(bào)文重發(fā))可以由RDMA_RESEND報(bào)文中的標(biāo)志位指定. 圖3 接收方接收到報(bào)文時(shí)的窗口處理流程 2)僵尸報(bào)文處理 所謂僵尸報(bào)文,是指由于報(bào)文重傳導(dǎo)致網(wǎng)絡(luò)中出現(xiàn)重復(fù)報(bào)文,在網(wǎng)絡(luò)嚴(yán)重阻塞的情況下,可能發(fā)送方和接收方的RDMA傳輸完成后(已經(jīng)解除了連接),重復(fù)報(bào)文才到達(dá)接收方.更嚴(yán)重的情況是,重復(fù)報(bào)文到達(dá)接收方時(shí),可能接收方上下文重新分配給其他RDMA傳輸,如果依據(jù)僵尸報(bào)文中的CID匹配接收方上下文,可能會(huì)導(dǎo)致當(dāng)前的RDMA傳輸錯(cuò)誤.RDMA傳輸協(xié)議需要正確辨別出僵尸報(bào)文,在接收方將其丟棄. 本文采用兩種策略來判斷僵尸報(bào)文: 1)在接收方上下文中,記錄發(fā)送方上下文信息,包括發(fā)送方節(jié)點(diǎn)號(hào)、發(fā)送方上下文索引號(hào)、發(fā)送方RDMA傳輸標(biāo)號(hào)(MSGID). 2) 發(fā)送方的MSGID用來進(jìn)一步區(qū)分使用相同發(fā)送上下文的RDMA傳輸,MSGID的位數(shù)可以按實(shí)際系統(tǒng)網(wǎng)絡(luò)情況確定,例如20位的MSGID出現(xiàn)重復(fù)的時(shí)間間隔已經(jīng)足夠長(zhǎng),可以有效區(qū)分網(wǎng)絡(luò)中的僵尸報(bào)文. 針對(duì)本文提出的基于接收方滑動(dòng)窗口的RDMA傳輸方法,我們采用SystemVerilog[11]建模語言實(shí)現(xiàn)了硬件傳輸引擎,并在VCS模擬器上針對(duì)多種系統(tǒng)規(guī)模和實(shí)現(xiàn)參數(shù)進(jìn)行了仿真. 在模擬環(huán)境中,節(jié)點(diǎn)間通過3D-Torus模式進(jìn)行互連,互連網(wǎng)絡(luò)采用自適應(yīng)路由的方式,為了增加網(wǎng)絡(luò)報(bào)文亂序的力度,網(wǎng)絡(luò)模型中隨機(jī)加入了隨機(jī)的報(bào)文延遲. 已有的RDMA傳輸方法主要有:發(fā)送方滑動(dòng)窗口方案、接收方報(bào)文計(jì)數(shù)器方案.本文分別在硬件實(shí)現(xiàn)復(fù)雜度、傳輸延遲和不可靠鏈路條件下的傳輸性能等方面與本文提出的方案進(jìn)行對(duì)比評(píng)測(cè). 3.1 實(shí)現(xiàn)資源對(duì)比 對(duì)于給定的RDMA傳輸方案,其在硬件中的資源消耗情況對(duì)于系統(tǒng)的可擴(kuò)展性有顯著的影響,方案所需的硬件資源小,意味著在有限的芯片中,實(shí)現(xiàn)更多的連接資源.本文分析對(duì)比了三種RDMA實(shí)現(xiàn)方案的硬件資源消耗情況. 基于發(fā)送方滑動(dòng)窗口的實(shí)現(xiàn)方案中,發(fā)送方將發(fā)送給接收方的報(bào)文首先保存在重傳緩沖區(qū)中,由于緩沖區(qū)需要保存完整的報(bào)文,并且需要為每個(gè)接收方節(jié)點(diǎn)設(shè)置一個(gè)獨(dú)立的重傳緩沖區(qū),因而這種方案中,源方的重傳緩沖區(qū)的資源消耗量非常大. 基于接收方計(jì)數(shù)器的方案中,發(fā)送方不需要設(shè)置發(fā)送緩沖區(qū),其主要的硬件開銷來源于發(fā)送方和接收方上下文資源.該方案中,接收方上下文中需要保存的信息有:超時(shí)計(jì)數(shù)器、發(fā)送方上下文表項(xiàng)號(hào)、RDMA報(bào)文總數(shù)、當(dāng)前已接收的RDMA報(bào)文數(shù)、重傳索引號(hào)(為了在接收方區(qū)分重傳報(bào)文與延遲到達(dá)的報(bào)文).可以看出,接收方計(jì)數(shù)器方案中,上下文中的計(jì)數(shù)器資源比較多,存儲(chǔ)器開銷比較大. 本文提出的接收方滑動(dòng)窗口方案中,主要硬件開銷也來源于上下文資源,但本文上下文資源的信息量比較少,主要包括以下信息:窗口基地址、窗口接收向量、超時(shí)計(jì)數(shù)器、末尾報(bào)文標(biāo)志.此外,由于向量操作的邏輯比較簡(jiǎn)單,硬件組合邏輯和時(shí)序邏輯的開銷也比較小. 3種方案的資源對(duì)比情況如表5所示. 表5 3種RDMA傳輸方案硬件實(shí)現(xiàn)開銷對(duì)比 3.2 RDMA傳輸延遲評(píng)測(cè) 在本項(xiàng)延遲評(píng)測(cè)中,假設(shè)互連網(wǎng)絡(luò)是理想的互連網(wǎng)絡(luò),即網(wǎng)絡(luò)中沒有錯(cuò)誤報(bào)文,本文在模擬器上分別模擬了三種RDMA傳輸策略的延遲情況,RDMA數(shù)據(jù)的傳輸規(guī)模分別為32 K,64 K,128 K和256 K,RDMA傳輸?shù)难舆t如圖4所示. 在三種方案中,基于發(fā)送方滑動(dòng)窗口的延遲最大.主要原因是該方案需要接收方返回響應(yīng)報(bào)文,其他兩種方案在大部分情況下,接收方不需要向發(fā)送方返回響應(yīng)報(bào)文.由于響應(yīng)報(bào)文的存在,增加了網(wǎng)絡(luò)負(fù)載,在網(wǎng)絡(luò)比較擁塞的情況下,有可能會(huì)增大RDMA數(shù)據(jù)傳輸?shù)难舆t.此外,發(fā)送方滑動(dòng)窗口的大小設(shè)置對(duì)延遲也有一定的影響,如果在滑動(dòng)窗口的報(bào)文發(fā)送窗口內(nèi),接收方的響應(yīng)報(bào)文未到達(dá)發(fā)送方,則發(fā)送發(fā)窗口報(bào)文的發(fā)送會(huì)產(chǎn)生停頓. 在無重傳的情況下,本文方案的延遲基本與接收方計(jì)數(shù)器的方案相當(dāng),個(gè)別RDMA的延遲大于接收方計(jì)數(shù)方案,主要原因是由于網(wǎng)絡(luò)中亂序的力度較大造成的,如果報(bào)文超出了接收方窗口的范圍,本文的方案會(huì)導(dǎo)致發(fā)送方重傳該報(bào)文,帶來了一定的延遲開銷. 在本文的方案中,接收方接收向量的長(zhǎng)度設(shè)置應(yīng)綜合考慮網(wǎng)絡(luò)行為和硬件資源開銷設(shè)置,增加接收向量的長(zhǎng)度,能夠容忍更大力度的網(wǎng)絡(luò)亂序行為,但會(huì)導(dǎo)致片上存儲(chǔ)器資源的增加(增加了接收方上下文資源). RDMA傳輸容量 3.3 不可靠鏈路性能評(píng)測(cè) 在本項(xiàng)延遲評(píng)測(cè)中,假設(shè)互連網(wǎng)絡(luò)是不可靠的互連網(wǎng)絡(luò),模擬時(shí)隨機(jī)的丟棄網(wǎng)絡(luò)中傳輸?shù)腞DMA數(shù)據(jù)報(bào)文.本文在模擬器上分別模擬了三種RDMA傳輸策略的延遲情況,RDMA數(shù)據(jù)的傳輸規(guī)模分別為32 K,64 K,128 K,256 K,RDMA傳輸?shù)难舆t如圖5所示. RDMA傳輸容量 在相同的注錯(cuò)概率下,本文提出的方案的延遲要遠(yuǎn)遠(yuǎn)優(yōu)于接收方計(jì)數(shù)器方案,主要的原因是采用了部分重傳的策略,只重傳出錯(cuò)的報(bào)文,并且在出錯(cuò)的概率較小的情況下,只是單報(bào)文的重傳.而接收方計(jì)數(shù)器方案遇到了一個(gè)報(bào)文錯(cuò)誤后,需要重傳RDMA的全部數(shù)據(jù),將帶來非常大的延遲開銷. 與發(fā)送方滑動(dòng)窗口的方案相比,本文的方案的延遲也有明顯的降低.主要的原因是,在單報(bào)文出錯(cuò)的情況下,發(fā)送方滑動(dòng)窗口的方案將重傳整個(gè)重傳緩沖區(qū)中的報(bào)文,并且發(fā)送方在等待超時(shí),將停頓后續(xù)數(shù)據(jù)報(bào)文的發(fā)送,這些策略都帶來了較大的延遲開銷. 隨著注錯(cuò)概率的增加,本文的方案的低延遲優(yōu)勢(shì)更加明顯,在實(shí)際系統(tǒng)中,如果鏈路層經(jīng)常出現(xiàn)斷開的情況,因而接收方計(jì)數(shù)的方案的性能將非常低. 3.4 網(wǎng)絡(luò)錯(cuò)誤力度對(duì)傳輸延遲的影響 在本項(xiàng)測(cè)試中,在網(wǎng)絡(luò)模型中依次增加了隨機(jī)丟包的概率,來測(cè)試網(wǎng)絡(luò)錯(cuò)誤力度對(duì)RDMA傳輸延遲的影響,測(cè)試網(wǎng)絡(luò)丟包的概率為無丟包,1 ‰,2 ‰,3 ‰,4 ‰和5 ‰.256 K RDMA傳輸?shù)难舆t各種方案的下降概率如圖6所示. 網(wǎng)絡(luò)丟包概率/‰ 從測(cè)試結(jié)果可以看出,接收方滑動(dòng)窗口對(duì)網(wǎng)絡(luò)容錯(cuò)的能力最高.由于采用了丟失報(bào)文重傳的機(jī)制,RDMA傳輸?shù)男阅芟陆捣茸钚?而接收方計(jì)數(shù)方案的性能下降幅度最大,其原因是任何一次網(wǎng)絡(luò)丟包,都將導(dǎo)致方案重傳整個(gè)RDMA的數(shù)據(jù).發(fā)送方滑動(dòng)窗口的性能下降幅度居中,主要原因是響應(yīng)報(bào)文的回傳時(shí)間影響了整個(gè)RDMA傳輸?shù)男阅? 3.5 滑動(dòng)窗口大小對(duì)性能的影響 基于本文提出的方案,接收方滑動(dòng)窗口的大小選取主要取決于互聯(lián)網(wǎng)絡(luò)的亂序力度,滑動(dòng)窗口大小的選取應(yīng)能夠使接收方收到的絕大部分?jǐn)?shù)據(jù)報(bào)文包含在接收窗口內(nèi),因而能夠避免數(shù)據(jù)報(bào)文的重傳.對(duì)于亂序力度較低的路由策略,可適當(dāng)選取較小的滑動(dòng)窗口,而對(duì)于亂序力度較高的路由策略,應(yīng)選擇較大的滑動(dòng)窗口. 為了測(cè)試滑動(dòng)窗口大小對(duì)傳輸性能的影響,我們模擬了在某種亂序力度下各種窗口大小的延遲.在測(cè)試中,通過修改網(wǎng)絡(luò)報(bào)文傳輸延遲的參數(shù),得到一次模擬中最大接收方相鄰兩個(gè)數(shù)據(jù)報(bào)文的序號(hào)間隔來反映網(wǎng)絡(luò)的亂序力度,圖7給出了在相同大小的窗口下,亂序力度增大時(shí),RDMA傳輸性能的下降比例. 網(wǎng)絡(luò)丟包概率 從測(cè)試的結(jié)果來看,當(dāng)網(wǎng)絡(luò)傳輸?shù)膩y序力度小于窗口的大小時(shí),RDMA傳輸?shù)男阅芑九c順序傳輸?shù)男阅芟喈?dāng),在這種配置條件下,接收方基本沒有重傳的現(xiàn)象發(fā)生.當(dāng)網(wǎng)絡(luò)傳輸?shù)膩y序力度大于窗口的大小時(shí),RDMA傳輸?shù)男阅苡辛溯^明顯的下降,例如亂序力度達(dá)到64時(shí),如果滑動(dòng)接收窗口的大小為32,則RDMA的傳輸性能為理想情況下性能的70%,而當(dāng)滑動(dòng)窗口的大小設(shè)為64時(shí),傳輸性能可達(dá)到理想情況下的95%.以上模擬說明,在實(shí)際系統(tǒng)中,為了確保RDMA傳輸?shù)男阅埽瑧?yīng)根據(jù)網(wǎng)絡(luò)的具體實(shí)現(xiàn),選擇適當(dāng)?shù)幕瑒?dòng)窗口大小,以使大部分情況下,接收方收到的數(shù)據(jù)報(bào)文都落在滑動(dòng)窗口范圍內(nèi). 隨著并行計(jì)算機(jī)高速互連網(wǎng)絡(luò)性能的提升及網(wǎng)絡(luò)規(guī)模的擴(kuò)大,互連網(wǎng)絡(luò)的平均無故障運(yùn)行時(shí)間越來越短,迫切要求體系結(jié)構(gòu)引入容錯(cuò)性設(shè)計(jì).本文提出的基于接收方滑動(dòng)窗口的RDMA傳輸方法,采用部分出錯(cuò)數(shù)據(jù)部分重傳的策略,大大降低了現(xiàn)有方法的傳輸延遲,并且方法的實(shí)現(xiàn)簡(jiǎn)單,能夠有效的實(shí)現(xiàn)在節(jié)點(diǎn)控制器(NIC)的硬件中,且方法有較好的可擴(kuò)展性. [1] [EB/OL][2014-09-15]. http://www.top500.org [2] MIYAZAKI H, KUSANO Y, SHINJOU N,etal. Overview of the K computer system[J]. FUJITSU Scientific Technical Journal, 2012, 48(3): 255-265. [3] VENKATA M G, GRAHAM R L, LADD J,etal. Exploring the all-to-all collective optimization space with connectX CORE-Direct[C]//Proceedings of 41st International Conference on Parallel Processing (ICPP). New York: IEEE,2012:289-298. [4] FAANES G, BATAINEH A. Cray cascade: a scalable HPC system based on a dragonfly network[C]//International Conference for High Performance Computing, Networking, Storage and Analysis. Salt Lake City, USA:IEEE, 2012. [5] WEI Long-fei, JI Jin-yue, LIU Hai-qi,etal. A multi-rate SerDes transceiver for IEEE 1394b applications[C]// IEEE Asia-Pacific Conference on Circuits and Systems.Kaohsiung:IEEE,2012. [6] AZIZ P, HEALEY A, LIU CATHY,etal. SerDes design and modeling over 25+ Gb/s serial link[C]//44th International Symposium on Microelectronics. Long Beach, California, USA : IEEE, 2011. [7] NEDOVIC N, KRISTENSSON A, PARIKH S,etal. A 3 watt 39.8-44.6 Gb/s dual-mode SFI5.2 SerDes chip set in 65 nm CMOS[J]. IEEE Journal of Solid-State Circuits, 2010(45):2016-2029. [8] XIE Min, LUYu-tong, LIU Long,etal. Implementation and evaluation of network interface and message passing services for TianHe-1A supercomputer[C]//Proceedings of IEEE 19th Annual Symposium on High-Performance Interconnects (HOTI). New York: IEEE, 2011: 78-86. [9] TIPPARAJU V, GROPP W, RITZDORF H,etal. Investigating high performance RMA interfaces for the MPI-3 standard[C]//Proceedings of the 2009 International Conference on Parallel Processing (ICPP). Washington, DC: IEEE Computer Society, 2009: 293-300. [10]SONJA F. Hardware support for efficient packet processing[D].Columbus, Ohio: Ohio State University, 2012. [11]GANDHI M. SystemVerilog: The complete solution[J].Electronic Design, 2006(54) :22-27. A Fast RDMA Offload Method for Unreliable Interconnection Networks WANG Shao-gang?,XU Wei-xia,WU Dan,PANG Zheng-bin,XIA Jun (College of Computer, National Univ of Defense Technology, Changsha, Hunan 410073, China) 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 fault-tolerate 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. remote data memory access, RDMA, MPI, sliding window approach 1674-2974(2015)08-0100-08 2014-09-16 國(guó)家自然科學(xué)基金資助項(xiàng)目 (61202024,61202126),National Natural Science Foundation of China(61202024,61202126) 王紹剛(1979-),男,山東煙臺(tái)人,國(guó)防科技大學(xué)博士 ?通訊聯(lián)系人,E-mail:wshaogang79@gmail.com TP302.1 A3 性能評(píng)測(cè)
4 結(jié) 論