王紹剛等
摘要:大數(shù)據(jù)量的遠(yuǎn)程內(nèi)存訪問(wèn)(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ù)的開(kāi)銷,在相同的錯(cuò)誤概率下,新方法的傳輸效率得到了很大的提升.
關(guān)鍵詞:遠(yuǎn)程內(nèi)存訪問(wèn);RDMA;MPI;滑動(dòng)窗口
中圖分類號(hào):TP302.1 文獻(xiàn)標(biāo)識(shí)碼: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
高性能并行計(jì)算機(jī)系統(tǒng)發(fā)展迅速,2013年11月份發(fā)布的Top500高性能計(jì)算機(jī)排行榜中,系統(tǒng)峰值性能已經(jīng)達(dá)到50 P (Petaflops),處理核數(shù)達(dá)到數(shù)十萬(wàn)的規(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ù)百萬(wàn)個(gè)節(jié)點(diǎn)的高效通信,節(jié)點(diǎn)間通信機(jī)制已成為制約系統(tǒng)性能乃至成敗的關(guān)鍵因素.
并行計(jì)算機(jī)互連網(wǎng)絡(luò)中,Serdes鏈路速率已達(dá)40Gbps[5-7],高速鏈路的誤碼率大大增加,給鏈路級(jí)的可靠傳輸帶來(lái)了很大的挑戰(zhàn);隨著網(wǎng)絡(luò)規(guī)模的擴(kuò)大,網(wǎng)絡(luò)的平均故障時(shí)間越來(lái)越短,并行計(jì)算機(jī)的互連網(wǎng)絡(luò)變得越來(lái)越“不可靠”.在這種條件下,并行計(jì)算機(jī)體系結(jié)構(gòu)設(shè)計(jì)迫切需要進(jìn)行對(duì)應(yīng)的容錯(cuò)設(shè)計(jì).
遠(yuǎn)程內(nèi)存訪問(wèn)(RDMA)是并行機(jī)系統(tǒng)中最基本的通信模式之一[1,3],其他復(fù)雜的聚合通信也依賴基本的RDMA支持,在其基礎(chǔ)上實(shí)現(xiàn)的并行軟件運(yùn)行庫(kù)(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)漏檢、鏈路故障處理等問(wèn)題.
硬件支持RDMA通信的現(xiàn)有方法包括文獻(xiàn)[2-4,8]中的工作.總體來(lái)看,現(xiàn)有方法存在的主要問(wèn)題是方法的可擴(kuò)展性不高,在提高并行RDMA傳輸?shù)臄?shù)量時(shí),硬件資源的開(kāi)銷增長(zhǎng)較快;單報(bào)文出錯(cuò)的情況下,需要將整個(gè)RDMA報(bào)文完全重傳,帶來(lái)了不必要的開(kāi)銷.
針對(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ù)重傳,通過(guò)采用部分重傳的方法,避免了現(xiàn)有方法在單報(bào)文出錯(cuò)或丟失時(shí),需要將整個(gè)RDMA數(shù)據(jù)進(jìn)行重傳所帶來(lái)的開(kāi)銷.
1遠(yuǎn)程內(nèi)存訪問(wèn)(RDMA)
1.1概念
遠(yuǎn)程內(nèi)存訪問(wèn)(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ū)域中,可以通過(guò)表1的參數(shù)進(jìn)行描述.
2.2連接上下文格式
連接上下文是記錄RDMA傳輸狀態(tài)的表格數(shù)據(jù)結(jié)構(gòu),表格中每一個(gè)表項(xiàng)記錄一次RDMA傳輸過(guò)程中的狀態(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.3RDMA傳輸流程
2.3.1連接建立流程
建立連接的過(guò)程是在發(fā)送方和接收方的上下文中為本次RDMA傳輸分配資源.發(fā)送方的上下文資源在節(jié)點(diǎn)收到處理器發(fā)出的RDMA請(qǐng)求時(shí)分配,并向接收方節(jié)點(diǎn)發(fā)送連接請(qǐng)求當(dāng)前窗口的數(shù)據(jù)報(bào)文接收標(biāo)志,由向量格式表示,向量的位寬表明當(dāng)前接收窗口的大小,即系統(tǒng)可支持的一次RDMA傳輸中并發(fā)報(bào)文傳輸數(shù)量. 第i 位為1時(shí),表示接收方已經(jīng)收到序列號(hào)為WBASE + i的RDMA數(shù)據(jù)報(bào)文(為了計(jì)算方便,向量索引的下標(biāo)從1開(kāi)始計(jì)數(shù)).〖BG)F〗〖HJ〗〖HT5SS〗
接收方將分配的結(jié)果,即CID號(hào),通過(guò)RDMA_RSP報(bào)文通知發(fā)送方.接收方無(wú)可用上下文資源而導(dǎo)致分配失敗時(shí),也通過(guò)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)文丟失.為了解決以上的問(wèn)題,本文采用滑動(dòng)窗口的方式支持上述的網(wǎng)絡(luò)特性.
舉例來(lái)說(shuō)明數(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開(kāi)始計(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[PIDXWBASE]置為1即可,表明已經(jīng)收到了序號(hào)為PIDX的數(shù)據(jù)報(bào)文.即在向量WVEC中,索引下標(biāo)為i的位為1時(shí),表示收到了序號(hào)為WBASE+i的數(shù)據(jù)報(bào)文.
如果收到的報(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從最低位開(kāi)始連續(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開(kāi)始計(jì)數(shù). 2.3.4異常數(shù)據(jù)傳輸流程 RDMA傳輸過(guò)程中可能出現(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ù).