• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      一種基于NIC的RDMA可靠傳輸協(xié)議的設(shè)計與實現(xiàn)*

      2014-09-14 01:35:29龐征斌???/span>
      計算機(jī)工程與科學(xué) 2014年2期
      關(guān)鍵詞:發(fā)送數(shù)據(jù)流水線校驗

      夏 軍,龐征斌,劉 路,張 峻,???/p>

      (國防科學(xué)技術(shù)大學(xué)計算機(jī)學(xué)院,湖南 長沙 410073)

      一種基于NIC的RDMA可靠傳輸協(xié)議的設(shè)計與實現(xiàn)*

      夏 軍,龐征斌,劉 路,張 峻,???/p>

      (國防科學(xué)技術(shù)大學(xué)計算機(jī)學(xué)院,湖南 長沙 410073)

      高性能計算機(jī)不斷增長的規(guī)模和復(fù)雜性使得可靠性成為影響高性能計算機(jī)系統(tǒng)可用性的關(guān)鍵因素,系統(tǒng)互連網(wǎng)絡(luò)是高性能計算機(jī)的重要組成部分,其可靠性是高性能計算機(jī)系統(tǒng)設(shè)計必須考慮的重要問題。針對高性能計算機(jī)系統(tǒng)互連網(wǎng)絡(luò)可能出現(xiàn)的故障,提出一種基于NIC實現(xiàn)的RDMA可靠傳輸協(xié)議,給出了一種通用的設(shè)計實現(xiàn)方案,并對該方案的幾種具體優(yōu)化設(shè)計實現(xiàn)方法進(jìn)行了討論。提出的可靠傳輸協(xié)議及實現(xiàn)方案能容忍系統(tǒng)互連網(wǎng)絡(luò)可能出現(xiàn)的多種網(wǎng)絡(luò)故障,并能盡量減少實現(xiàn)可靠傳輸所帶來的額外開銷。實驗結(jié)果表明,所提出的RDMA可靠傳輸?shù)膶嶋H測試性能與無連接RDMA傳輸相當(dāng)。

      RDMA;可靠性;網(wǎng)絡(luò)接口;可靠傳輸協(xié)議

      1 引言

      高性能計算機(jī)系統(tǒng)日益增長的規(guī)模和不斷增加的復(fù)雜性使系統(tǒng)硬件部件出現(xiàn)故障的可能性增大[1],性能已不再是衡量系統(tǒng)好壞的唯一指標(biāo),系統(tǒng)的可用性成為高性能計算機(jī)系統(tǒng)設(shè)計需要優(yōu)先考慮的重要因素。系統(tǒng)互連網(wǎng)絡(luò)既是高性能計算機(jī)系統(tǒng)的重要組成部分,也是容易出現(xiàn)瞬時或永久性故障的部件[2]?;ミB網(wǎng)絡(luò)一般會提供點(diǎn)點(diǎn)可靠傳輸機(jī)制,但卻無法應(yīng)對諸如報文丟失或鏈路斷開這樣的網(wǎng)絡(luò)故障。一旦出現(xiàn)這樣的網(wǎng)絡(luò)故障,應(yīng)用程序?qū)o法正常完成,一般需要通過系統(tǒng)軟件提供的檢查點(diǎn)機(jī)制來恢復(fù)故障,然后從最近的檢查點(diǎn)開始重新執(zhí)行。系統(tǒng)軟件提供的檢查點(diǎn)機(jī)制雖然能在一定程度上容忍網(wǎng)絡(luò)故障,但是檢查點(diǎn)的記錄會影響程序的執(zhí)行性能,并且出錯恢復(fù)的軟件開銷也比較大。硬件通過提供端端可靠數(shù)據(jù)傳輸服務(wù)能容忍報文丟失或鏈路斷開這樣的網(wǎng)絡(luò)故障,與基于軟件的錯誤恢復(fù)方法相比,端端可靠數(shù)據(jù)傳輸機(jī)制能在消息級進(jìn)行實時錯誤檢測和恢復(fù),不影響程序正常執(zhí)行,出錯后也不用暫停程序重啟執(zhí)行,因此其錯誤檢測和出錯恢復(fù)的開銷較小。

      Cray公司的SeaStar[3]、Gemini[4]和Aries[5]互連芯片主要依靠CRC檢錯和滑動窗口重傳機(jī)制保證點(diǎn)點(diǎn)可靠傳輸,硬件上未提供端端可靠傳輸服務(wù),消息的端端可靠傳輸依賴于上層軟件實現(xiàn)。Infiniband[6]提供硬件級的端端可靠傳輸服務(wù)。但是,其用于連接服務(wù)的上下文信息保存在CPU內(nèi)存中,一般每建立一個連接需要消耗幾KB的內(nèi)存。隨著系統(tǒng)規(guī)模的增長和單結(jié)點(diǎn)線程數(shù)的增加,建立Infiniband連接所需的內(nèi)存容量也會成倍增長,嚴(yán)重影響系統(tǒng)的可擴(kuò)展性。Sivaram[7]基于IBM HPS網(wǎng)絡(luò)架構(gòu)提出了一種可靠RDMA傳輸?shù)慕鉀Q方案,數(shù)據(jù)傳輸前首先使用會合協(xié)議建立連接,其用于連接服務(wù)的上下文信息存放在片外SRAM中,支持多路徑傳輸,具有良好的帶寬擴(kuò)展性,但其使用的會合協(xié)議較為復(fù)雜,且RDMA寫被轉(zhuǎn)化為RDMA讀實現(xiàn),傳輸延遲也較大。

      本文提出了一種基于NIC實現(xiàn)RDMA可靠數(shù)據(jù)傳輸?shù)姆椒?,RDMA傳輸前首先建立連接,通過超時機(jī)制和消息級數(shù)據(jù)校驗機(jī)制進(jìn)行錯誤檢測,通過端端重傳機(jī)制進(jìn)行錯誤恢復(fù)。該方法將用于連接服務(wù)的上下文信息存放在NIC中,不消耗CPU內(nèi)存,因此具有較好的可擴(kuò)展性。本文還給出了基于NIC實現(xiàn)RDMA可靠數(shù)據(jù)傳輸?shù)耐ㄓ迷O(shè)計實現(xiàn)方案,分析了可能影響性能的幾個因素,并給出了具體的設(shè)計實現(xiàn)優(yōu)化方法。最后通過一組基準(zhǔn)測試程序?qū)贜IC的RDMA可靠數(shù)據(jù)傳輸性能進(jìn)行了測試,測試結(jié)果表明其實測性能與無連接RDMA數(shù)據(jù)傳輸相當(dāng)。

      2 RDMA可靠傳輸協(xié)議設(shè)計

      本文提出的RDMA可靠傳輸協(xié)議是在文獻(xiàn)[8]的基礎(chǔ)上改進(jìn)而來的,使之更易操作且易于硬件實現(xiàn)。RDMA可靠傳輸協(xié)議是基于連接的協(xié)議,RDMA消息在發(fā)送之前首先需要在發(fā)送方和接收方之間建立連接,然后才能開始傳送消息,最后傳送完畢還需返回完成響應(yīng)。在連接建立和消息傳送期間,可靠傳輸協(xié)議通過超時機(jī)制和消息級數(shù)據(jù)校驗機(jī)制進(jìn)行錯誤檢測,通過重傳機(jī)制進(jìn)行錯誤恢復(fù)。

      連接建立和數(shù)據(jù)傳輸期間的各種狀態(tài)信息需要分別記錄在發(fā)送方和接收方,我們稱發(fā)送方用于記錄這些狀態(tài)信息的數(shù)據(jù)結(jié)構(gòu)為發(fā)送方上下文,簡稱TCxt;接收方用于記錄這些狀態(tài)信息的數(shù)據(jù)結(jié)構(gòu)為接收方上下文,簡稱RCxt。TCxt通過TCxtID進(jìn)行索引,而RCxt通過RCxtID進(jìn)行索引。發(fā)送方每建立一個連接就需要分配一個TCxtID,且對應(yīng)的上下文信息存放在TCxt[TCxtID]中;同理,接收方每建立一個連接就需要分配一個RCxtID,且對應(yīng)的上下文信息存放在RCxt[RCxtID]中。TCxt和RCxt數(shù)據(jù)結(jié)構(gòu)中各個位域的定義如表1所示。

      Table 1 Context structure of RDMAreliable communication protocol表1 RDMA可靠傳輸協(xié)議上下文數(shù)據(jù)結(jié)構(gòu)

      表1給出了RCxt每個連接獨(dú)立的數(shù)據(jù)結(jié)構(gòu),除此之外,RCxt還有所有連接共享的數(shù)據(jù)結(jié)構(gòu),即RCxtFreeNum和RCxtPRI。RCxtFreeNum記錄當(dāng)前空閑的RCxt項數(shù),而RCxtPRI記錄當(dāng)前分配空閑RCxt所需的優(yōu)先級。發(fā)送方采用連接建立申請和Nack重試的方式來競爭接收方有限的RCxt資源。每次重新申請建立連接,連接申請優(yōu)先級就會增加,而接收方會記錄當(dāng)前被拒絕的連接建立申請的最大優(yōu)先級,防止發(fā)送方的連接申請出現(xiàn)餓死情形。RDMA可靠連接協(xié)議所使用的報文類型如表2所示。

      Table 2 Packets of RDMA reliable communication protocol表2 RDMA可靠傳輸協(xié)議報文

      RDMA可靠傳輸連接建立流程如下所示:

      (1)發(fā)送方獲取TCxtID和MsgID,設(shè)置TTimer=TimerCnct,TStatus=連接申請,CnctPRI=0,TErrCnt=0,TRetryNum=0,發(fā)送CnctRqtApply報文。

      (2)如果CnctRqtApply報文正確到達(dá)接收方(即既無丟失,也無消息級數(shù)據(jù)校驗錯):

      ①如果報文中的SendID、TCxtID與RCxt中的某項匹配:

      a.如果報文中的MsgID與RCxt中的MsgID相同,則發(fā)送CnctRspAck報文。

      b.否則丟棄該報文。

      ②如果報文中的SendID、TCxtID與任何RCxt項都不匹配:

      a.如果RCxtFreeNum>0且報文中的CnctPRI≥RCxtPRI或RCxtFreeNum>1,新分配RCxt項,RCxtFreeNum遞減,如果CnctPRI≥RCxtPRI則置RCxtPRI=0。設(shè)置RTimer=TimerRcvData,Rpcnt=消息數(shù)據(jù)長度,Rrcnt=0,MsgID=報文中的MsgID,RRetryNum=0,RErrCnt=0,發(fā)送CnctRspAck報文。

      b.否則,如果CnctPRI>RCxtPRI,則設(shè)置RCxtPRI=CnctPRI,發(fā)送CnctRspNack報文。

      (3)如果CnctRqtApply報文到達(dá)接收方出現(xiàn)消息級數(shù)據(jù)校驗錯,則丟棄該報文。

      (4)如果CnctRspAck報文正確到達(dá)發(fā)送方:

      ①如果能找到SendID、TCxtID、MsgID匹配的TCxt項且TStatus=連接申請,設(shè)置TTimer=TimerSendData,TStatus=發(fā)送數(shù)據(jù),TRetryNum=報文中的RRetryNum,開始發(fā)送數(shù)據(jù)報文。

      ②否則丟棄報文。

      (5)如果CnctRspNack報文正確到達(dá)發(fā)送方:

      ①如果能找到SendID、TCxtID、MsgID、RRetryNum匹配的TCxt項且TStatus=連接申請,設(shè)置TTimer=TimerCnct,TStatus=連接申請,CnctPRI遞增,發(fā)送CnctRqtApply報文。

      ②否則丟棄報文。

      (6)如果CnctRspAck或CnctRspNack報文到達(dá)發(fā)送方出現(xiàn)消息級數(shù)據(jù)校驗錯,則丟棄該報文。

      (7)如果TStatus=連接申請且TTimer=0。如果TErrCnt 還未達(dá)到允許的最大錯誤次數(shù),則重置TTimer= TimerCnct,遞增TErrCnt,發(fā)送CnctRqtApply報文;否則回收對應(yīng)的TCxt項。

      在連接已經(jīng)建立的前提下,RDMA寫數(shù)據(jù)的發(fā)送流程如下所示:

      (1)如果數(shù)據(jù)報文正確到達(dá)接收方:

      ①如果報文中的SendID、TCxtID、RCxtID、MsgID、TRetryNum與RCxt中的某項匹配,則接收該數(shù)據(jù)報文,置Rrcnt=Rrcnt+報文攜帶的數(shù)據(jù)字節(jié)數(shù)。如果Rrcnt=Prcnt,發(fā)送CnctRspCmpAck報文,回收對應(yīng)的RCxt項。

      ②否則丟棄該報文。

      (2)如果數(shù)據(jù)報文到達(dá)接收方出現(xiàn)消息級數(shù)據(jù)校驗錯:

      ①如果報文中的SendID、TCxtID、RCxtID、MsgID、TRetryNum與RCxt中的某項匹配:

      a.如果RErrCnt未達(dá)到允許的最大錯誤次數(shù),則置Rrcnt=0,RTimer= TimerRcvData,遞增RRetryNum和RErrCnt,發(fā)送CnctRspRetry報文。

      b.否則回收對應(yīng)的RCxt項。

      ②否則丟棄報文。

      (3)如果CnctRspCmpAck報文正確到達(dá)發(fā)送方:

      ①如果報文中的SendID、TCxtID、RCxtID、MsgID與TCxt中的某項匹配且TStatus=發(fā)送數(shù)據(jù)或發(fā)送探測報文,消息正確傳輸完成,回收對應(yīng)TCxt項。

      ②否則丟棄報文。

      (4)如果CnctRspCmpAck報文到達(dá)發(fā)送方出現(xiàn)消息級數(shù)據(jù)校驗錯,則丟棄該報文。

      (5)如果RTimer=0且Rrcnt!=Prcnt:

      ①如果RErrCnt未達(dá)到允許的最大錯誤次數(shù),則置Rrcnt=0,RTimer= TimerRcvData,遞增RRetryNum和RErrCnt,發(fā)送CnctRspRetry報文。

      ②否則回收對應(yīng)RCxt項。

      (6)如果CnctRspRetry報文正確到達(dá)發(fā)送方:

      ①如果報文中的SendID、RecvID、TCxtID、RCxtID、MsgID與TCxt中某項匹配且TStatus=發(fā)送數(shù)據(jù)或發(fā)送探測報文

      a.如果TErrCnt未達(dá)到允許的最大錯誤次數(shù):如果TRetryNum<報文中的RRetryNum,設(shè)置TRetryNum=報文中的RRetryNum,TTimer= TimerSendData,TStatus=發(fā)送數(shù)據(jù),遞增TErrCnt,重新發(fā)送數(shù)據(jù)報文。否則丟棄該報文。

      b.否則丟棄該報文,回收對應(yīng)的TCxt項。

      ②否則丟棄該報文。

      (7)如果CnctRspRetry報文到達(dá)發(fā)送方出現(xiàn)消息級數(shù)據(jù)校驗錯,則丟棄該報文。

      (8)如果TTimer=0且TStatus=發(fā)送數(shù)據(jù):如果TErrCnt未達(dá)到允許的最大錯誤次數(shù),則設(shè)置TStatus=發(fā)送探測報文,TTimer= TimerDetect,遞增TErrCnt,發(fā)送CnctRqtDetect報文;否則回收對應(yīng)的TCxt項。

      (9)如果TTimer=0且TStatus=發(fā)送探測報文:如果TErrCnt未達(dá)到允許的最大錯誤次數(shù),則設(shè)置TTimer= TimerDetect,遞增TErrCnt,發(fā)送CnctRqtDetect報文;否則回收對應(yīng)的TCxt項。

      (10)如果CnctRqtDetect報文正確到達(dá)接收方:

      ①如果報文中的SendID、TCxtID、RCxtID、MsgID與RCxt中的某項匹配:

      a.如果報文中的TRetryNum=RRetryNum:如果RErrCnt未達(dá)到允許的最大錯誤次數(shù),則置Rrcnt=0,RTimer= TimerRcvData,遞增RRetryNum和RErrCnt,發(fā)送CnctRspDetectAck報文(包括探測結(jié)果=“探測成功”位域);否則回收對應(yīng)RCxt項。

      b.如果報文中的TRetryNum!= RRetryNum,則返回CnctRspDetectAck報文(包括探測結(jié)果=“探測成功”位域)。

      ②否則返回CnctRspDetectAck報文(包括探測結(jié)果=“探測失敗”位域)。

      (11)如果CnctRqtDetect報文到達(dá)接收方出現(xiàn)消息級數(shù)據(jù)校驗錯,則丟棄該報文。

      (12)如果CnctRspDetectAck報文正確到達(dá)發(fā)送方:

      ①如果報文中的SendID、RecvID、TCxtID、RCxtID、MsgID與TCxt中的某項匹配且TStatus=發(fā)送探測報文:

      a.如果探測結(jié)果=“探測成功”且TRetryNum!=報文中的RRetryNum,則設(shè)置TMsgIDLow=報文中的RRetryNum,TTimer=TimerSendData,TStatus=發(fā)送數(shù)據(jù),重新發(fā)送數(shù)據(jù)報文。

      b.如果探測結(jié)果=“探測失敗”且TRetryNum=報文中的RRetryNum,消息正確傳輸完成,回收對應(yīng)的TCxt項。

      c.否則丟棄該報文。

      ②否則丟棄該報文。

      (13)如果CnctRspDetectAck報文到達(dá)發(fā)送方出現(xiàn)消息級數(shù)據(jù)校驗錯,則丟棄該報文。

      RDMA讀數(shù)據(jù)的傳輸不需要建立連接,不用在接收方分配RCxt項,但仍需要在發(fā)送方分配TCxt項。發(fā)送方可以直接發(fā)送讀請求到接收方并等待接收方返回讀數(shù)據(jù)。發(fā)送方通過TCxt項中的Tpcnt和Trcnt統(tǒng)計已收到的讀數(shù)據(jù)字節(jié)數(shù)和判斷數(shù)據(jù)是否已收齊。RDMA讀數(shù)據(jù)的數(shù)據(jù)傳輸流程比較簡單,本文就不再詳細(xì)闡述。

      3 RDMA可靠傳輸協(xié)議實現(xiàn)

      NIC一般由主機(jī)接口、網(wǎng)絡(luò)接口、發(fā)送部件和接收部件構(gòu)成。為了使NIC能支持RDMA可靠數(shù)據(jù)傳輸,需要增加可靠連接管理部件,支持RDMA可靠傳輸?shù)腘IC總體結(jié)構(gòu)如圖1所示。

      Figure 1 Structure of the NIC supporting RDMA reliable communication圖1 支持RDMA可靠傳輸?shù)腘IC總體結(jié)構(gòu)

      發(fā)送部件在傳輸數(shù)據(jù)前,需要由可靠連接管理部件分配上下文資源和進(jìn)行連接建立,接收部件需要根據(jù)可靠連接管理部件的匹配結(jié)果決定是否接收數(shù)據(jù)。如果接收數(shù)據(jù)出現(xiàn)消息級數(shù)據(jù)校驗錯誤,接收部件將通知可靠連接管理部件進(jìn)行重傳。如果連接建立超時,可靠連接管理部件將重試建立連接;如果數(shù)據(jù)傳輸超時,可靠連接管理部件將通知發(fā)送部件重新傳送數(shù)據(jù)。數(shù)據(jù)傳輸結(jié)束或傳輸失敗時,可靠連接管理部件會回收對應(yīng)的上下文資源。

      可靠連接管理部件是NIC支持RDMA可靠傳輸?shù)目刂撇考砂l(fā)送方上下文資源及其控制邏輯和接收方上下文資源及其控制邏輯組成。為了便于硬件高效實現(xiàn),可靠連接管理部件中的發(fā)送方上下文資源和接收方上下文資源都采用相同的流水化實現(xiàn)方式,其實現(xiàn)結(jié)構(gòu)如圖2所示。對于發(fā)送方上下文,輸入隊列主要由來自于發(fā)送部件的連接建立申請和來自于網(wǎng)絡(luò)接口的響應(yīng)報文構(gòu)成;對于接收上下文,輸入隊列主要由請求報文構(gòu)成。輸入報文經(jīng)過仲裁后進(jìn)入可靠連接協(xié)議處理流水線。協(xié)議流水線由四站構(gòu)成:第一站將仲裁出的輸入報文寄存一拍,生成訪問上下文數(shù)據(jù)緩沖區(qū)的地址索引,即TCxtID/RCxtID;第二站根據(jù)地址索引訪問上下文數(shù)據(jù)緩沖區(qū);第三站將讀出的上下文數(shù)據(jù)緩沖區(qū)數(shù)據(jù)寄存一拍;第四站根據(jù)上下文數(shù)據(jù)和輸入報文查找協(xié)議表,產(chǎn)生新表項寫入上下文數(shù)據(jù)緩沖區(qū)和生成新報文寫入輸出隊列。對于發(fā)送方上下文,輸出隊列主要由請求報文構(gòu)成,而對于接收方上下文,輸出隊列主要由響應(yīng)報文構(gòu)成。上下文數(shù)據(jù)緩沖區(qū)存放如表1所示的TCxt和 RCxt信息,硬件上具體可以由SRAM實現(xiàn)。協(xié)議表邏輯實現(xiàn)第2節(jié)中介紹的RDMA可靠傳輸協(xié)議,給定輸入報文和對應(yīng)的上下文數(shù)據(jù)信息,協(xié)議表會輸出新生成的報文和新的上下文數(shù)據(jù)信息。輸入隊列仲裁時,為了保證上下文數(shù)據(jù)緩沖區(qū)的讀-修改-寫的原子性,仲裁邏輯會禁止相同的TCxtID/RCxtID同時進(jìn)入流水線。為了實現(xiàn)該功能,仲裁邏輯需要記錄當(dāng)前流水線中活躍的TCxtID和RCxtID。

      Figure 2 Structure of reliable connection management component圖2 可靠連接管理部件實現(xiàn)結(jié)構(gòu)

      為了使可靠連接管理部件能夠按圖2所示的流水線結(jié)構(gòu)實現(xiàn),超時機(jī)制的實現(xiàn)方法是首先要考慮的問題。如果按第2節(jié)所述那樣將TTimer和RTimer實現(xiàn)在上下文數(shù)據(jù)緩沖區(qū)中,那么上下文數(shù)據(jù)緩沖區(qū)就無法用SRAM實現(xiàn),并且多個上下文同時發(fā)生超時時,流水線也無法同拍對多個上下文進(jìn)行處理。因此,TTimer和RTimer必須在流水線之外實現(xiàn)。超時計數(shù)器可以用寄存器陣列實現(xiàn),并且用一個位向量記錄超時計數(shù)器是否發(fā)生了超時,向量中的每一位與上下文中的每個超時計數(shù)器一一對應(yīng)。超時請求通過該向量產(chǎn)生并寫入輸入隊列,然后通過仲裁進(jìn)入?yún)f(xié)議流水線進(jìn)行處理。這種實現(xiàn)方式能將同時產(chǎn)生的超時請求串行化,而且在流水線外實現(xiàn)超時機(jī)制使得超時請求的生成不影響協(xié)議流水線的流水化處理操作。

      其次,按第2節(jié)所述數(shù)據(jù)報文到達(dá)接收方后需要在上下文中尋找匹配項。如果接收部件將收到的數(shù)據(jù)報文送入可靠連接管理部件進(jìn)行檢查,并等待其返回檢查結(jié)果,那么接收數(shù)據(jù)過程將出現(xiàn)停頓,嚴(yán)重影響數(shù)據(jù)傳輸性能。為了不影響接收部件接收數(shù)據(jù),數(shù)據(jù)報文的檢查功能應(yīng)在接收部件中實現(xiàn)。接收部件存儲與數(shù)據(jù)報文檢查相關(guān)的部分上下文信息,可靠連接管理部件在新分配上下文或上下文信息有變動時將相關(guān)的上下文信息寫入接收部件中,這樣接收部件在接收數(shù)據(jù)時將獨(dú)立于可靠連接管理部件進(jìn)行數(shù)據(jù)報文檢查,有利于接收部件實現(xiàn)流水化數(shù)據(jù)接收。

      再次,接收部件每正確接收一個數(shù)據(jù)報文,就需要通知可靠連接管理部件進(jìn)行字節(jié)計數(shù),如果字節(jié)計數(shù)邏輯如第2節(jié)所述在協(xié)議處理中實現(xiàn),那么將會有大量的計數(shù)請求需要進(jìn)入流水線進(jìn)行處理,這會降低協(xié)議流水線的處理效率,并且當(dāng)協(xié)議流水線的輸入隊列不足以存儲所有計數(shù)請求時,接收部件仍將出現(xiàn)停頓,從而影響數(shù)據(jù)傳輸性能。為了避免接收部件出現(xiàn)停頓和提高流水線的處理效率,字節(jié)計數(shù)功能應(yīng)該在協(xié)議流水線之外實現(xiàn)。上下文中的字節(jié)計數(shù)邏輯可以在流水線之外用一組計數(shù)器實現(xiàn),計數(shù)器初始化為需要接收的字節(jié)數(shù),接收部件每正確接收一個數(shù)據(jù)報文,對應(yīng)的計數(shù)器就減去相應(yīng)的字節(jié)數(shù)。當(dāng)計數(shù)器減為0時,將會產(chǎn)生計滿請求并寫入輸入隊列,然后通過仲裁進(jìn)入?yún)f(xié)議流水線進(jìn)行處理。

      4 性能評測

      本文在NIC中實現(xiàn)了基于FPGA平臺的RDMA可靠傳輸協(xié)議。NIC采用PCIE G3接口與CPU進(jìn)行對接,采用1.25 Gbps的網(wǎng)絡(luò)接口與路由器進(jìn)行對接。NIC不僅支持基于可靠傳輸協(xié)議的有連接服務(wù),同時支持無連接服務(wù),并且配置有連接服務(wù)的發(fā)送方和接收方下上文各256項。提供無連接服務(wù)時,圖1中的可靠連接管理部件將被旁路,即發(fā)送部件可以直接發(fā)送數(shù)據(jù),而接收部件可以直接接收數(shù)據(jù)。

      FPGA平臺由16個結(jié)點(diǎn)通過兩個路由器互連構(gòu)成,每個結(jié)點(diǎn)包含兩個CPU和一個NIC。圖3給出了基于可靠傳輸有連接服務(wù)和不可靠傳輸無連接服務(wù)的NPB基準(zhǔn)測試集的性能對比測試結(jié)果。NPB采用64線程、C/D級數(shù)據(jù)規(guī)模的測試題,每個結(jié)點(diǎn)上運(yùn)行四個線程。從圖3給出的測試結(jié)果可以看出,有連接與無連接的性能相當(dāng)。由于有連接服務(wù)的多個發(fā)送方和接收方上下文可以同時工作,這樣某個上下文的連接建立可以與其它上下文的數(shù)據(jù)傳輸重疊進(jìn)行,從而隱藏連接建立延遲。從圖3還可以看出,對于某些測試題,有連接的執(zhí)行性能甚至超過了無連接。這是因為兩個路由器之間存在多條鏈路連接,由于有連接服務(wù)支持報文亂序傳輸,因此路由器可以根據(jù)當(dāng)前多個輸出端口的忙閑程度選擇負(fù)載較輕的端口進(jìn)行輸出,即具有一定的自適應(yīng)路由選擇能力;而無連接服務(wù)不支持報文亂序傳輸,路由器只能選擇固定端口進(jìn)行輸出,即使該端口負(fù)載較重。

      Figure 3 Test results of connection compared to no connection for NPB benchmarks圖3 NPB基準(zhǔn)測試集有連接與無連接的性能對比測試結(jié)果

      5 結(jié)束語

      可靠性已成為評價高性能計算機(jī)系統(tǒng)的重要指標(biāo),針對網(wǎng)絡(luò)中可能出現(xiàn)的故障,本文提出了一種RDMA可靠數(shù)據(jù)傳輸協(xié)議,并給出了其在NIC中實現(xiàn)的方法。本文提出的可靠傳輸協(xié)議能容忍網(wǎng)絡(luò)中出現(xiàn)的報文丟失、消息級數(shù)據(jù)校驗錯等錯誤,給出的優(yōu)化實現(xiàn)方案能流水化發(fā)送和接收數(shù)據(jù),減少可靠傳輸管理開銷。本文對該可靠傳輸協(xié)議在FPGA平臺上進(jìn)行了實現(xiàn),并對其進(jìn)行了性能評測,結(jié)果表明RDMA可靠傳輸?shù)膶嶋H測試性能與無連接RDMA傳輸相當(dāng)。

      [1] Shipman G M, Graham R L, Bosilca G. Network fault tolerance in Open MPI[C]∥Proc of the 13th International Euro-Par Conference, 2007:868-878.

      [2] Schroeder B, Gibson G A. Understanding failures in petascale computers[C]∥Proc of 2007 Scientific Discovery through Advanced Computing Program(SciDAC’07), 2007:220-230.

      [3] Brightwell R, Pedretti K T, Underwood K D. Seastar interconnect:Balanced bandwidth for scalable performance[J]. IEEE MICRO, 2006, 26(3):41-57.

      [4] Alverson R, Roweth D, Kaplan L. The Gemini system interconnect[C]∥Proc of the 18th IEEE Symposium on High Performance Interconnects, 2010:83-87.

      [5] Alverson B, Froese E, Kaplan L, et al. Cray XC series networking[R]. WP-Aries01-1012, USA:Cray Incorporation, 2012.

      [6] lnfiniBand Trade Association. Infiniband architecture specification, Version 1.2.1 [EB/OL]. [2007-11-01]. http://www.infinibandta.org.

      [7] Sivaram R, Govindaraju R K, Hochschild P, et al. Breaking the connection:RDMA deconstructed[C]∥Proc of the 13th Annual IEEE Symposium on High Performance Interconnects, 2005:36-42.

      [8] Liu Lu, Zhang Lei, Cao Ji-jun, et al. The design of RDMA reliable communication protocol based on dynamic connection[J]. Computer Engineering&Science, 2012, 34(8):184-190. (in Chinese)

      附中文參考文獻(xiàn):

      [8] 劉路,張磊,曹繼軍,等. 基于動態(tài)連接的RDMA可靠傳輸協(xié)議設(shè)計[J]. 計算機(jī)工程與科學(xué), 2012, 34(8):184-190.

      XIAJun,born in 1976,PhD,associate research fellow,his research interest includes high performance computer architecture.

      DesignandimplementationofaNICbasedRDMAreliablecommunicationprotocol

      XIA Jun,PANG Zheng-bin,LIU Lu,ZHANG Jun,CHANG Jun-sheng

      (College of Computer,National University of Defense Technology,Changsha 410073,China)

      With the continually growing size and complexity of high performance computing systems, reliability has become the crucial factor of affecting the availability of high performance computing systems. System network is the important component of high performance computing systems and its reliability must be considered in high performance computing system design. Aiming at failures possibly occurring in high performance computing system network, the paper proposes a NIC based RDMA reliable communication protocol, gives a general framework of realizing this protocol and discusses some optimized implementation methods based on the framework. The reliable communication protocol and its implementation can tolerate system network failures and can reduce the overhead of realizing reliable communications. The experimental results show that the performance of the RDMA reliable communication is comparable with that of the no-connection RDMA communication.

      RDMA;reliability;network interface;reliable communication protocol

      2013-07-10;

      :2013-10-06

      國家自然科學(xué)基金資助項目(61103083,61133007);國家863計劃資助項目(2012AA01A301)

      1007-130X(2014)02-0216-06

      TP316.4

      :A

      10.3969/j.issn.1007-130X.2014.02.005

      夏軍(1976-),男,重慶人,博士,副研究員,研究方向為高性能計算機(jī)系統(tǒng)結(jié)構(gòu)。E-mail:xiajun@nudt.edu.cn

      通信地址:410073 湖南省長沙市國防科學(xué)技術(shù)大學(xué)計算機(jī)學(xué)院Address:College of Computer,National University of Defense Technology,Changsha 410073,Hunan,P.R.China

      猜你喜歡
      發(fā)送數(shù)據(jù)流水線校驗
      移動自組網(wǎng)中MAC層協(xié)議研究
      Gen Z Migrant Workers Are Leaving the Assembly Line
      流水線
      基于馬爾科夫鏈的LoRaWAN網(wǎng)絡(luò)節(jié)點(diǎn)性能分析
      帶標(biāo)記方式的CRDSA++協(xié)議性能分析*
      爐溫均勻性校驗在鑄鍛企業(yè)的應(yīng)用
      使用IPSec安全傳輸數(shù)據(jù)
      報廢汽車拆解半自動流水線研究
      大型電動機(jī)高阻抗差動保護(hù)穩(wěn)定校驗研究
      電測與儀表(2015年1期)2015-04-09 12:03:02
      基于加窗插值FFT的PMU校驗方法
      贺州市| 大庆市| 万山特区| 保康县| 亚东县| 普兰店市| 西林县| 绥棱县| 漠河县| 洪洞县| 霍邱县| 翁源县| 新建县| 遂川县| 奉化市| 郎溪县| 丘北县| 昭通市| 垫江县| 高密市| 孝义市| 丽水市| 突泉县| 册亨县| 霍林郭勒市| 绥棱县| 武穴市| 台南市| 阿尔山市| 高雄县| 始兴县| 当雄县| 正镶白旗| 庄河市| 安吉县| 绥中县| 武汉市| 阿克陶县| 沧州市| 枣庄市| 湖北省|