本申請涉及通信,尤其涉及一種基于socket接口的通信方法和系統(tǒng)。
背景技術(shù):
1、大規(guī)模數(shù)據(jù)分析和事務(wù)處理、高頻交易系統(tǒng)、實(shí)時(shí)數(shù)據(jù)同步和備份、大型并行計(jì)算任務(wù)和人工智能模型訓(xùn)練、以及云計(jì)算和數(shù)據(jù)中心內(nèi)部網(wǎng)絡(luò)優(yōu)化場景,對主機(jī)間通信性能有著嚴(yán)格的要求。
2、用戶態(tài)遠(yuǎn)程直接內(nèi)存訪問?(remote?direct?memory?access,rdma)verbs?是上述高性能網(wǎng)絡(luò)通信場景下的第一選擇,其允許用戶態(tài)進(jìn)程繞過內(nèi)核和中央處理器(centralprocessing?unit,簡稱為?cpu)直接在網(wǎng)絡(luò)硬件上操作數(shù)據(jù),能顯著減少延遲和cpu負(fù)載,提供更高的數(shù)據(jù)吞吐量和更低的數(shù)據(jù)傳輸延遲。然而基于?verbs開發(fā)rdma應(yīng)用要求開發(fā)者和運(yùn)維團(tuán)隊(duì)不僅需要具備專業(yè)的網(wǎng)絡(luò)和硬件知識,還需要持續(xù)投入時(shí)間和資源進(jìn)行技術(shù)更新和系統(tǒng)優(yōu)化,從而確保系統(tǒng)的高效運(yùn)行和穩(wěn)定性。
3、共享內(nèi)存通信(shared?memory?communication,smc)是?ibm?提出的一種高性能網(wǎng)絡(luò)協(xié)議,無需應(yīng)用任何修改即可將tcp通信透明替換成rdma通信,解決了上述基于?verbs接口編程過于復(fù)雜的問題,同時(shí)將維護(hù)成本限制在內(nèi)核內(nèi),極大地降低了開發(fā)者和維護(hù)團(tuán)隊(duì)的成本。然而,為了完全兼容標(biāo)準(zhǔn)的?tcp?應(yīng)用,smc?在實(shí)現(xiàn)上引入了用戶態(tài)和內(nèi)核之間切換的指令開銷和拷貝開銷。針對該技術(shù)問題,相關(guān)技術(shù)尚未提出有效地解決方案。
技術(shù)實(shí)現(xiàn)思路
1、本申請實(shí)施例提供了一種基于socket接口的通信方法和系統(tǒng),以解決上述一個(gè)或多個(gè)技術(shù)問題。
2、第一方面,本申請實(shí)施例提供了一種基于socket接口的通信方法,包括:
3、在本地節(jié)點(diǎn)與遠(yuǎn)端節(jié)點(diǎn)支持共享內(nèi)存通信smc協(xié)議且目標(biāo)鏈路可達(dá)的情況下,將用戶態(tài)申請的本地內(nèi)存地址注冊到內(nèi)核中,得到本地地址注冊信息,其中,所述目標(biāo)鏈路與所述smc的底層硬件設(shè)備類型對應(yīng);
4、將所述本地地址注冊信息發(fā)送至所述遠(yuǎn)端節(jié)點(diǎn),并接收所述遠(yuǎn)端節(jié)點(diǎn)發(fā)送的遠(yuǎn)端地址注冊信息;
5、在所述用戶態(tài)將目標(biāo)數(shù)據(jù)寫入所述本地內(nèi)存地址的空間后,通過直接內(nèi)存訪問方式從所述用戶態(tài)讀取所述目標(biāo)數(shù)據(jù)并將所述目標(biāo)數(shù)據(jù)傳輸至所述遠(yuǎn)端地址注冊信息對應(yīng)的遠(yuǎn)端內(nèi)存地址的空間中。
6、第二方面,本申請實(shí)施例提供了一種socket接口,包括:
7、第一子接口,用于在本地節(jié)點(diǎn)與遠(yuǎn)端節(jié)點(diǎn)支持共享內(nèi)存通信smc協(xié)議且目標(biāo)鏈路可達(dá)的情況下,將用戶態(tài)申請的本地內(nèi)存地址注冊到內(nèi)核中,得到本地地址注冊信息,其中,所述目標(biāo)鏈路與所述smc的底層硬件設(shè)備類型對應(yīng),將所述本地地址注冊信息發(fā)送至所述遠(yuǎn)端節(jié)點(diǎn),并接收所述遠(yuǎn)端節(jié)點(diǎn)發(fā)送的遠(yuǎn)端地址注冊信息;
8、第二子接口,用于在所述用戶態(tài)將目標(biāo)數(shù)據(jù)寫入所述本地內(nèi)存地址的空間后,通過直接內(nèi)存訪問方式從所述用戶態(tài)讀取所述目標(biāo)數(shù)據(jù)并將所述目標(biāo)數(shù)據(jù)傳輸至所述遠(yuǎn)端地址注冊信息對應(yīng)的遠(yuǎn)端內(nèi)存地址的空間中。
9、第三方面,本實(shí)施例提供了一種基于socket接口的通信系統(tǒng),包括:
10、本地節(jié)點(diǎn),用于在本地節(jié)點(diǎn)與遠(yuǎn)端節(jié)點(diǎn)支持共享內(nèi)存通信smc協(xié)議且目標(biāo)鏈路可達(dá)的情況下,將用戶態(tài)申請的本地內(nèi)存地址注冊到內(nèi)核中,得到本地地址注冊信息,其中,所述目標(biāo)鏈路與所述smc的底層硬件設(shè)備類型對應(yīng);將所述本地地址注冊信息發(fā)送至所述遠(yuǎn)端節(jié)點(diǎn),并接收所述遠(yuǎn)端節(jié)點(diǎn)發(fā)送的遠(yuǎn)端地址注冊信息;在所述用戶態(tài)將目標(biāo)數(shù)據(jù)寫入所述本地內(nèi)存地址的空間后,通過直接內(nèi)存訪問方式從所述用戶態(tài)讀取所述目標(biāo)數(shù)據(jù)并將所述目標(biāo)數(shù)據(jù)傳輸至所述遠(yuǎn)端地址注冊信息對應(yīng)的遠(yuǎn)端內(nèi)存地址的空間中;
11、遠(yuǎn)端節(jié)點(diǎn),用于確定遠(yuǎn)端地址注冊信息,并向所述本地節(jié)點(diǎn)發(fā)送所述遠(yuǎn)端地址注冊信息?,以及在接收到所述目標(biāo)數(shù)據(jù)后,將所述目標(biāo)數(shù)據(jù)寫入到所述遠(yuǎn)端地址注冊信息對應(yīng)的遠(yuǎn)端內(nèi)存地址的空間中。
12、第四方面,本申請實(shí)施例提供了一種電子設(shè)備,包括存儲器、處理器及存儲在存儲器上的計(jì)算機(jī)程序,所述處理器在執(zhí)行所述計(jì)算機(jī)程序時(shí)實(shí)現(xiàn)上述任一項(xiàng)所述的方法。
13、第五方面,本申請實(shí)施例提供了一種計(jì)算機(jī)可讀存儲介質(zhì),所述計(jì)算機(jī)可讀存儲介質(zhì)內(nèi)存儲有計(jì)算機(jī)程序,所述計(jì)算機(jī)程序被處理器執(zhí)行時(shí)實(shí)現(xiàn)上述任一項(xiàng)所述的方法。
14、第六方面,本申請實(shí)施例提供了一種計(jì)算機(jī)程序產(chǎn)品,包括計(jì)算機(jī)指令,所示計(jì)算機(jī)指令被處理器執(zhí)行時(shí)實(shí)現(xiàn)上述任一項(xiàng)所述的方法。
15、與相關(guān)技術(shù)相比,本申請具有如下優(yōu)點(diǎn):
16、本申請實(shí)施例對socket接口進(jìn)行了擴(kuò)展,擴(kuò)展后的socket接口在本地節(jié)點(diǎn)與遠(yuǎn)端節(jié)點(diǎn)支持共享內(nèi)存通信smc協(xié)議且目標(biāo)鏈路可達(dá)的情況下,將用戶態(tài)申請的本地內(nèi)存地址注冊到內(nèi)核中,得到本地地址注冊信息,其中,該目標(biāo)鏈路與該smc的底層硬件設(shè)備類型對應(yīng);將該本地地址注冊信息發(fā)送至該遠(yuǎn)端節(jié)點(diǎn),并獲取該遠(yuǎn)端節(jié)點(diǎn)的遠(yuǎn)端地址注冊信息;在該用戶態(tài)將目標(biāo)數(shù)據(jù)寫入該本地內(nèi)存地址的空間后,通過直接內(nèi)存訪問方式從該用戶態(tài)讀取該目標(biāo)數(shù)據(jù)并將該目標(biāo)數(shù)據(jù)傳輸至該遠(yuǎn)端地址注冊信息對應(yīng)的遠(yuǎn)端內(nèi)存地址的空間中。也就是說,本申請實(shí)施例擴(kuò)展后的socket接口可以允許應(yīng)用使用用戶態(tài)內(nèi)存區(qū)域直接進(jìn)行數(shù)據(jù)通信,而無需cpu在通信數(shù)據(jù)路徑上進(jìn)行任何操作,解決了相關(guān)技術(shù)中基于smc協(xié)議通信時(shí),需要cpu參與內(nèi)核態(tài)和用戶態(tài)之間內(nèi)存拷貝和語義轉(zhuǎn)換,導(dǎo)致通信性能降低的技術(shù)問題,進(jìn)而達(dá)到了提高通信性能的技術(shù)效果。
17、上述說明僅是本申請技術(shù)方案的概述?,為了能夠更清楚了解本申請的技術(shù)手段,可依照說明書的內(nèi)容予以實(shí)施,并且為了讓本申請的上述和其他目的、特征和優(yōu)點(diǎn)能夠更明顯易懂,以下特舉本申請的具體實(shí)施方式。
1.一種基于socket接口的通信方法,包括:
2.根據(jù)權(quán)利要求1所述的方法,其中,通過直接內(nèi)存訪問方式從所述用戶態(tài)讀取所述目標(biāo)數(shù)據(jù)并將所述目標(biāo)數(shù)據(jù)傳輸至所述遠(yuǎn)端地址注冊信息對應(yīng)的遠(yuǎn)端內(nèi)存地址的空間中包括:
3.根據(jù)權(quán)利要求2所述的方法,其中,將所述目標(biāo)數(shù)據(jù)映射到所述內(nèi)核中,得到數(shù)據(jù)映射關(guān)系包括:
4.根據(jù)權(quán)利要求1所述的方法,其中,將所述本地地址注冊信息發(fā)送至所述遠(yuǎn)端節(jié)點(diǎn)包括:
5.根據(jù)權(quán)利要求1所述的方法,其中,所述目標(biāo)數(shù)據(jù)包括:應(yīng)用數(shù)據(jù)、用戶態(tài)自定義控制數(shù)據(jù),其中,所述用戶態(tài)自定義控制數(shù)據(jù)包括以下至少之一:遠(yuǎn)端地址注冊信息、寫入偏移信息、寫入長度信息、讀取偏移信息、讀取長度信息。
6.根據(jù)權(quán)利要求1至5任一項(xiàng)所述的方法,其中,所述底層硬件設(shè)備包括內(nèi)部共享內(nèi)存ism設(shè)備或者遠(yuǎn)程直接內(nèi)存訪問rdma設(shè)備。
7.根據(jù)權(quán)利要求6所述的方法,其中,在所述底層硬件設(shè)備為所述ism設(shè)備時(shí),所述目標(biāo)鏈路為直接內(nèi)存訪問dma鏈路,在所述底層硬件設(shè)備為所述rdma設(shè)備時(shí),所述目標(biāo)鏈路為rdma鏈路。
8.一種socket接口,包括:
9.根據(jù)權(quán)利要求8所述的socket接口,其中,所述目標(biāo)數(shù)據(jù)包括:應(yīng)用數(shù)據(jù)、用戶態(tài)自定義控制數(shù)據(jù),其中,所述用戶態(tài)自定義控制數(shù)據(jù)包括以下至少之一:遠(yuǎn)端地址注冊信息、寫入偏移信息、寫入長度信息、讀取偏移信息、讀取長度信息。
10.一種基于socket接口的通信系統(tǒng),包括:
11.根據(jù)權(quán)利要求10所述的系統(tǒng),其中,所述底層硬件設(shè)備包括內(nèi)部共享內(nèi)存ism設(shè)備或者遠(yuǎn)程直接內(nèi)存訪問rdma設(shè)備,在所述底層硬件設(shè)備為所述ism設(shè)備時(shí),所述目標(biāo)鏈路為直接內(nèi)存訪問dma鏈路,在所述底層硬件設(shè)備為所述rdma設(shè)備時(shí),所述目標(biāo)鏈路為rdma鏈路。
12.一種電子設(shè)備,包括存儲器、處理器及存儲在存儲器上的計(jì)算機(jī)程序,所述處理器在執(zhí)行所述計(jì)算機(jī)程序時(shí)實(shí)現(xiàn)權(quán)利要求1-?7中任一項(xiàng)所述的方法。
13.一種計(jì)算機(jī)可讀存儲介質(zhì),所述計(jì)算機(jī)可讀存儲介質(zhì)內(nèi)存儲有計(jì)算機(jī)程序,所述計(jì)算機(jī)程序被處理器執(zhí)行時(shí)實(shí)現(xiàn)權(quán)利要求1-?7中任一項(xiàng)所述的方法。
14.一種計(jì)算機(jī)程序產(chǎn)品,包括計(jì)算機(jī)指令,所示計(jì)算機(jī)指令被處理器執(zhí)行時(shí)實(shí)現(xiàn)權(quán)利要求1-?7中任一項(xiàng)所述的方法。