一種遠(yuǎn)程直接數(shù)據(jù)存取方法、設(shè)備和系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明實(shí)施例涉及計(jì)算機(jī)領(lǐng)域,尤其涉及一種遠(yuǎn)程直接數(shù)據(jù)存取(Remote DirectMemory Access,簡(jiǎn)稱RDMA)拷貝方法、設(shè)備和系統(tǒng)。
【背景技術(shù)】
[0002]隨著計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)的迅猛發(fā)展,網(wǎng)絡(luò)的性能目前已經(jīng)達(dá)到每秒100千兆比特級(jí)另|J,如何充分利用高速網(wǎng)絡(luò)的特性是我們面對(duì)的一個(gè)重要問題。RDMA是為了解決網(wǎng)絡(luò)傳輸中數(shù)據(jù)處理的延遲而產(chǎn)生的,RDMA使一臺(tái)計(jì)算設(shè)備可以直接將信息傳送到另一臺(tái)計(jì)算設(shè)備的內(nèi)存中,消除了外部存儲(chǔ)器復(fù)制和文本交換操作。這項(xiàng)技術(shù)通過減少處理器開銷和減少內(nèi)存的拷貝降低了時(shí)延,提高了網(wǎng)絡(luò)利用率。
[0003]RDMA解決了現(xiàn)有以計(jì)算設(shè)備為單位的數(shù)據(jù)快速交互,然而隨著提高資源利用率的需求越來(lái)越受到重視,計(jì)算設(shè)備的存儲(chǔ)資源與計(jì)算資源相互分離,形成存儲(chǔ)資源池,RDMA方式的數(shù)據(jù)交互也被從計(jì)算設(shè)備與計(jì)算設(shè)備之間模式的數(shù)據(jù)交互引申到計(jì)算設(shè)備的分離部件之間的數(shù)據(jù)交互,由此帶來(lái)的變化對(duì)RDMA帶來(lái)了新的需求。即當(dāng)計(jì)算設(shè)備的存儲(chǔ)資源與計(jì)算資源分離后,當(dāng)出現(xiàn)大量遠(yuǎn)端內(nèi)存數(shù)據(jù)拷貝的需求時(shí),如何通過RDMA技術(shù)手段完成數(shù)據(jù)拷貝。
【發(fā)明內(nèi)容】
[0004]有鑒于此,本發(fā)明實(shí)施例提供了一種遠(yuǎn)程直接數(shù)據(jù)存取方法、設(shè)備和系統(tǒng),在計(jì)算設(shè)備的計(jì)算資源與其存儲(chǔ)資源分離的情況下,實(shí)現(xiàn)了分離存儲(chǔ)資源節(jié)點(diǎn)部件的RDMA操作。
[0005]第一方面,本發(fā)明實(shí)施例提供了一種遠(yuǎn)程直接數(shù)據(jù)存取RDMA數(shù)據(jù)拷貝的方法,第一計(jì)算設(shè)備包括第一處理節(jié)點(diǎn)和第一內(nèi)存節(jié)點(diǎn),第二計(jì)算設(shè)備包括第二處理節(jié)點(diǎn)和第二內(nèi)存節(jié)點(diǎn),包括:
[0006]所述第二處理節(jié)點(diǎn)向所述第一處理節(jié)點(diǎn)發(fā)送RDMA內(nèi)存請(qǐng)求消息,所述RDMA內(nèi)存請(qǐng)求消息用于向所述第一處理節(jié)點(diǎn)請(qǐng)求用于RDMA寫操作的目標(biāo)內(nèi)存;
[0007]所述第二處理節(jié)點(diǎn)接收來(lái)自所述第一處理節(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ǔ)單元;
[0008]所述第二處理節(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)存地址;
[0009]所述第二處理節(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ǔ)單元。
[0010]結(jié)合第一方面,在第一種可能的實(shí)現(xiàn)方式中,所述第二處理節(jié)點(diǎn)接收來(lái)自所述第一處理節(jié)點(diǎn)的RDMA內(nèi)存分配消息之后,還包括:
[0011]所述第二處理節(jié)點(diǎn)生成工作隊(duì)列元素WQE,并將所述WQE放入所述第二內(nèi)存節(jié)點(diǎn)RDMA連接的隊(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í)指示的存儲(chǔ)單元中的數(shù)據(jù)拷貝至所述第一存儲(chǔ)標(biāo)識(shí)指示的存儲(chǔ)單元中;
[0012]則所述第二處理節(jié)點(diǎn)封裝RDMA拷貝操作消息,包括:從所述QP的發(fā)送隊(duì)列SQ中取出所述WQE,根據(jù)所述WQE,封裝所述RDMA拷貝操作消息。
[0013]結(jié)合第一方面或第一方面或以上任一種可能的實(shí)現(xiàn)方式,在第一方面第二種可能的實(shí)現(xiàn)方式中,所述第一節(jié)點(diǎn)標(biāo)識(shí)包括:
[0014]保護(hù)域編號(hào),用于標(biāo)識(shí)所述第一內(nèi)存節(jié)點(diǎn)所在的保護(hù)域;
[0015]第一內(nèi)存節(jié)點(diǎn)標(biāo)識(shí),用于在所述保護(hù)域中標(biāo)識(shí)所述第一內(nèi)存節(jié)點(diǎn)。
[0016]結(jié)合第一方面或第一方面或以上任一種可能的實(shí)現(xiàn)方式,在第一方面第三種可能的實(shí)現(xiàn)方式中,所述第一內(nèi)存節(jié)點(diǎn)和所述第二內(nèi)存節(jié)點(diǎn)在同一保護(hù)域,所述第一節(jié)點(diǎn)標(biāo)識(shí)包括:
[0017]第一內(nèi)存節(jié)點(diǎn)標(biāo)識(shí),用于在所述同一保護(hù)域中標(biāo)識(shí)所述第一內(nèi)存節(jié)點(diǎn)。
[0018]結(jié)合第一方面或第一方面或以上任一種可能的實(shí)現(xiàn)方式,在第一方面第四種可能的實(shí)現(xiàn)方式中,所述第一存儲(chǔ)標(biāo)識(shí)包括:
[0019]第一虛擬地址,用于標(biāo)識(shí)所述第一內(nèi)存節(jié)點(diǎn)的用于接收所述RDMA寫操作的存儲(chǔ)單元的在所述第一處理節(jié)點(diǎn)的虛擬地址;和
[0020]第一遠(yuǎn)端內(nèi)存鑰匙,用于表征訪問所述第一內(nèi)存節(jié)點(diǎn)的存儲(chǔ)設(shè)備的權(quán)限,以及結(jié)合所述第一虛擬地址確定所述第一內(nèi)存節(jié)點(diǎn)的用于接收RDMA寫操作的存儲(chǔ)單元的物理地址。
[0021]結(jié)合第一方面或第一方面或以上任一種可能的實(shí)現(xiàn)方式,在第一方面第五種可能的實(shí)現(xiàn)方式中,所述第二存儲(chǔ)標(biāo)識(shí)包括:
[0022]第二虛擬地址,用于標(biāo)識(shí)所述第二內(nèi)存節(jié)點(diǎn)的用于RDMA寫操作的數(shù)據(jù)在所述第二處理節(jié)點(diǎn)中的虛擬地址;
[0023]數(shù)據(jù)長(zhǎng)度,用于標(biāo)識(shí)所述第二內(nèi)存節(jié)點(diǎn)的用于RDMA寫操作的數(shù)據(jù)的長(zhǎng)度;和
[0024]第二遠(yuǎn)端內(nèi)存鑰匙,用于表征訪問所述第二內(nèi)存節(jié)點(diǎn)存儲(chǔ)設(shè)備的權(quán)限,以及結(jié)合所述第二虛擬地址確定所述用于RDMA寫操作的數(shù)據(jù)在所述第二內(nèi)存節(jié)點(diǎn)中的物理地址。
[0025]結(jié)合第一方面或第一方面或以上任一種可能的實(shí)現(xiàn)方式,在第一方面第六種可能的實(shí)現(xiàn)方式中,所述第二處理節(jié)點(diǎn)將所述RDMA拷貝操作消息發(fā)送給所述第二內(nèi)存節(jié)點(diǎn)之后,進(jìn)一步包括:接收所述第二內(nèi)存節(jié)點(diǎn)的RDMA應(yīng)答消息,所述RDMA應(yīng)答消息用于指示所述RDMA寫操作已完成。
[0026]第二方面,本發(fā)明實(shí)施例提供了一種遠(yuǎn)程直接數(shù)據(jù)存取RDMA數(shù)據(jù)拷貝的設(shè)備,包括:處理器、存儲(chǔ)器、總線和通信接口 ;
[0027]所述存儲(chǔ)器用于存儲(chǔ)計(jì)算機(jī)執(zhí)行指令,所述處理器與所述存儲(chǔ)器通過所述總線連接,當(dāng)所述計(jì)算設(shè)備運(yùn)行時(shí),所述處理器執(zhí)行所述存儲(chǔ)器存儲(chǔ)的所述計(jì)算機(jī)執(zhí)行指令,以使所述遠(yuǎn)程直接數(shù)據(jù)存取RDMA數(shù)據(jù)拷貝的設(shè)備執(zhí)行第一方面或第一方面任一種可能的實(shí)現(xiàn)方式的方法。
[0028]第三方面,本發(fā)明實(shí)施例提供了一種遠(yuǎn)程直接數(shù)據(jù)存取RDMA數(shù)據(jù)拷貝的方法,第一計(jì)算設(shè)備包括第一處理節(jié)點(diǎn)和第一內(nèi)存節(jié)點(diǎn),第二計(jì)算設(shè)備包括第二處理節(jié)點(diǎn)和第二內(nèi)存節(jié)點(diǎn),包括:
[0029]所述第二內(nèi)存節(jié)點(diǎn)接收來(lái)自所述第二處理節(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ù);
[0030]第二內(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í);
[0031]第二內(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ǔ)單元。
[0032]結(jié)合第三方面,在第一種可能的實(shí)現(xiàn)方式中,所述第一節(jié)點(diǎn)標(biāo)識(shí)包括:
[0033]保護(hù)域編號(hào),用于標(biāo)識(shí)所述第一內(nèi)存節(jié)點(diǎn)所在的保護(hù)域;
[0034]第一內(nèi)存節(jié)點(diǎn)標(biāo)識(shí),用于在所述保護(hù)域中標(biāo)識(shí)所述第一內(nèi)存節(jié)點(diǎn)。
[0035]結(jié)合第三方面或第三方面或以上任一種可能的實(shí)現(xiàn)方式,在第三方面第二種可能的實(shí)現(xiàn)方式中,所述第一內(nèi)存節(jié)點(diǎn)和所述第二內(nèi)存節(jié)點(diǎn)在同一保護(hù)域,所述第一節(jié)點(diǎn)標(biāo)識(shí)包括:
[0036]第一內(nèi)存節(jié)點(diǎn)標(biāo)識(shí),用于在所述同一保護(hù)域中標(biāo)識(shí)所述第一內(nèi)存節(jié)點(diǎn)。
[0037]結(jié)合第三方面或第三方面或以上任一種可能的實(shí)現(xiàn)方式,在第三方面第三種可能的實(shí)現(xiàn)方式中,所述第一存儲(chǔ)標(biāo)識(shí)包括:
[0038]第一虛擬地址,用于標(biāo)識(shí)所述第一內(nèi)存節(jié)點(diǎn)的用于接收所述RDMA寫操作的存儲(chǔ)單元的在所述第一處理節(jié)點(diǎn)的虛擬地址;和
[0039]第一遠(yuǎn)端內(nèi)存鑰匙,用于表征訪問所述第一內(nèi)存節(jié)點(diǎn)的存儲(chǔ)設(shè)備的權(quán)限,以及結(jié)合所述第一虛擬地址確定所述第一內(nèi)存節(jié)點(diǎn)的用于接收RDMA寫操作的存儲(chǔ)單元的物理地址。
[0040]結(jié)合第三方面或第三方面或以上任一種可能的實(shí)現(xiàn)方式,在第三方面第四種可能的實(shí)現(xiàn)方式中,所述第二存儲(chǔ)標(biāo)識(shí)包括:
[0041]第二虛擬地址,用于標(biāo)識(shí)所述第二內(nèi)存節(jié)點(diǎn)的用于RDMA寫操作的數(shù)據(jù)在所述第二處理節(jié)點(diǎn)中的虛擬地址;
[0042]數(shù)據(jù)長(zhǎng)度,用于標(biāo)識(shí)所述第二內(nèi)存節(jié)點(diǎn)的用于RDMA寫操作的數(shù)據(jù)的長(zhǎng)度;和
[0043]第二遠(yuǎn)端內(nèi)存鑰匙,用于表征訪問所述第二內(nèi)存節(jié)點(diǎn)存儲(chǔ)設(shè)備的權(quán)限,以及結(jié)合所述第二虛擬地址確定所述用于RDMA寫操作的數(shù)據(jù)在所述第二內(nèi)存節(jié)點(diǎn)中的物理地址。
[0044]結(jié)合第三方面或第三方面或以上任一種可能的實(shí)現(xiàn)方式,在第三方面第五種可能的實(shí)現(xiàn)方式中,還包括:接收所述第一內(nèi)存節(jié)點(diǎn)的RDMA應(yīng)答消息,所述RDMA應(yīng)答消息用于指不RDMA與操作已完成。
[0045]結(jié)合第三方面或第三方面或以上任一種可能的實(shí)現(xiàn)方式,在第三方面第六種可能的實(shí)現(xiàn)方式中,還包括,將所述RDMA應(yīng)答消息發(fā)送給所述第二處理節(jié)點(diǎn)。
[0046]第四方面,本發(fā)明實(shí)施例提供了一種遠(yuǎn)程直接數(shù)據(jù)存取RDMA數(shù)據(jù)拷貝的設(shè)備,包括:處理器、存儲(chǔ)器、總線和通信接口 ;
[0047]所述存儲(chǔ)器用于存儲(chǔ)計(jì)算機(jī)執(zhí)行指令,所述處理器與所述存儲(chǔ)器通過所述總線連接,當(dāng)所述計(jì)算設(shè)備運(yùn)行時(shí),所述處理器執(zhí)行所述存儲(chǔ)器存儲(chǔ)的所述計(jì)算機(jī)執(zhí)行指令,以使所述遠(yuǎn)程直接數(shù)據(jù)存取RDMA數(shù)據(jù)拷貝的設(shè)備執(zhí)行第三方面或第三方面任一種可能的實(shí)現(xiàn)方式的方法。
[0048]第五方面,本發(fā)明實(shí)施例提供了一種遠(yuǎn)程直接數(shù)據(jù)存取RDMA數(shù)據(jù)拷貝的方法,第一計(jì)算設(shè)備包括第一處理節(jié)點(diǎn)和第一內(nèi)存節(jié)點(diǎn),包括:
[0049]第二計(jì)算設(shè)備向所述第一處理節(jié)點(diǎn)發(fā)送RDMA內(nèi)存請(qǐng)求消息,所述RDMA內(nèi)存請(qǐng)求消息用于向所述第一處理節(jié)點(diǎn)請(qǐng)求用于RDMA寫操作的目標(biāo)內(nèi)存;
[0050]所述第二計(jì)算設(shè)備接收來(lái)自所述第一處理節(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ǔ)單元;
[0051]所述第二計(jì)算設(shè)備封裝RDMA寫操作消息,所述RDMA寫操作消息中攜帶用于所述RDMA寫操作的數(shù)據(jù)和所述第一存儲(chǔ)標(biāo)識(shí);
[0052]所述第二計(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ǔ)單
J L ο
[0053]結(jié)合第五方面,在第一種可能的實(shí)現(xiàn)方式中,還包括:
[0054]所述第二計(jì)算設(shè)備生成工作隊(duì)列元素WQE,并將所述WQE放入與所述第一處理節(jié)點(diǎn)建立的RDMA連接的隊(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í)指示的存儲(chǔ)單元中的數(shù)據(jù)拷貝至所述第一存儲(chǔ)標(biāo)識(shí)指示的存儲(chǔ)單元中,所述第二存儲(chǔ)標(biāo)識(shí)用于指示所述第二存儲(chǔ)設(shè)備用于所述RDMA寫操作的數(shù)據(jù);
[0055]則所述第二計(jì)算設(shè)備封裝RDMA寫操作消息包括:所述第二計(jì)算設(shè)備從所述QP的發(fā)送隊(duì)列SQ中取出所述WQE,根據(jù)所述WQE,取出所述第二存儲(chǔ)標(biāo)識(shí)指示的所述數(shù)據(jù),根據(jù)所述第一存儲(chǔ)標(biāo)識(shí),封裝所述RDMA寫操作消息。
[0056]結(jié)合第五方面或第五方面或以上任一種可能的實(shí)現(xiàn)方式,在第五方面第二種可能的實(shí)現(xiàn)方式中,所述第一節(jié)點(diǎn)標(biāo)識(shí)包括:
[0057]保護(hù)域編號(hào),用于標(biāo)識(shí)所述第一內(nèi)存節(jié)點(diǎn)所在的保護(hù)域;
[0058]第一內(nèi)存節(jié)點(diǎn)標(biāo)識(shí),用于在所述保護(hù)域中標(biāo)識(shí)所述第一內(nèi)存節(jié)點(diǎn)。
[0059]結(jié)合第五方面或第五方面或以上任一種可能的實(shí)現(xiàn)方式,在第五方面第三種可能的實(shí)現(xiàn)方式中,所述第一內(nèi)存節(jié)點(diǎn)和所述第二計(jì)算設(shè)備在同一保護(hù)域,所述第一節(jié)點(diǎn)標(biāo)識(shí)包括:
[0060]第一內(nèi)存節(jié)點(diǎn)標(biāo)識(shí),用于在所述同一保護(hù)域中標(biāo)識(shí)所述第一內(nèi)存節(jié)點(diǎn)。
[0061]結(jié)合第五方面或第五方面或以上任一種可能的實(shí)現(xiàn)方式,在第五方面第四種可能的實(shí)現(xiàn)方式中,所述第一存儲(chǔ)標(biāo)識(shí)包括:
[0062]第一虛擬地址,用于標(biāo)識(shí)所述第一內(nèi)存節(jié)點(diǎn)的用于接收所述RDMA寫操作的存儲(chǔ)單元的在所述第一處理節(jié)點(diǎn)的虛擬地址;和
[0063]第一遠(yuǎn)端內(nèi)存鑰匙,用于表征訪問所述第一內(nèi)存節(jié)點(diǎn)的存儲(chǔ)設(shè)備的權(quán)限,以及結(jié)合所述第一虛擬地址確定所述第一內(nèi)存節(jié)點(diǎn)的用于接收RDMA寫操作的存儲(chǔ)單元的物理地址。
[0064]結(jié)合第五方面或第五方面或以上任一種可能的實(shí)現(xiàn)方式,在第五方面第五種可能的實(shí)現(xiàn)方式中,所述第二計(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寫操作已完成。
[0065]第六方面,本發(fā)明實(shí)施例提供了一種遠(yuǎn)程直接數(shù)據(jù)存取RDMA數(shù)據(jù)拷貝的設(shè)備,其特征在于,包括:處理器、存儲(chǔ)器、總線和通信接口 ;
[0066]所述存儲(chǔ)器用于存儲(chǔ)計(jì)算機(jī)執(zhí)行指令,所述處理器與所述存儲(chǔ)器通過所述總線連接,當(dāng)所述計(jì)算設(shè)備運(yùn)行時(shí),所述處理器執(zhí)行所述存儲(chǔ)器存儲(chǔ)的所述計(jì)算機(jī)執(zhí)行指令,以使所述遠(yuǎn)程直接數(shù)據(jù)存取RDMA數(shù)據(jù)拷貝的設(shè)備執(zhí)行第五方面或第五方面任一種可能的實(shí)現(xiàn)方式的方法。
[0067]第七方面,本發(fā)明實(shí)施例提供了一種遠(yuǎn)程直接數(shù)據(jù)存取RDMA數(shù)據(jù)拷貝的裝置,其特征在于,第一計(jì)算設(shè)備包括第一處理節(jié)點(diǎn)和第一內(nèi)存節(jié)點(diǎn),第二計(jì)算設(shè)備包括所述裝置與第二內(nèi)存節(jié)點(diǎn),包括:
[0068]發(fā)送單元,所述第一處理節(jié)點(diǎn)發(fā)送RDMA內(nèi)存請(qǐng)求消息,所述RDMA內(nèi)存請(qǐng)求消息用于向所述第一處理節(jié)點(diǎn)請(qǐng)求用于RDMA寫操作的目標(biāo)內(nèi)存;
[0069]接收單元,用于接收來(lái)自所述第一處理節(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ǔ)單元;
[0070]封裝單元,用于封裝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)存地址;
[0071]所述發(fā)送單元,還用于將所述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ǔ)單元。
[0072]結(jié)合第七方面,在第一種可能的實(shí)現(xiàn)方式中,還包括生成單元,生成工作隊(duì)列元素WQE,并將所述WQE放入所述第二內(nèi)存節(jié)點(diǎn)RDMA連接的隊(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í)指示的存儲(chǔ)單元中的數(shù)據(jù)拷貝至所述第一存儲(chǔ)標(biāo)識(shí)指示的存儲(chǔ)單元中;
[0073]則所述封裝單元用于封裝RDMA拷貝操作消息,包括:所述封裝單元從所述QP的發(fā)送隊(duì)列SQ中取出所述WQE,根據(jù)所述WQE,封裝所述RDMA拷貝操作消息。
[0074]結(jié)合第七方面或第七方面或以上任一種可能的實(shí)現(xiàn)方式,在第七方面第二種可能的實(shí)現(xiàn)方式中,所述第一節(jié)點(diǎn)標(biāo)識(shí)包括:
[0075]保護(hù)域編號(hào),用于標(biāo)識(shí)所述第一內(nèi)存節(jié)點(diǎn)所在的保護(hù)域;
[0076]第一內(nèi)存節(jié)點(diǎn)標(biāo)識(shí),用于在所述保護(hù)域中標(biāo)識(shí)所述第一內(nèi)存節(jié)點(diǎn)。
[0077]結(jié)合第七方面或第七方面或以上任一種可能的實(shí)現(xiàn)方式,在第七方面第三種可能的實(shí)現(xiàn)方式中,所述第一內(nèi)存節(jié)點(diǎn)和所述第二內(nèi)存節(jié)點(diǎn)在同一保護(hù)域,所述第一節(jié)點(diǎn)標(biāo)識(shí)包括:
[0078]第一內(nèi)存節(jié)點(diǎn)標(biāo)識(shí),用于在所述同一保護(hù)域中標(biāo)識(shí)所述第一內(nèi)存節(jié)點(diǎn)。
[0079]結(jié)合第七方面或第七方面或以上任一種可能的實(shí)現(xiàn)方式,在第七方面第四種可能的實(shí)現(xiàn)方式中,所述第一存儲(chǔ)標(biāo)識(shí)包括:
[0080]第一虛擬地址,用于標(biāo)識(shí)所述第一內(nèi)存節(jié)點(diǎn)的用于接收所述RDMA寫操作的存儲(chǔ)單元的在所述第一處理節(jié)點(diǎn)的虛擬地址;和
[0081]第一遠(yuǎn)端內(nèi)存鑰匙,用于表征訪問所述第一內(nèi)存節(jié)點(diǎn)的存儲(chǔ)設(shè)備的權(quán)限,以及結(jié)合所述第一虛擬地址確定所述第一內(nèi)存節(jié)點(diǎn)的用于接收RDMA寫操作的存儲(chǔ)單元的物理地址。
[0082]結(jié)合第七方面或第七方面或以上任一種可能的實(shí)現(xiàn)方式,在第七方面第五種可能的實(shí)現(xiàn)方式中,所述第二存儲(chǔ)標(biāo)識(shí)包括:
[0083]第二虛擬地址,用于標(biāo)識(shí)所述第二內(nèi)存節(jié)點(diǎn)的用于RDMA寫操作的數(shù)據(jù)在所述第二處理節(jié)點(diǎn)中的虛擬地址;
[0084]數(shù)據(jù)長(zhǎng)度,用于標(biāo)識(shí)所述第二內(nèi)存節(jié)點(diǎn)的用于RDMA寫操作的數(shù)據(jù)的長(zhǎng)度;和
[0085]第二遠(yuǎn)端內(nèi)存鑰匙,用于表征訪問所述第二內(nèi)存節(jié)點(diǎn)存儲(chǔ)設(shè)備的權(quán)限,以及結(jié)合所述第二虛擬地址確定所述用于RDMA寫操作的數(shù)據(jù)在所述第二內(nèi)存節(jié)點(diǎn)中的物理地址。
[0086]結(jié)合第七方面或第七方面或以上任一種可能的實(shí)現(xiàn)方式,在第七方面第六種可能的實(shí)現(xiàn)方式中,所述接收單元還用于:接收所述第二內(nèi)存節(jié)點(diǎn)的RDMA應(yīng)答消息,所述RDMA應(yīng)答消息用于指示所述RDMA寫操作已完成。
[0087]第八方面,本發(fā)明實(shí)施例提供了一種遠(yuǎn)程直接數(shù)據(jù)存取RDMA數(shù)據(jù)拷貝的裝置,其特征在于,第一計(jì)算設(shè)備包括第一處理節(jié)點(diǎn)和第一內(nèi)存節(jié)點(diǎn),第二計(jì)算設(shè)備包括第二處理節(jié)點(diǎn)和所述裝置,包括:
[0088]接收單元,用于接收來(lái)自所述第二處理節(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ù);
[0089]封裝單元,用于根據(jù)所述RDMA拷貝操作消息,取出所述第二存儲(chǔ)標(biāo)識(shí)指示的所述數(shù)據(jù),根據(jù)所述第一存儲(chǔ)標(biāo)識(shí),封裝RDMA寫操作消息,所述RDMA寫操作消息中包含所述RDMA寫操作的數(shù)據(jù)和所述第一存儲(chǔ)標(biāo)識(shí);
[0090]發(fā)送單元,用于將所述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ǔ)單元。
[0091]結(jié)合第八方面,在第一種可能的實(shí)現(xiàn)方式中,所述第一節(jié)點(diǎn)標(biāo)識(shí)包括:
[0092]保護(hù)域編號(hào),用于標(biāo)識(shí)所述第一內(nèi)存節(jié)點(diǎn)所在的保護(hù)域;
[0093]第一內(nèi)存節(jié)點(diǎn)標(biāo)識(shí),用于在所述保護(hù)域中標(biāo)識(shí)所述第一內(nèi)存節(jié)點(diǎn)。
[0094]結(jié)合第八方面或第八方面或以上任一種可能的實(shí)現(xiàn)方式,在第八方面第二種可能的實(shí)現(xiàn)方式中,所述第一內(nèi)存節(jié)點(diǎn)和所述第二內(nèi)存節(jié)點(diǎn)在同一保護(hù)域,所述第一節(jié)點(diǎn)標(biāo)識(shí)包括:
[0095]第一內(nèi)存節(jié)點(diǎn)標(biāo)識(shí),用于在所述同一保護(hù)域中標(biāo)識(shí)所述第一內(nèi)存節(jié)點(diǎn)。
[0096]結(jié)合第八方面或第八方面或以上任一種可能的實(shí)現(xiàn)方式,在第八方面第三種可能的實(shí)現(xiàn)方式中,所述第一存儲(chǔ)標(biāo)識(shí)包括:
[0097]第一虛擬地址,用于標(biāo)識(shí)所述第一內(nèi)存節(jié)點(diǎn)的用于接收所述RDMA寫操作的存儲(chǔ)單元的在所述第一處理節(jié)點(diǎn)的虛擬地址;和
[0098]第一遠(yuǎn)端內(nèi)存鑰匙,用于表征訪問所述第一內(nèi)存節(jié)點(diǎn)的存儲(chǔ)設(shè)備的權(quán)限,以及結(jié)合所述第一虛擬地址確定所述第一內(nèi)存節(jié)點(diǎn)