成對(duì)地創(chuàng)建的,叫做隊(duì)列對(duì)(Queue Pair, QP), QP包括發(fā)送隊(duì)列(SendQueue,SQ)和接收隊(duì)列(Receive Queue, RQ) 0 SQ用于發(fā)送操作,保存使數(shù)據(jù)在一個(gè)計(jì)算設(shè)備的存儲(chǔ)設(shè)備和另一個(gè)計(jì)算資源的存儲(chǔ)設(shè)備之間傳輸?shù)闹噶睿籖Q用于接收操作,保存有關(guān)將從另一個(gè)計(jì)算設(shè)備接收到的數(shù)據(jù)放在哪里的指令。計(jì)算設(shè)備提交工作請(qǐng)求,生成要放置在適當(dāng)?shù)墓ぷ麝?duì)列中的工作隊(duì)列元素(Work Queue Element, WQE)。通道適配器執(zhí)行WQE,以便它們放置在工作隊(duì)列中。
[0184]當(dāng)?shù)诙?jì)算設(shè)備的第二存儲(chǔ)器需要向第一計(jì)算設(shè)備的第一存儲(chǔ)器采用RDMA方法寫數(shù)據(jù)時(shí),其信令圖如圖4所示,執(zhí)行步驟為:
[0185]402:第二計(jì)算設(shè)備與第一計(jì)算設(shè)備通過網(wǎng)絡(luò)102建立基于隊(duì)列對(duì)QP的RDMA連接。
[0186]404:第二計(jì)算設(shè)備接收來自第一計(jì)算設(shè)備的,屬于第一計(jì)算設(shè)備的RDMA內(nèi)存分配消息,RDMA內(nèi)存分配消息攜帶第一節(jié)點(diǎn)標(biāo)識(shí)和第一存儲(chǔ)標(biāo)識(shí),第一節(jié)點(diǎn)標(biāo)識(shí)用于標(biāo)識(shí)第一計(jì)算設(shè)備,第一存儲(chǔ)標(biāo)識(shí)用于表征訪問第一存儲(chǔ)器的權(quán)限,和標(biāo)識(shí)第一存儲(chǔ)器接受RDMA寫操作的存儲(chǔ)單元。
[0187]可選的,第一存儲(chǔ)標(biāo)識(shí)包含虛擬地址(Virtual Address, VA)和遠(yuǎn)端內(nèi)存鑰匙(Remote Key, R_KEY)。其中,虛擬地址VA表示第一存儲(chǔ)器用于接受RDMA寫操作的存儲(chǔ)單元的虛擬地址,遠(yuǎn)端內(nèi)存鑰匙R(shí)_KEY用于表征第二計(jì)算設(shè)備訪問第一存儲(chǔ)器的權(quán)限,且用于結(jié)合虛擬地址VA共同確定第一存儲(chǔ)器用于接收RDMA寫操作的存儲(chǔ)單元的物理地址。遠(yuǎn)端內(nèi)存鑰匙R(shí)_KEY提供了索引的信息,可以通過索引信息找到具體的內(nèi)存片,并根據(jù)VA找到具體的內(nèi)存塊起始地址,從而實(shí)現(xiàn)將虛擬地址VA映射為第一存儲(chǔ)器的物理地址。通過VA和R-KEY實(shí)現(xiàn)確定要訪問的第一存儲(chǔ)器的物理地址是現(xiàn)有技術(shù),具體細(xì)節(jié)此處不再贅述。
[0188]406:第二計(jì)算設(shè)備生成用于第二存儲(chǔ)器向第一存儲(chǔ)器RDMA寫操作的工作隊(duì)列元素WQE,并將該WQE放入隊(duì)列對(duì)QP的發(fā)送隊(duì)列SQ中,該WQE攜帶第一存儲(chǔ)標(biāo)識(shí),以及第二存儲(chǔ)標(biāo)識(shí)。其中,第二存儲(chǔ)標(biāo)識(shí)用于標(biāo)識(shí)第二存儲(chǔ)器用于RDMA寫操作的數(shù)據(jù)302。該WQE用于指示將第二存儲(chǔ)器的數(shù)據(jù)302拷貝至第一存儲(chǔ)器的內(nèi)存地址。
[0189]可選的,第二存儲(chǔ)標(biāo)識(shí)包括數(shù)據(jù)302在第二存儲(chǔ)器的首地址和數(shù)據(jù)地址長(zhǎng)度。
[0190]408:第二計(jì)算設(shè)備的 RDMA 網(wǎng)絡(luò)接口控制器(RDMA Network Interface Card,RNIC) 314從隊(duì)列對(duì)QP的發(fā)送隊(duì)列SQ中,將該WQE取出,并提取第一存儲(chǔ)標(biāo)識(shí)和第二存儲(chǔ)標(biāo)識(shí),并根據(jù)第二存儲(chǔ)標(biāo)識(shí),提取第二存儲(chǔ)器用于RDMA寫操作的數(shù)據(jù)302,并將數(shù)據(jù)302與第一存儲(chǔ)標(biāo)識(shí)一起封裝成RDMA寫操作(RDMA WRITE)消息,RDMA WRITE消息用于指示將該數(shù)據(jù)302寫入第一存儲(chǔ)標(biāo)識(shí)指示的第一存儲(chǔ)器的存儲(chǔ)單元中。
[0191]410:根據(jù)第一計(jì)算設(shè)備與第二計(jì)算設(shè)備的RDMA連接關(guān)系,第二計(jì)算設(shè)備的RNIC將RDMA WRITE消息發(fā)送給第一計(jì)算設(shè)備的RNIC。
[0192]412:第一計(jì)算設(shè)備的RNIC根據(jù)RDMA WRITE消息指示,驗(yàn)證消息權(quán)限后,將數(shù)據(jù)302寫入第一存儲(chǔ)標(biāo)識(shí)指示的第一存儲(chǔ)器的存儲(chǔ)單元中。
[0193]可選的,在步驟412之后,該方法還包括第一計(jì)算設(shè)備將RDMA寫操作完成的響應(yīng)消息發(fā)送給第二計(jì)算設(shè)備,用于指示RDMA寫操作完成。
[0194]依據(jù)圖4所示的RDMA方法,可以實(shí)現(xiàn)基于第一計(jì)算設(shè)備104與第二計(jì)算設(shè)備104之間的RDMA寫操作,如果計(jì)算設(shè)備104的處理器與存儲(chǔ)器相互分離,圖3對(duì)應(yīng)的RDMA方法無法實(shí)現(xiàn)分離的存儲(chǔ)器之間的RDMA寫操作。
[0195]圖5為依據(jù)本發(fā)明實(shí)施例的一種遠(yuǎn)程直接數(shù)據(jù)存取方法的應(yīng)用場(chǎng)景示意圖,如圖5所示,該系統(tǒng)包括第一計(jì)算設(shè)備和第二計(jì)算設(shè)備,其中第一計(jì)算設(shè)備和第二計(jì)算設(shè)備為圖2所示的計(jì)算設(shè)備,圖中僅示出計(jì)算設(shè)備的處理器、存儲(chǔ)器和存儲(chǔ)器控制器,其他特征和功能在圖5未示出。第一計(jì)算設(shè)備的第一處理器與第一存儲(chǔ)器分離,將第一計(jì)算設(shè)備劃分為圖5所示的第一處理節(jié)點(diǎn)502和第一內(nèi)存節(jié)點(diǎn)504,其中第一處理節(jié)點(diǎn)502包括第一處理器和計(jì)算設(shè)備104的其他特征和功能(圖中未示出),第一內(nèi)存節(jié)點(diǎn)504包括第一存儲(chǔ)器控制器506和第一存儲(chǔ)器,第一處理節(jié)點(diǎn)502與第一內(nèi)存節(jié)點(diǎn)504之間通過網(wǎng)絡(luò)102進(jìn)行通信。第二計(jì)算設(shè)備的第二處理器與第二存儲(chǔ)器分離,將第二計(jì)算設(shè)備劃分為圖5所示的第二處理節(jié)點(diǎn)508和第二內(nèi)存節(jié)點(diǎn)510,其中第二處理節(jié)點(diǎn)508包括第二處理器和計(jì)算設(shè)備104其他特征和功能(圖中未示出),第二內(nèi)存節(jié)點(diǎn)510包括第二存儲(chǔ)器控制器512和第二存儲(chǔ)器,第二處理節(jié)點(diǎn)508與第二內(nèi)存節(jié)點(diǎn)510之間通過網(wǎng)絡(luò)102進(jìn)行通信。
[0196]可選的,第一處理節(jié)點(diǎn)502還包括第一計(jì)算設(shè)備104的除第一內(nèi)存節(jié)點(diǎn)504外的其他存儲(chǔ)資源。
[0197]可選的,第二處理節(jié)點(diǎn)508還包括第二計(jì)算設(shè)備104的除第二內(nèi)存節(jié)點(diǎn)510外的其他存儲(chǔ)資源。
[0198]當(dāng)?shù)诙?jì)算設(shè)備的第二存儲(chǔ)器需要向第一計(jì)算設(shè)備的第一存儲(chǔ)器采用RDMA方法寫數(shù)據(jù)時(shí),其信令圖如圖6所示,執(zhí)行步驟為:
[0199]602:第二處理節(jié)點(diǎn)508向第一處理節(jié)點(diǎn)502通過網(wǎng)絡(luò)102發(fā)送RDMA內(nèi)存請(qǐng)求消息,所述RDMA內(nèi)存請(qǐng)求消息用于向第一處理節(jié)點(diǎn)請(qǐng)求用于RDMA寫操作的目標(biāo)內(nèi)存。
[0200]可選的,所述RDMA內(nèi)存請(qǐng)求消息攜帶要進(jìn)行RDMA寫操作的數(shù)據(jù)大小信息,第一處理節(jié)點(diǎn)502根據(jù)收到的RDMA內(nèi)存請(qǐng)求消息,向第一內(nèi)存節(jié)點(diǎn)504申請(qǐng)用于接受RDMA寫操作的內(nèi)存。
[0201]可選的,第一內(nèi)存節(jié)點(diǎn)504根據(jù)RDMA寫操作的數(shù)據(jù)大小和物理內(nèi)存使用情況,為第一處理節(jié)點(diǎn)502在第一存儲(chǔ)器分配內(nèi)存,并將內(nèi)存分配消息發(fā)送給第一處理節(jié)點(diǎn)502。
[0202]可選的,第一處理節(jié)點(diǎn)502還生成隊(duì)列對(duì)QP,并將QP與第一內(nèi)存節(jié)點(diǎn)504分配的內(nèi)存關(guān)聯(lián)起來,并將隊(duì)列對(duì)QP信息發(fā)送給第二處理節(jié)點(diǎn)508,與第二處理節(jié)點(diǎn)508建立基于隊(duì)列對(duì)QP的RDMA連接。
[0203]可選的,第一內(nèi)存節(jié)點(diǎn)504還生成隊(duì)列對(duì),將QP與第一內(nèi)存節(jié)點(diǎn)504分配的內(nèi)存關(guān)聯(lián)起來,并將隊(duì)列對(duì)QP信息發(fā)送給第一處理節(jié)點(diǎn)502,第一處理節(jié)點(diǎn)502將QP信息發(fā)送給第二處理節(jié)點(diǎn)508,與第二處理節(jié)點(diǎn)508建立基于隊(duì)列對(duì)QP的RDMA連接。
[0204]可選的,第一處理節(jié)點(diǎn)502還生成虛擬地址(Virtual Address,簡(jiǎn)稱VA)和遠(yuǎn)端內(nèi)存鑰匙(Remote Key,簡(jiǎn)稱R_KEY),并將VA和R_KEY發(fā)送給第二處理節(jié)點(diǎn)508。VA用于表征第一內(nèi)存節(jié)點(diǎn)504分配的用于接受RDMA寫操作的內(nèi)存的虛擬地址,R_KEY用于表征訪問第一內(nèi)存節(jié)點(diǎn)504分配的用于接受RDMA寫操作的內(nèi)存的權(quán)限,且用于結(jié)合虛擬地址VA共同確定第一內(nèi)存節(jié)點(diǎn)用于接收RDMA寫操作的存儲(chǔ)單元的物理地址,即實(shí)現(xiàn)將虛擬地址映射為第一內(nèi)存節(jié)點(diǎn)504的第一存儲(chǔ)器的物理地址。
[0205]可選的,第一內(nèi)存節(jié)點(diǎn)504還生成VA和R_KEY,并將VA和R_KEY發(fā)送給第一處理節(jié)點(diǎn)502,第一處理節(jié)點(diǎn)502將VA和R_KEY發(fā)送給第二處理節(jié)點(diǎn)508。VA用于指示第一內(nèi)存節(jié)點(diǎn)504分配的用于接受RDMA寫操作的內(nèi)存的虛擬地址,R_KEY用于表征訪問第一內(nèi)存節(jié)點(diǎn)504分配的用于接受RDMA寫操作的內(nèi)存的權(quán)限,且用于結(jié)合虛擬地址VA共同確定第一內(nèi)存節(jié)點(diǎn)用于接收RDMA寫操作的存儲(chǔ)單元的物理地址,即實(shí)現(xiàn)將虛擬地址映射為第一內(nèi)存節(jié)點(diǎn)504的第一存儲(chǔ)器的物理地址。
[0206]604:第二處理節(jié)點(diǎn)508接收來自第一處理節(jié)點(diǎn)502的RDMA內(nèi)存分配消息,RDMA內(nèi)存分配消息攜帶第一節(jié)點(diǎn)標(biāo)識(shí)和第一存儲(chǔ)標(biāo)識(shí),第一節(jié)點(diǎn)標(biāo)識(shí)用于標(biāo)識(shí)第一內(nèi)存節(jié)點(diǎn)504,第一存儲(chǔ)標(biāo)識(shí)用于表征訪問第一存儲(chǔ)器的權(quán)限,和標(biāo)識(shí)第一內(nèi)存節(jié)點(diǎn)504的第一存儲(chǔ)器接受RDMA寫操作的存儲(chǔ)單元。
[0207]可選的,第一節(jié)點(diǎn)標(biāo)識(shí)包括:保護(hù)域編號(hào),用于標(biāo)識(shí)第一內(nèi)存節(jié)點(diǎn)504所在的第一保護(hù)域,和第一內(nèi)存節(jié)點(diǎn)標(biāo)識(shí),用于在第一保護(hù)域中確定第一內(nèi)存節(jié)點(diǎn)504。
[0208]可選的,第一內(nèi)存節(jié)點(diǎn)504和第二內(nèi)存節(jié)點(diǎn)510在同一保護(hù)域,第一節(jié)點(diǎn)標(biāo)識(shí)僅包括第一內(nèi)存節(jié)點(diǎn)標(biāo)識(shí),用于在該保護(hù)域中確定第一內(nèi)存節(jié)點(diǎn)504。
[0209]可選的,第一存儲(chǔ)標(biāo)識(shí)包括:第一虛擬地址,用于標(biāo)識(shí)第一內(nèi)存節(jié)點(diǎn)504的第一存儲(chǔ)器用于接受RDMA寫操作的存儲(chǔ)單元的虛擬地址,和第一遠(yuǎn)端內(nèi)存鑰匙,用于表征訪問第一存儲(chǔ)器的權(quán)限,以及結(jié)合虛擬地址共同確定第一存儲(chǔ)器用于接收RDMA寫操作的存儲(chǔ)單元的物理地址,即實(shí)現(xiàn)將第一虛擬地址映射到第一存儲(chǔ)器的物理地址。
[0210]606:第二處理節(jié)點(diǎn)508封裝RDMA拷貝操作消息,該RDMA拷貝操作消息中攜帶第一節(jié)點(diǎn)標(biāo)識(shí)、第一存儲(chǔ)標(biāo)識(shí)和第二存儲(chǔ)標(biāo)識(shí),其中,第二存儲(chǔ)標(biāo)識(shí)用于表征訪問第二存儲(chǔ)器的權(quán)限,和標(biāo)識(shí)第二存儲(chǔ)器用于RDMA寫操作的數(shù)據(jù)514,該RDMA拷貝操作消息用于指示第二內(nèi)存節(jié)點(diǎn)510將數(shù)據(jù)514拷貝至第一內(nèi)存節(jié)點(diǎn)的第一存儲(chǔ)器的存儲(chǔ)單元中。
[0211]可選的,第二存儲(chǔ)標(biāo)識(shí)包括:第二虛擬地址,用于標(biāo)識(shí)第二存儲(chǔ)器用于RDMA寫操作的數(shù)據(jù)514的虛擬地址;數(shù)據(jù)長(zhǎng)度,用于標(biāo)識(shí)數(shù)據(jù)514的數(shù)據(jù)地址長(zhǎng)度;和第二遠(yuǎn)端內(nèi)存鑰匙,用于表征訪問第二存儲(chǔ)器的權(quán)限,以及結(jié)合虛擬地址VA共同確定第二存儲(chǔ)器用于RDMA寫操作的數(shù)據(jù)的存儲(chǔ)單元的物理地址,即實(shí)現(xiàn)將第二虛擬地址映射到第二存儲(chǔ)器的物理地址。
[0212]可選的,步驟606之前,進(jìn)一步包括:第二處理節(jié)點(diǎn)508生成工作隊(duì)列元素WQE,并將該WQE放入與第二內(nèi)存節(jié)點(diǎn)510RDMA連接的隊(duì)列對(duì)QP的發(fā)送隊(duì)列SQ中,該WQE攜帶第一節(jié)點(diǎn)標(biāo)識(shí)、第一存儲(chǔ)標(biāo)識(shí)和第二存儲(chǔ)標(biāo)識(shí),該WQE用于指示將第二存儲(chǔ)器中的數(shù)據(jù)514拷貝至第一存儲(chǔ)器的存儲(chǔ)單元中。
[0213]可選的,所述WQE還包括第二節(jié)點(diǎn)標(biāo)識(shí),用于指示第二內(nèi)存節(jié)點(diǎn)510。
[0214]第二處理節(jié)點(diǎn)508的RNIC將該WQE從SQ中取出,根據(jù)該WQE指示,封裝RDMA拷貝操作消息。
[0215]608:第二處理節(jié)點(diǎn)508的RNIC將RDMA拷貝操作消息通過網(wǎng)絡(luò)102發(fā)送給第二內(nèi)存節(jié)點(diǎn)510。
[0216]610:第二存儲(chǔ)器控制器512根據(jù)RDMA拷貝操作消息指示,驗(yàn)證消息權(quán)限后,取出第二存儲(chǔ)標(biāo)識(shí)標(biāo)識(shí)的數(shù)據(jù)514,結(jié)合第一存儲(chǔ)標(biāo)識(shí),封裝RDMA WRITE消息,該RDMA WRITE消息用于指示第一內(nèi)存節(jié)點(diǎn)將數(shù)據(jù)514寫入第一存儲(chǔ)標(biāo)識(shí)指示的第一存儲(chǔ)器的存儲(chǔ)單元中。
[0217]612:第二存儲(chǔ)器控制器512將RDMA寫操作消息通過網(wǎng)絡(luò)102發(fā)送給第一節(jié)點(diǎn)標(biāo)識(shí)指示的第一內(nèi)存節(jié)點(diǎn)504。
[0218]614:第一存儲(chǔ)器控制器506根據(jù)RDMA WRITE消息指示,驗(yàn)證消息權(quán)限后,將數(shù)據(jù)514寫入第一存儲(chǔ)標(biāo)識(shí)指示的第一存儲(chǔ)器的存儲(chǔ)單元中。
[0219]可選的,步驟614之后,進(jìn)一步包括,第一內(nèi)存節(jié)點(diǎn)504向第二內(nèi)存節(jié)點(diǎn)510發(fā)送RDMA響應(yīng)消息,用于指示RDMA寫操作完成,第二內(nèi)存節(jié)點(diǎn)510將該RDMA響應(yīng)消息發(fā)送給第二處理節(jié)點(diǎn)508。
[0220]可選的,步驟614之后,進(jìn)一步包括,第一內(nèi)存節(jié)點(diǎn)504向第二處理節(jié)點(diǎn)508發(fā)送RDMA響應(yīng)消息,用于指示RDMA寫操作完成。
[0221]根據(jù)本實(shí)施例公開的技術(shù)方案,計(jì)算設(shè)備的內(nèi)存資源與計(jì)算資源分離,當(dāng)需要將第二內(nèi)存節(jié)點(diǎn)內(nèi)的數(shù)據(jù)寫入第一內(nèi)存節(jié)點(diǎn)時(shí),通過增加RDMA拷貝操作消息,指示第二內(nèi)存節(jié)點(diǎn)直接向第一內(nèi)存節(jié)點(diǎn)寫數(shù)據(jù),實(shí)現(xiàn)了與計(jì)算資源分離的內(nèi)存資源之間的RDMA寫操作。采用本方案,實(shí)現(xiàn)了內(nèi)存節(jié)點(diǎn)之間的RDMA寫操作,內(nèi)存節(jié)點(diǎn)之間的RDMA寫操作的數(shù)據(jù)不經(jīng)過第二處理節(jié)點(diǎn)和第一處理節(jié)點(diǎn),從而縮短了數(shù)據(jù)流經(jīng)過的路徑,節(jié)省了鏈路資源,降低了數(shù)據(jù)傳輸耗時(shí),而且數(shù)據(jù)傳輸不再經(jīng)過處理節(jié)點(diǎn),從而大大節(jié)省了處理節(jié)點(diǎn)的計(jì)算資源。
[0222]圖7為依據(jù)本發(fā)明實(shí)施例的一種遠(yuǎn)程直接數(shù)據(jù)存取方法的應(yīng)用場(chǎng)景,如圖7所示,該系統(tǒng)包括第一計(jì)算設(shè)備和第二計(jì)算設(shè)備,其中第一計(jì)算設(shè)備和第二計(jì)算設(shè)備為圖2所示的計(jì)算設(shè)備,圖中僅示出計(jì)算設(shè)備的處理器、存儲(chǔ)器和存儲(chǔ)器控制器,其他特征和功能在圖7未示出。第一計(jì)算設(shè)備的第一處理器與第一存儲(chǔ)器分離,將第一計(jì)算設(shè)備劃分為圖7所示的第一處理節(jié)點(diǎn)702和第一內(nèi)存節(jié)點(diǎn)704,其中第一處理節(jié)點(diǎn)702包括第一處理器和其他特征和功能(圖中未示出),第一內(nèi)存節(jié)點(diǎn)704包括第一存儲(chǔ)器控制器706和第一存儲(chǔ)器,第一處理節(jié)點(diǎn)702與第一內(nèi)存節(jié)點(diǎn)704之間通過網(wǎng)絡(luò)102進(jìn)行通信。
[0223]可選的,第一處理節(jié)點(diǎn)702還包括第一計(jì)算設(shè)備104的除第一內(nèi)存節(jié)點(diǎn)704外的其他內(nèi)存資源。
[0224]當(dāng)?shù)诙?jì)算設(shè)備的第二存儲(chǔ)器需要向第一計(jì)算設(shè)備的第一存儲(chǔ)器采用RDMA方法寫數(shù)據(jù)時(shí),其信令圖如圖8所示,執(zhí)行步驟為:
[0225]802:第二計(jì)算設(shè)備向第一處理節(jié)點(diǎn)702發(fā)送RDMA內(nèi)存請(qǐng)求消息,所述RDMA內(nèi)存請(qǐng)求消息用于向第一處理節(jié)點(diǎn)請(qǐng)求用于RDMA寫操作的目標(biāo)內(nèi)存。
[0226]可選的,所述RDMA內(nèi)存請(qǐng)求消息攜帶要進(jìn)行RDMA寫操作的數(shù)據(jù)大小信息,第一處理節(jié)點(diǎn)702根據(jù)收到的RDMA內(nèi)存請(qǐng)求消息,向第一內(nèi)存節(jié)點(diǎn)704申請(qǐng)用于接受RDMA寫操作的內(nèi)存。
[0227]可選的,第一內(nèi)存節(jié)點(diǎn)704根據(jù)RDMA寫操作的數(shù)據(jù)大小和物理內(nèi)存使用情況,為第一處理節(jié)點(diǎn)702在第一存儲(chǔ)器分配內(nèi)存,并將內(nèi)存分配消息發(fā)送給第一處理節(jié)點(diǎn)702。
[0228]可選的,第一處理節(jié)點(diǎn)702還生成隊(duì)列對(duì)QP,并將QP與第一內(nèi)存節(jié)點(diǎn)704分配的內(nèi)存關(guān)聯(lián)起來,并將隊(duì)列對(duì)QP信息發(fā)送給第二計(jì)算設(shè)備,與第二計(jì)算設(shè)備建立基于隊(duì)列對(duì)QP的RDMA連接。
[0229]可選的,第一內(nèi)存節(jié)點(diǎn)704還生成隊(duì)列對(duì),將QP與第一內(nèi)存節(jié)點(diǎn)704分配的內(nèi)存關(guān)聯(lián)起來,并將隊(duì)列對(duì)QP信息發(fā)送給第一處理節(jié)點(diǎn)702,第一處理節(jié)點(diǎn)702將QP信息發(fā)送給第二計(jì)算設(shè)備,與第二計(jì)算設(shè)備建立基于隊(duì)列對(duì)QP的RDMA連接。
[0230]可選的,第一處理節(jié)點(diǎn)702還生成虛擬地址(Virtual Address,簡(jiǎn)稱VA)和遠(yuǎn)端內(nèi)存鑰匙(Remote Key,簡(jiǎn)稱R_KEY),并將VA和R_KEY發(fā)送給第二計(jì)算設(shè)備。VA用于表征第一內(nèi)存節(jié)點(diǎn)704分配的用于接受RDMA寫操作的內(nèi)存的虛擬地址,R_KEY用于表征訪問第一內(nèi)存節(jié)點(diǎn)704分配的用于接受RDMA寫操作的內(nèi)存的權(quán)限,且用于結(jié)合虛擬地址VA共同確定第一內(nèi)存節(jié)點(diǎn)用于接收RDMA寫操作的存儲(chǔ)單元的物理地址,即實(shí)現(xiàn)將虛擬地址映射為第一內(nèi)存節(jié)點(diǎn)704的第一存儲(chǔ)器的物理地址。
[0231]可選的,第一內(nèi)存節(jié)點(diǎn)704還生成VA和R_KEY,并將VA和R_KEY發(fā)送給第一處理節(jié)點(diǎn)702,第一處理節(jié)點(diǎn)702將VA和R_KEY發(fā)送給第二計(jì)算設(shè)備。VA用于指示第一內(nèi)存節(jié)點(diǎn)704分配的用于接受RDMA寫操作的內(nèi)存的虛擬地址,R_KEY用于表征訪問第一內(nèi)存節(jié)點(diǎn)704分配的用于接受RDMA寫操作的內(nèi)存的權(quán)限,且用于結(jié)合虛擬地址VA共同確定第一內(nèi)存節(jié)點(diǎn)用于接收RDMA寫操作的存儲(chǔ)單元的物理地址,即實(shí)現(xiàn)將虛擬地址映射為第一內(nèi)存節(jié)點(diǎn)704的第一存儲(chǔ)器的物理地址。
[0232]804:第二處計(jì)算設(shè)備接收來自第一處理節(jié)點(diǎn)702的RDMA內(nèi)存分配消息,RDMA內(nèi)存分配消息攜帶第一節(jié)點(diǎn)標(biāo)識(shí)和第一存儲(chǔ)標(biāo)識(shí),第一節(jié)點(diǎn)標(biāo)識(shí)用于標(biāo)識(shí)第一內(nèi)存節(jié)點(diǎn)704,第一存儲(chǔ)標(biāo)識(shí)用于表征訪問第一存儲(chǔ)器的權(quán)限,和標(biāo)識(shí)第一內(nèi)存節(jié)點(diǎn)704的第一存儲(chǔ)器接受RDMA寫操作的存儲(chǔ)單元。
[0233]可選的,第一節(jié)點(diǎn)標(biāo)識(shí)包括:保護(hù)域編號(hào),用于標(biāo)識(shí)第一內(nèi)存節(jié)點(diǎn)704所在的第一保護(hù)域,和第一內(nèi)存節(jié)點(diǎn)標(biāo)識(shí),用于在第一保護(hù)域中確定第一內(nèi)存節(jié)點(diǎn)704。
[0234]可選的,第一內(nèi)存節(jié)點(diǎn)704和第二計(jì)算設(shè)備在同一保護(hù)域,第一節(jié)點(diǎn)標(biāo)識(shí)僅包括第一內(nèi)存節(jié)點(diǎn)標(biāo)識(shí),用于在該保護(hù)域中確定第一內(nèi)存節(jié)點(diǎn)704。
[0235]可選的,第一存儲(chǔ)標(biāo)識(shí)包括:第一虛擬地址,用于標(biāo)識(shí)第一內(nèi)存節(jié)點(diǎn)704的第一存儲(chǔ)器用于接受RDMA寫操作的存儲(chǔ)單元的虛擬地址,和第一遠(yuǎn)端內(nèi)存鑰匙,用于表征訪問第一存儲(chǔ)器的權(quán)限,以及結(jié)合虛擬地址共同確定第一存儲(chǔ)器用于接收RDMA寫操作的存儲(chǔ)單元的物理地址,即實(shí)現(xiàn)將第一虛擬地址映射到第一存儲(chǔ)器的物理地址。
[0236]806:第二計(jì)算設(shè)備從第二存儲(chǔ)器中取出用于RDMA寫操作的數(shù)據(jù)708,并將數(shù)據(jù)708與第一存儲(chǔ)標(biāo)識(shí)一起封裝成RDMA寫操作(RDMA WRITE)消息,RDMA WRITE消息用于指示第一內(nèi)存節(jié)點(diǎn)702將該數(shù)據(jù)708寫入第一存儲(chǔ)器的存儲(chǔ)單元中。
[0237]可選的,在步驟806之前,進(jìn)一步包括:第二計(jì)算設(shè)備生成工作隊(duì)列元素WQE,并將該WQE放入與第一處理節(jié)點(diǎn)702RDMA連接的隊(duì)列對(duì)QP的發(fā)送隊(duì)列SQ中,該WQE攜帶第一節(jié)點(diǎn)標(biāo)識(shí)、第一存儲(chǔ)標(biāo)識(shí)和第二存儲(chǔ)標(biāo)識(shí),其中,第二存儲(chǔ)標(biāo)識(shí)用于標(biāo)識(shí)第二存儲(chǔ)器用于RDMA寫操作的數(shù)據(jù)708,該WQE用于指示將第二存儲(chǔ)器中的數(shù)據(jù)708拷貝至第一存儲(chǔ)器的存儲(chǔ)單元中。第二計(jì)算設(shè)備的RNIC將該WQE從SQ中取出,根據(jù)該WQE指示,封裝RDMA寫操作消息。
[0238]可選的,第二存儲(chǔ)標(biāo)識(shí)包括數(shù)據(jù)708在第二存儲(chǔ)器的首地址和數(shù)據(jù)地址長(zhǎng)度。
[0239]808:第二計(jì)算設(shè)備的RNIC將RDMA WRITE消息通過網(wǎng)絡(luò)102發(fā)送給第一節(jié)點(diǎn)標(biāo)識(shí)指示的第一內(nèi)存節(jié)點(diǎn)704。
[0240]810:第一存儲(chǔ)器控制器706根據(jù)RDMA WRITE消息指示,驗(yàn)證消息權(quán)限后,將數(shù)據(jù)708寫入第一存儲(chǔ)標(biāo)識(shí)指示的第一存儲(chǔ)器的存儲(chǔ)單元中。
[0241]可選的,在步驟810之后,該方法還包括:第一內(nèi)存節(jié)點(diǎn)504將RDMA寫操作完成的響應(yīng)消息發(fā)送給第二計(jì)算設(shè)備,用于指示RDMA寫操作完成。
[0242]根據(jù)本實(shí)施例公開的技術(shù)方案,第一計(jì)算設(shè)備的內(nèi)存資源與計(jì)算資源分離,當(dāng)需要將第二計(jì)算設(shè)備內(nèi)存中的數(shù)據(jù)寫入第一內(nèi)存節(jié)點(diǎn)時(shí),可以讓數(shù)據(jù)不經(jīng)過第一處理節(jié)點(diǎn),實(shí)現(xiàn)了第二計(jì)算設(shè)備的內(nèi)存與第一內(nèi)存節(jié)點(diǎn)之間的RDMA寫操作。采用本方案,實(shí)現(xiàn)了第二計(jì)算設(shè)備與第一內(nèi)存節(jié)點(diǎn)之間的RDMA寫操作,且RDMA寫操作的數(shù)據(jù)不經(jīng)過第二計(jì)算設(shè)比的計(jì)算資源和第一處理節(jié)點(diǎn),從而縮短了數(shù)據(jù)流經(jīng)過的路徑,節(jié)省了鏈路資源,降低了數(shù)據(jù)傳輸耗時(shí),而且數(shù)據(jù)傳輸不再經(jīng)過處理節(jié)點(diǎn),從而大大節(jié)省了處理節(jié)點(diǎn)的計(jì)算資源。
[0243]圖9為依據(jù)本發(fā)明實(shí)施例的一種遠(yuǎn)程直接數(shù)據(jù)存取方法的應(yīng)用場(chǎng)景,如圖9所示,該系統(tǒng)包括第一計(jì)算設(shè)備和第二計(jì)算設(shè)備,其中第一計(jì)算設(shè)備和第二計(jì)算設(shè)備為圖2所示的計(jì)算設(shè)備,圖中僅示出計(jì)算設(shè)備的處理器、存儲(chǔ)器和存儲(chǔ)器控制器,其他特征和功能在圖9未示出。第二計(jì)算設(shè)備的第二處理器與第二存儲(chǔ)器分離,將第二計(jì)算設(shè)備劃分為圖9所示的第二處理節(jié)點(diǎn)902和第二內(nèi)存節(jié)點(diǎn)904,其中第二處理節(jié)點(diǎn)902包括第二處理器和其他特征和功能(圖中未示出),第二內(nèi)存節(jié)點(diǎn)904包括第二存儲(chǔ)器控制器906和第二存儲(chǔ)器,第二處理節(jié)點(diǎn)902與第二內(nèi)存節(jié)點(diǎn)904之間通過網(wǎng)絡(luò)102進(jìn)行通信。
[0244]可選的,第二處理節(jié)點(diǎn)902還包括第二計(jì)算設(shè)備104的除第二內(nèi)存節(jié)點(diǎn)904外的其他內(nèi)存資源。
[0245]當(dāng)?shù)诙?jì)算設(shè)備的第二存儲(chǔ)器需要向第一計(jì)算設(shè)備的第一存儲(chǔ)器采用RDMA方法寫數(shù)據(jù)時(shí),其信令圖如圖10所示,執(zhí)行步驟為:
[0246]1002:第二處理節(jié)點(diǎn)902通過網(wǎng)絡(luò)102向第一計(jì)算設(shè)備發(fā)送RDMA內(nèi)存請(qǐng)求消息,所述RDMA內(nèi)存請(qǐng)求消