息用于向第一計(jì)算設(shè)備請求用于RDMA寫操作的目標(biāo)內(nèi)存。
[0247]可選的,所述RDMA內(nèi)存請求消息攜帶要進(jìn)行RDMA寫操作的數(shù)據(jù)大小信息,第一計(jì)算設(shè)備根據(jù)收到的RDMA內(nèi)存請求消息,為RDMA寫操作在第一存儲(chǔ)器分配內(nèi)存,并將內(nèi)存分配消息發(fā)送給第二處理節(jié)點(diǎn)902。
[0248]可選的,第一計(jì)算設(shè)備還生成隊(duì)列對QP,并將QP與分配的內(nèi)存關(guān)聯(lián)起來,并將隊(duì)列對QP信息發(fā)送給第二處理節(jié)點(diǎn)902,與第二處理節(jié)點(diǎn)902建立基于隊(duì)列對QP的RDMA連接。
[0249]可選的,第一計(jì)算設(shè)備還生成虛擬地址VA和遠(yuǎn)端內(nèi)存鑰匙R(shí)_KEY,并將VA和R_KEY發(fā)送給第二處理節(jié)點(diǎn)902。VA用于表征第一計(jì)算設(shè)備分配的用于接受RDMA寫操作的內(nèi)存的虛擬地址,R_KEY用于表征訪問第一計(jì)算設(shè)備分配的用于接受RDMA寫操作的內(nèi)存的權(quán)限,且用于結(jié)合虛擬地址VA共同確定第一存儲(chǔ)器用于接收RDMA寫操作的存儲(chǔ)單元的物理地址,即實(shí)現(xiàn)將虛擬地址映射為第一存儲(chǔ)器的物理地址??蛇x的,第一計(jì)算設(shè)備還生成隊(duì)列對QP,并將QP與為RDMA內(nèi)存請求消息分配的內(nèi)存關(guān)聯(lián)起來,并將該隊(duì)列對QP信息發(fā)送給第二處理節(jié)點(diǎn)902,與第二處理節(jié)點(diǎn)902建立基于隊(duì)列對QP的RDMA連接。
[0250]1004:第二處理節(jié)點(diǎn)902接收來自第一計(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ǔ)單元。
[0251]可選的,第一節(jié)點(diǎn)標(biāo)識(shí)包括:保護(hù)域編號(hào),用于標(biāo)識(shí)第一計(jì)算設(shè)備所在的第一保護(hù)域,和第一計(jì)算設(shè)備標(biāo)識(shí),用于在第一保護(hù)域中確定第一計(jì)算設(shè)備。
[0252]可選的,第一計(jì)算設(shè)備和第二內(nèi)存節(jié)點(diǎn)904在同一保護(hù)域,第一節(jié)點(diǎn)標(biāo)識(shí)僅包括第一計(jì)算設(shè)備標(biāo)識(shí),用于在該保護(hù)域中確定第一計(jì)算設(shè)備。
[0253]可選的,第一存儲(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用于表征訪問第一存儲(chǔ)器的權(quán)限,且用于結(jié)合虛擬地址VA共同確定第一存儲(chǔ)器用于接收RDMA寫操作的存儲(chǔ)單元的物理地址,即實(shí)現(xiàn)將第一虛擬地址VA映射為第一存儲(chǔ)器的物理地址。
[0254]1006:第二處理節(jié)點(diǎn)902封裝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ù)908,該RDMA拷貝操作消息用于指示第二內(nèi)存節(jié)點(diǎn)904將數(shù)據(jù)908拷貝至第一內(nèi)存節(jié)點(diǎn)的第一存儲(chǔ)器的存儲(chǔ)單元中。
[0255]可選的,第二存儲(chǔ)標(biāo)識(shí)包括第二虛擬地址,用于標(biāo)識(shí)第二存儲(chǔ)器用于RDMA寫操作的數(shù)據(jù)908的虛擬地址;數(shù)據(jù)長度,用于標(biāo)識(shí)數(shù)據(jù)908的數(shù)據(jù)地址長度;和第二遠(yuǎn)端內(nèi)存鑰匙,用于表征訪問第二存儲(chǔ)器的權(quán)限,以及結(jié)合虛擬地址共同確定第二存儲(chǔ)器用于RDMA寫操作的數(shù)據(jù)的存儲(chǔ)單元的物理地址,即實(shí)現(xiàn)將第二虛擬地址映射到第二存儲(chǔ)器的物理地址。
[0256]可選的,在步驟1006之前,進(jìn)一步包括:第二處理節(jié)點(diǎn)902生成工作隊(duì)列元素WQE,并將該WQE放入與第二內(nèi)存節(jié)點(diǎn)904RDMA連接的隊(duì)列對QP的發(fā)送隊(duì)列SQ中,該WQE攜帶第一節(jié)點(diǎn)標(biāo)識(shí)、第一存儲(chǔ)標(biāo)識(shí)和第二存儲(chǔ)標(biāo)識(shí),該WQE用于指示將第二存儲(chǔ)器中的數(shù)據(jù)908拷貝至第一存儲(chǔ)器的存儲(chǔ)單元中。第二處理節(jié)點(diǎn)902的RNIC將該WQE從SQ中取出,根據(jù)該WQE指示,封裝RDMA拷貝操作消息。
[0257]可選的,所述WQE還包括第二節(jié)點(diǎn)標(biāo)識(shí),用于指示第二內(nèi)存節(jié)點(diǎn)904。
[0258]1008:第二處理節(jié)點(diǎn)902的RNIC將RDMA拷貝操作消息通過網(wǎng)絡(luò)102發(fā)送給第二內(nèi)存節(jié)點(diǎn)904。
[0259]1010:第二存儲(chǔ)器控制器906根據(jù)RDMA拷貝操作消息指示,驗(yàn)證消息權(quán)限后,取出第二存儲(chǔ)標(biāo)識(shí)標(biāo)識(shí)的數(shù)據(jù)908,結(jié)合第一存儲(chǔ)標(biāo)識(shí),封裝RDMA WRITE消息,該RDMA WRITE消息用于指示將數(shù)據(jù)908寫入第一存儲(chǔ)標(biāo)識(shí)指示的第一存儲(chǔ)器的存儲(chǔ)單元中。
[0260]1012:第二存儲(chǔ)器控制器906將RDMA寫操作消息通過網(wǎng)絡(luò)102發(fā)送給第一節(jié)點(diǎn)標(biāo)識(shí)指示的第一計(jì)算設(shè)備。
[0261]1014:第一計(jì)算設(shè)備的RNIC根據(jù)RDMA WRITE消息指示,驗(yàn)證消息權(quán)限后,將數(shù)據(jù)908寫入第一存儲(chǔ)標(biāo)識(shí)指示的第一存儲(chǔ)器的存儲(chǔ)單元中。
[0262]可選的,步驟1014之后,進(jìn)一步包括,第一計(jì)算設(shè)備向第二內(nèi)存節(jié)點(diǎn)904發(fā)送RDMA響應(yīng)消息,用于指示RDMA寫操作完成,第二內(nèi)存節(jié)點(diǎn)904將該RDMA響應(yīng)消息發(fā)送給第二處理節(jié)點(diǎn)902。
[0263]可選的,步驟1014之后,進(jìn)一步包括,第一計(jì)算設(shè)備向第二處理節(jié)點(diǎn)902發(fā)送RDMA響應(yīng)消息,用于指示RDMA寫操作完成。
[0264]根據(jù)本實(shí)施例公開的技術(shù)方案,第二計(jì)算設(shè)備的內(nèi)存資源與計(jì)算資源分離,當(dāng)需要將第二內(nèi)存節(jié)點(diǎn)內(nèi)的數(shù)據(jù)寫入第一計(jì)算設(shè)備的內(nèi)存時(shí),通過增加RDMA拷貝操作消息,指示第二內(nèi)存節(jié)點(diǎn)直接向第一計(jì)算設(shè)備的內(nèi)存寫數(shù)據(jù),實(shí)現(xiàn)了第二內(nèi)存節(jié)點(diǎn)與第一計(jì)算設(shè)備之間的RDMA寫操作。采用本方案,實(shí)現(xiàn)了第二內(nèi)存節(jié)點(diǎn)與第一計(jì)算設(shè)備之間的RDMA寫操作,且RDMA寫操作的數(shù)據(jù)不經(jīng)過第二處理節(jié)點(diǎn)和第一計(jì)算設(shè)備的計(jì)算資源,從而縮短了數(shù)據(jù)流經(jīng)過的路徑,節(jié)省了鏈路資源,降低了數(shù)據(jù)傳輸耗時(shí),而且數(shù)據(jù)傳輸不再經(jīng)過處理節(jié)點(diǎn),從而大大節(jié)省了處理節(jié)點(diǎn)的計(jì)算資源。
[0265]圖11為依據(jù)本發(fā)明一實(shí)施例的RDMA數(shù)據(jù)拷貝方法1100的示范性流程圖,第一計(jì)算設(shè)備包括第一處理節(jié)點(diǎn)和第一內(nèi)存節(jié)點(diǎn),第二計(jì)算設(shè)備包括第二處理節(jié)點(diǎn)和第二內(nèi)存節(jié)點(diǎn),第二處理節(jié)點(diǎn)與第二內(nèi)存節(jié)點(diǎn)分離時(shí),用于第二內(nèi)存節(jié)點(diǎn)對第一內(nèi)存節(jié)點(diǎn)進(jìn)行RDMA寫操作,包括:
[0266]S1102:第二處理節(jié)點(diǎn)向第一處理節(jié)點(diǎn)發(fā)送RDMA內(nèi)存請求消息,RDMA內(nèi)存請求消息用于向所述第一處理節(jié)點(diǎn)請求用于RDMA寫操作的目標(biāo)內(nèi)存。
[0267]S1104:所述第二處理節(jié)點(diǎn)接收來自所述第一處理節(jié)點(diǎn)的RDMA內(nèi)存分配消息,所述RDMA內(nèi)存分配消息攜帶第一節(jié)點(diǎn)標(biāo)識(shí)和第一存儲(chǔ)標(biāo)識(shí),所述第一節(jié)點(diǎn)標(biāo)識(shí)用于指示所述第一內(nèi)存節(jié)點(diǎn),所述第一存儲(chǔ)標(biāo)識(shí)用于指示所述第一內(nèi)存節(jié)點(diǎn)中用于接受所述RDMA寫操作的存儲(chǔ)單元。
[0268]S1106:所述第二處理節(jié)點(diǎn)封裝RDMA拷貝操作消息,所述RDMA拷貝操作消息中攜帶所述第一節(jié)點(diǎn)標(biāo)識(shí)、所述第一存儲(chǔ)標(biāo)識(shí)和第二存儲(chǔ)標(biāo)識(shí),所述第二存儲(chǔ)標(biāo)識(shí)用于指示所述第二內(nèi)存節(jié)點(diǎn)中用于所述RDMA寫操作的數(shù)據(jù)的內(nèi)存地址;
[0269]S1108:所述第二處理節(jié)點(diǎn)將所述RDMA拷貝操作消息發(fā)送給所述第二內(nèi)存節(jié)點(diǎn),指示所述第二內(nèi)存節(jié)點(diǎn)根據(jù)所述第一節(jié)點(diǎn)標(biāo)識(shí)確定所述第一內(nèi)存節(jié)點(diǎn),將所述第二存儲(chǔ)標(biāo)識(shí)指示的存儲(chǔ)單元中的數(shù)據(jù)寫入所述第一存儲(chǔ)標(biāo)識(shí)指示的第一內(nèi)存節(jié)點(diǎn)的存儲(chǔ)單元。
[0270]可選的,所述第一計(jì)算設(shè)備的第一處理節(jié)點(diǎn)和第一內(nèi)存節(jié)點(diǎn)分離,第一處理節(jié)點(diǎn)與第一處理節(jié)點(diǎn)是兩個(gè)分離的節(jié)點(diǎn),二者通過網(wǎng)絡(luò)進(jìn)行通信。
[0271]可選的,所述第一計(jì)算設(shè)備的第一處理節(jié)點(diǎn)和第一內(nèi)存節(jié)點(diǎn)不分離,第一處理節(jié)點(diǎn)和第一內(nèi)存節(jié)點(diǎn)在同一計(jì)算設(shè)備節(jié)點(diǎn)上,二者用同一節(jié)點(diǎn)標(biāo)識(shí)來進(jìn)行指示。
[0272]可選的,方法1100還包括:所述第二處理節(jié)點(diǎn)生成工作隊(duì)列元素WQE,并將所述WQE放入所述第二內(nèi)存節(jié)點(diǎn)RDMA連接的隊(duì)列對QP的發(fā)送隊(duì)列SQ中,所述WQE攜帶所述第一節(jié)點(diǎn)標(biāo)識(shí)、所述第一存儲(chǔ)標(biāo)識(shí)和所述第二存儲(chǔ)標(biāo)識(shí),用于指示將所述第二存儲(chǔ)標(biāo)識(shí)指示的存儲(chǔ)單元中的數(shù)據(jù)拷貝至所述第一存儲(chǔ)標(biāo)識(shí)指示的存儲(chǔ)單元中;則所述第二處理節(jié)點(diǎn)封裝RDMA拷貝操作消息,包括:從所述QP的發(fā)送隊(duì)列SQ中取出所述WQE,根據(jù)所述WQE,封裝所述RDMA拷貝操作消息。
[0273]可選的,所述第一節(jié)點(diǎn)標(biāo)識(shí)包括:
[0274]保護(hù)域編號(hào),用于標(biāo)識(shí)所述第一內(nèi)存節(jié)點(diǎn)所在的保護(hù)域;
[0275]第一內(nèi)存節(jié)點(diǎn)標(biāo)識(shí),用于在所述保護(hù)域中標(biāo)識(shí)所述第一內(nèi)存節(jié)點(diǎn)。
[0276]可選的,所述第一內(nèi)存節(jié)點(diǎn)和所述第二內(nèi)存節(jié)點(diǎn)在同一保護(hù)域,所述第一節(jié)點(diǎn)標(biāo)識(shí)包括:
[0277]第一內(nèi)存節(jié)點(diǎn)標(biāo)識(shí),用于在所述同一保護(hù)域中標(biāo)識(shí)所述第一內(nèi)存節(jié)點(diǎn)。
[0278]可選的,所述第一存儲(chǔ)標(biāo)識(shí)包括:
[0279]第一虛擬地址,用于標(biāo)識(shí)所述第一內(nèi)存節(jié)點(diǎn)的用于接收所述RDMA寫操作的存儲(chǔ)單元的在所述第一處理節(jié)點(diǎn)的虛擬地址;和
[0280]第一遠(yuǎn)端內(nèi)存鑰匙,用于表征訪問所述第一內(nèi)存節(jié)點(diǎn)的存儲(chǔ)設(shè)備的權(quán)限,以及結(jié)合所述第一虛擬地址確定所述第一內(nèi)存節(jié)點(diǎn)的用于接收RDMA寫操作的存儲(chǔ)單元的物理地址。
[0281]可選的,所述第二存儲(chǔ)標(biāo)識(shí)包括:
[0282]第二虛擬地址,用于標(biāo)識(shí)所述第二內(nèi)存節(jié)點(diǎn)的用于RDMA寫操作的數(shù)據(jù)在所述第二處理節(jié)點(diǎn)中的虛擬地址;
[0283]數(shù)據(jù)長度,用于標(biāo)識(shí)所述第二內(nèi)存節(jié)點(diǎn)的用于RDMA寫操作的數(shù)據(jù)的長度;和
[0284]第二遠(yuǎn)端內(nèi)存鑰匙,用于表征訪問所述第二內(nèi)存節(jié)點(diǎn)存儲(chǔ)設(shè)備的權(quán)限,以及結(jié)合所述第二虛擬地址確定所述用于RDMA寫操作的數(shù)據(jù)在所述第二內(nèi)存節(jié)點(diǎn)中的物理地址。
[0285]可選的,所述第二處理節(jié)點(diǎn)將所述RDMA拷貝操作消息發(fā)送給所述第二內(nèi)存節(jié)點(diǎn)之后,進(jìn)一步包括:接收所述第二內(nèi)存節(jié)點(diǎn)的RDMA應(yīng)答消息,所述RDMA應(yīng)答消息用于指示所述RDMA寫操作已完成。
[0286]采用本實(shí)施例提供的技術(shù)方案,通過RDMA拷貝操作消息的指示,可以實(shí)現(xiàn)分離的內(nèi)存節(jié)點(diǎn)之間,或者分離的內(nèi)存節(jié)點(diǎn)與其他計(jì)算設(shè)備的內(nèi)存之間的RDMA寫操作??s短了數(shù)據(jù)流經(jīng)過的路徑,節(jié)省了鏈路資源,降低了數(shù)據(jù)傳輸耗時(shí),而且數(shù)據(jù)傳輸不再經(jīng)過處理節(jié)點(diǎn)或計(jì)算設(shè)備的計(jì)算資源,從而大大節(jié)省了處理節(jié)點(diǎn)或計(jì)算設(shè)備的計(jì)算資源。
[0287]圖12為依據(jù)本發(fā)明一實(shí)施例的RDMA數(shù)據(jù)拷貝方法1200的示范性流程圖,第一計(jì)算設(shè)備包括第一處理節(jié)點(diǎn)和第一內(nèi)存節(jié)點(diǎn),第二計(jì)算設(shè)備包括第二處理節(jié)點(diǎn)和第二內(nèi)存節(jié)點(diǎn),第二處理節(jié)點(diǎn)與第二內(nèi)存節(jié)點(diǎn)分離時(shí),用于第二內(nèi)存節(jié)點(diǎn)對第一內(nèi)存節(jié)點(diǎn)進(jìn)行RDMA寫操作,包括:
[0288]S1202:所述第二內(nèi)存節(jié)點(diǎn)接收來自所述第二處理節(jié)點(diǎn)的RDMA拷貝操作消息,所述RDMA拷貝操作消息攜帶第一節(jié)點(diǎn)標(biāo)識(shí)、第一存儲(chǔ)標(biāo)識(shí)和第二存儲(chǔ)標(biāo)識(shí),所述第一節(jié)點(diǎn)標(biāo)識(shí)用于指示所述第一內(nèi)存節(jié)點(diǎn),所述第一存儲(chǔ)標(biāo)識(shí)用于指示所述第一內(nèi)存節(jié)點(diǎn)中用于接受RDMA寫操作的存儲(chǔ)單元,所述第二存儲(chǔ)標(biāo)識(shí)用于指示所述第二內(nèi)存節(jié)點(diǎn)用于所述RDMA寫操作的數(shù)據(jù);
[0289]S1204:第二內(nèi)存節(jié)點(diǎn)根據(jù)所述RDMA拷貝操作消息,取出所述第二存儲(chǔ)標(biāo)識(shí)指示的所述數(shù)據(jù),根據(jù)所述第一存儲(chǔ)標(biāo)識(shí),封裝RDMA寫操作消息,所述RDMA寫操作消息中包含所述RDMA寫操作的數(shù)據(jù)和所述第一存儲(chǔ)標(biāo)識(shí);
[0290]S1206:第二內(nèi)存節(jié)點(diǎn)將所述RDMA寫操作消息發(fā)送給所述第一節(jié)點(diǎn)標(biāo)識(shí)指示的第一內(nèi)存節(jié)點(diǎn),指示第一內(nèi)存節(jié)點(diǎn)將所述數(shù)據(jù)寫入所述第一存儲(chǔ)標(biāo)識(shí)指示的存儲(chǔ)單元。
[0291]可選的,所述第一計(jì)算設(shè)備的第一處理節(jié)點(diǎn)和第一內(nèi)存節(jié)點(diǎn)分離,第一處理節(jié)點(diǎn)與第一處理節(jié)點(diǎn)是兩個(gè)分離的節(jié)點(diǎn),二者通過網(wǎng)絡(luò)進(jìn)行通信。
[0292]可選的,所述第一計(jì)算設(shè)備的第一處理節(jié)點(diǎn)和第一內(nèi)存節(jié)點(diǎn)不分離,第一處理節(jié)點(diǎn)和第一內(nèi)存節(jié)點(diǎn)在同一計(jì)算設(shè)備節(jié)點(diǎn)上,二者用同一節(jié)點(diǎn)標(biāo)識(shí)來進(jìn)行指示。
[0293]可選的,所述第一節(jié)點(diǎn)標(biāo)識(shí)包括:
[0294]保護(hù)域編號(hào),用于標(biāo)識(shí)所述第一內(nèi)存節(jié)點(diǎn)所在的保護(hù)域;
[0295]第一內(nèi)存節(jié)點(diǎn)標(biāo)識(shí),用于在所述保護(hù)域中標(biāo)識(shí)所述第一內(nèi)存節(jié)點(diǎn)。
[0296]可選的,所述第一內(nèi)存節(jié)點(diǎn)和所述第二內(nèi)存節(jié)點(diǎn)在同一保護(hù)域,所述第一節(jié)點(diǎn)標(biāo)識(shí)包括:
[0297]第一內(nèi)存節(jié)點(diǎn)標(biāo)識(shí),用于在所述同一保護(hù)域中標(biāo)識(shí)所述第一內(nèi)存節(jié)點(diǎn)。
[0298]可選的,所述第一存儲(chǔ)標(biāo)識(shí)包括:
[0299]第一虛擬地址,用于標(biāo)識(shí)所述第一內(nèi)存節(jié)點(diǎn)的用于接收所述RDMA寫操作的存儲(chǔ)單元的在所述第一處理節(jié)點(diǎn)的虛擬地址;和
[0300]第一遠(yuǎn)端內(nèi)存鑰匙,用于表征訪問所述第一內(nèi)存節(jié)點(diǎn)的存儲(chǔ)設(shè)備的權(quán)限,以及結(jié)合所述第一虛擬地址確定所述第一內(nèi)存節(jié)點(diǎn)的用于接收RDMA寫操作的存儲(chǔ)單元的物理地址。
[0301]可選的,所述第二存儲(chǔ)標(biāo)識(shí)包括:
[0302]第二虛擬地址,用于標(biāo)識(shí)所述第二內(nèi)存節(jié)點(diǎn)的用于RDMA寫操作的數(shù)據(jù)在所述第二處理節(jié)點(diǎn)中的虛擬地址;
[0303]數(shù)據(jù)長度,用于標(biāo)識(shí)所述第二內(nèi)存節(jié)點(diǎn)的用于RDMA寫操作的數(shù)據(jù)的長度;和
[0304]第二遠(yuǎn)端內(nèi)存鑰匙,用于表征訪問所述第二內(nèi)存節(jié)點(diǎn)存儲(chǔ)設(shè)備的權(quán)限,以及結(jié)合所述第二虛擬地址確定所述用于RDMA寫操作的數(shù)據(jù)在所述第二內(nèi)存節(jié)點(diǎn)中的物理地址。
[0305]可選的,方法1200還包括:接收所述第一內(nèi)存節(jié)點(diǎn)的RDMA應(yīng)答消息,所述RDMA應(yīng)答消息用于指示RDMA寫操作已完成。
[0306]可選的,方法1200還包括,將所述RDMA應(yīng)答消息發(fā)送給所述第二處理節(jié)點(diǎn)。
[0307]采用本實(shí)施例提供的技術(shù)方案,通過RDMA拷貝操作消息的指示,可以實(shí)現(xiàn)分離的內(nèi)存節(jié)點(diǎn)之間,或者分離的內(nèi)存節(jié)點(diǎn)與其他計(jì)算設(shè)備的內(nèi)存之間的RDMA寫操作??s短了數(shù)據(jù)流經(jīng)過的路徑,節(jié)省了鏈路資源,降低了數(shù)據(jù)傳輸耗時(shí),而且數(shù)據(jù)傳輸不再經(jīng)過處理節(jié)點(diǎn)或計(jì)算設(shè)備的計(jì)算資源,從而大大節(jié)省了處理節(jié)點(diǎn)或計(jì)算設(shè)備的計(jì)算資源。
[0308]圖13為依據(jù)本發(fā)明一實(shí)施例的RDMA數(shù)據(jù)拷貝方法1300的示范性流程圖,第一計(jì)算設(shè)備包括第一處理節(jié)點(diǎn)和第一內(nèi)存節(jié)點(diǎn),第一處理節(jié)點(diǎn)與第一內(nèi)存節(jié)點(diǎn)分離時(shí),用于第二計(jì)算設(shè)備的第二存儲(chǔ)設(shè)備對第一內(nèi)存節(jié)點(diǎn)進(jìn)行RDMA寫操作,包括:
[0309]S1302:第二計(jì)算設(shè)備向所述第一處理節(jié)點(diǎn)發(fā)送RDMA內(nèi)存請求消息,所述RDMA內(nèi)存請求消息用于向所述第一處理節(jié)點(diǎn)請求用于RDMA寫操作的目標(biāo)內(nèi)存;
[0310]S1304:所述第二計(jì)算設(shè)備接收來自所述第一處理節(jié)點(diǎn)的RDMA內(nèi)存分配消息,所述RDMA內(nèi)存分配消息攜帶第一節(jié)點(diǎn)標(biāo)識(shí)和第一存儲(chǔ)標(biāo)識(shí),所述第一節(jié)點(diǎn)標(biāo)識(shí)用于指示所述第一內(nèi)存節(jié)點(diǎn),所述第一存儲(chǔ)標(biāo)識(shí)用于指示所述第一內(nèi)存節(jié)點(diǎn)中用于接受所述RDMA寫操作的存儲(chǔ)單元;
[0311]S1306:所述第二計(jì)算設(shè)備封裝RDMA寫操作消息,所述RDMA寫操作消息中攜帶用于所述RDMA寫操作的數(shù)據(jù)和所述第一存儲(chǔ)標(biāo)識(shí);
[0312]S1308:所述第二計(jì)算設(shè)備將所述RDMA寫操作消息發(fā)送給所述第一節(jié)點(diǎn)標(biāo)識(shí)指示的所述第一內(nèi)存節(jié)點(diǎn),指示所述第一內(nèi)存節(jié)點(diǎn)將所述數(shù)據(jù)寫入所述第一存儲(chǔ)標(biāo)識(shí)指示的存儲(chǔ)單元。
[0313]可選的,方法1300還包括:所述第二計(jì)算設(shè)備生成工作隊(duì)列元素WQE,并將所述WQE放入與所述第一處理節(jié)點(diǎn)建立的RDMA連接的隊(duì)列對QP的發(fā)送隊(duì)列SQ中,所述WQE攜帶所述第一節(jié)點(diǎn)標(biāo)識(shí)、所述第一存儲(chǔ)標(biāo)識(shí)和所述第二存儲(chǔ)標(biāo)識(shí),用于指示將所述第二存儲(chǔ)標(biāo)識(shí)指示的存儲(chǔ)單元中的數(shù)據(jù)拷貝至所述第一存儲(chǔ)標(biāo)識(shí)指示的存儲(chǔ)單元中,所述第二存儲(chǔ)標(biāo)識(shí)用于指示所述第二存儲(chǔ)設(shè)備用于所述RDMA寫操作的數(shù)據(jù);則所述第二計(jì)算設(shè)備封裝RDMA寫操作消息包括:所述第二計(jì)算設(shè)備從所述QP的發(fā)送隊(duì)列SQ中取出所述WQE,根據(jù)所述WQE,取出所述第二存儲(chǔ)標(biāo)識(shí)指示的所述數(shù)據(jù),根據(jù)所述第一存儲(chǔ)標(biāo)識(shí),封裝所述RDMA寫操作消息。
[0314]可選的,所述第一節(jié)點(diǎn)標(biāo)識(shí)包括:
[0315]保護(hù)域編號(hào),用于標(biāo)識(shí)所述第一內(nèi)存節(jié)點(diǎn)所在的保護(hù)域;
[0316]第一內(nèi)存節(jié)點(diǎn)標(biāo)識(shí),用于在所述保護(hù)域中標(biāo)識(shí)所述第一內(nèi)存節(jié)點(diǎn)。
[0317]可選的,所述第一內(nèi)存節(jié)點(diǎn)和所述第二計(jì)算設(shè)備在同一保護(hù)域,所述第一節(jié)點(diǎn)標(biāo)識(shí)包括:
[0318]第一內(nèi)存節(jié)點(diǎn)標(biāo)識(shí),用于在所述同一保護(hù)域中標(biāo)識(shí)所述第一內(nèi)存節(jié)點(diǎn)。
[0319]可選的,所述第一存儲(chǔ)標(biāo)識(shí)包括:
[0320]第一虛擬地址,用于標(biāo)識(shí)所述第一內(nèi)存節(jié)點(diǎn)的用于接收所述RDMA寫操作的存儲(chǔ)單元的在所述第一處理節(jié)點(diǎn)的虛擬地址;和
[0321]第一遠(yuǎn)端內(nèi)存鑰匙,用于表征訪問所述第一內(nèi)存節(jié)點(diǎn)的存儲(chǔ)設(shè)備的權(quán)限,以及結(jié)合所述第一虛擬地址確定所述第一內(nèi)存節(jié)點(diǎn)的用于接收RDMA寫操作的存儲(chǔ)單元的物理地址。
[0322]可選的,所述第二計(jì)算設(shè)備將所述RDMA寫操作消息發(fā)送給所述第一節(jié)點(diǎn)標(biāo)識(shí)指示的所述第一內(nèi)存節(jié)點(diǎn)之后,進(jìn)一步包括:接收所述第一內(nèi)存節(jié)點(diǎn)的RDMA應(yīng)答消息,所述RDMA應(yīng)答消息用于指示RDMA寫操作已完成。
[0323]采用本實(shí)施例提供的技術(shù)方案,可以實(shí)現(xiàn)計(jì)算設(shè)備與內(nèi)存節(jié)點(diǎn)之間的RDMA寫操作??s短了數(shù)據(jù)流經(jīng)過的路徑,節(jié)省了鏈路資源,降低了數(shù)據(jù)傳輸耗時(shí),而且數(shù)據(jù)傳輸不再經(jīng)過處理節(jié)點(diǎn)或計(jì)算設(shè)備的計(jì)算資源,從而大大節(jié)省了處理節(jié)點(diǎn)和計(jì)算設(shè)備的計(jì)算資源。
[0324]圖14為依據(jù)本發(fā)明一實(shí)施例的RDMA拷貝裝置1400的邏輯結(jié)構(gòu)示意圖,第一計(jì)算設(shè)備包括第一處理節(jié)點(diǎn)和第一內(nèi)存節(jié)點(diǎn),裝置1400與裝置1400的第二內(nèi)存節(jié)點(diǎn)分離時(shí),用于控制第二內(nèi)存節(jié)點(diǎn)對第一內(nèi)存節(jié)點(diǎn)進(jìn)行RDMA寫操作,包括:
[0325]發(fā)送單元1402,所述第一處理節(jié)點(diǎn)發(fā)送RDMA內(nèi)存請求消息,所述RDMA內(nèi)存請求消息用于向所述第一處理節(jié)點(diǎn)請求用于RDMA寫操作的目標(biāo)內(nèi)存;
[0326]接收單元1404,用于接收來自所述第一處理節(jié)點(diǎn)的RDMA內(nèi)存分配消息,所述RDMA內(nèi)存分配消息攜帶第一節(jié)點(diǎn)標(biāo)識(shí)和第一存儲(chǔ)標(biāo)識(shí),所述第一節(jié)點(diǎn)標(biāo)識(shí)用于指示所述第一內(nèi)存節(jié)點(diǎn),所述第一存儲(chǔ)標(biāo)識(shí)用于指示所述第一內(nèi)存節(jié)點(diǎn)中用于接受所述RDMA寫操作的存儲(chǔ)單元;
[0327]封裝單元1406,用于封裝RDMA拷貝操作消息,所述RDMA拷貝操作消息中攜帶所述第一節(jié)點(diǎn)標(biāo)識(shí)、所述第一存儲(chǔ)標(biāo)識(shí)和第二存儲(chǔ)標(biāo)識(shí),所述第二存儲(chǔ)標(biāo)識(shí)用于指示所述第二內(nèi)存節(jié)點(diǎn)中用于所述RDMA寫操作的數(shù)據(jù)的內(nèi)存地址;
[0328]發(fā)送單元1402,還用于將所述RDMA拷貝操作消息發(fā)送給所述第二內(nèi)存節(jié)點(diǎn),指示所述第二內(nèi)存節(jié)點(diǎn)根據(jù)所述第一節(jié)點(diǎn)標(biāo)識(shí)確定所述第一內(nèi)存節(jié)點(diǎn),將所述第二存儲(chǔ)標(biāo)識(shí)指示的存儲(chǔ)單元中的數(shù)據(jù)寫入所述第一存儲(chǔ)標(biāo)識(shí)指示的第一內(nèi)存節(jié)點(diǎn)的存儲(chǔ)單元。
[0329]可選的,所述第一計(jì)算設(shè)備的第一處理節(jié)點(diǎn)和第一內(nèi)存節(jié)點(diǎn)分離,第一處理節(jié)點(diǎn)與第一處理節(jié)點(diǎn)是兩個(gè)分離的節(jié)點(diǎn),二者通過網(wǎng)絡(luò)進(jìn)行通信。
[0330]可選的,所述第一計(jì)算設(shè)備的第一處理節(jié)點(diǎn)和第一內(nèi)存節(jié)點(diǎn)不分離,第一處理節(jié)點(diǎn)和第一內(nèi)存節(jié)點(diǎn)在同一計(jì)算設(shè)備節(jié)點(diǎn)上,二者用同一節(jié)點(diǎn)標(biāo)識(shí)來進(jìn)行指示。
[0331]可選的,裝置1400還包括生成單元,用于生成工作隊(duì)列元素WQE,并將所述WQE放入所述第二內(nèi)存節(jié)點(diǎn)RDMA連接的隊(duì)列對QP的發(fā)送隊(duì)列SQ中,所述WQE攜帶所述第一節(jié)點(diǎn)標(biāo)識(shí)、所述第一存儲(chǔ)標(biāo)識(shí)和所述第二存儲(chǔ)標(biāo)識(shí),用于指示將所述第二存儲(chǔ)標(biāo)識(shí)指示的存儲(chǔ)單元中的數(shù)據(jù)拷貝至所述第一存儲(chǔ)標(biāo)識(shí)指示的存儲(chǔ)單元中;則所述封裝單元1406用于封裝RDMA拷貝操作消息,包括:所述封裝單元1406從所述QP的發(fā)送隊(duì)列SQ中取出所述WQE,根據(jù)所述WQE,封裝所述RDMA拷貝操作消息。
[0332]可選的,所述第一節(jié)點(diǎn)標(biāo)識(shí)包括:
[0333]保護(hù)域編號(hào),用于標(biāo)識(shí)所述第一內(nèi)存節(jié)點(diǎn)所在的保護(hù)域;
[0334]第一內(nèi)存節(jié)點(diǎn)標(biāo)識(shí),用于在所述保護(hù)域中標(biāo)識(shí)所述第一內(nèi)存節(jié)點(diǎn)。
[