[發(fā)明專利]一種Linux操作系統(tǒng)下基于RDMA的數(shù)據(jù)傳輸方法及裝置有效
| 申請(qǐng)?zhí)枺?/td> | 202110255647.9 | 申請(qǐng)日: | 2021-03-09 |
| 公開(公告)號(hào): | CN112948318B | 公開(公告)日: | 2022-12-06 |
| 發(fā)明(設(shè)計(jì))人: | 宋江波;周耀輝;吳軍疆 | 申請(qǐng)(專利權(quán))人: | 西安奧卡云數(shù)據(jù)科技有限公司 |
| 主分類號(hào): | G06F15/173 | 分類號(hào): | G06F15/173;G06F9/50;G06F12/02 |
| 代理公司: | 西安維賽恩專利代理事務(wù)所(普通合伙) 61257 | 代理人: | 李明全 |
| 地址: | 710000 陜西省西安市西咸*** | 國省代碼: | 陜西;61 |
| 權(quán)利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 一種 linux 操作系統(tǒng) 基于 rdma 數(shù)據(jù)傳輸 方法 裝置 | ||
本發(fā)明公開了一種Linux操作系統(tǒng)下基于RDMA的數(shù)據(jù)傳輸方法及裝置,根據(jù)待數(shù)據(jù)傳輸?shù)倪M(jìn)程,確定進(jìn)程對(duì)應(yīng)的用戶態(tài)內(nèi)存空間地址;將用戶態(tài)內(nèi)存空間地址與內(nèi)核態(tài)內(nèi)存空間地址均映射到同一物理內(nèi)存空間地址中;啟動(dòng)進(jìn)程將待傳輸數(shù)據(jù)寫入到用戶態(tài)內(nèi)存空間地址,生成數(shù)據(jù)包并通過網(wǎng)卡發(fā)送至遠(yuǎn)端服務(wù)器;構(gòu)建本地事件,獲取寫入待傳輸數(shù)據(jù)的第一應(yīng)用程序?qū)?yīng)的第一通信標(biāo)識(shí)碼;向第一應(yīng)用程序發(fā)送數(shù)據(jù)傳輸完成信息;本發(fā)明不再需要將數(shù)據(jù)復(fù)制到內(nèi)核態(tài),可以直接進(jìn)行數(shù)據(jù)的接收和發(fā)送,減少數(shù)據(jù)復(fù)制,進(jìn)而減少數(shù)據(jù)傳輸時(shí)間,增加傳輸效率。
技術(shù)領(lǐng)域
本發(fā)明屬于通信技術(shù)領(lǐng)域,尤其涉及一種Linux操作系統(tǒng)下基于RDMA的數(shù)據(jù)傳輸方法及裝置。
背景技術(shù)
遠(yuǎn)程直接內(nèi)存訪問技術(shù)(Remote Direct MemoryAccess,RDMA)是一種直接存儲(chǔ)器訪問技術(shù),它將數(shù)據(jù)直接從一臺(tái)計(jì)算機(jī)的內(nèi)存?zhèn)鬏數(shù)搅硪慌_(tái)計(jì)算機(jī),通過使網(wǎng)絡(luò)適配器直接在應(yīng)用程序內(nèi)存間傳輸數(shù)據(jù),不再需要在應(yīng)用程序內(nèi)存與操作系統(tǒng)緩沖區(qū)之間復(fù)制數(shù)據(jù)。這種傳輸不需要中央處理器、CPU緩存或上下文交換參與,并且傳輸可與其他系統(tǒng)操作并行。當(dāng)應(yīng)用程序執(zhí)行RDMA讀取或?qū)懭胝?qǐng)求時(shí),應(yīng)用程序數(shù)據(jù)直接傳輸?shù)骄W(wǎng)絡(luò),從而減少延遲并實(shí)現(xiàn)快速的消息傳輸。
當(dāng)RDMA技術(shù)在Linux操作系統(tǒng)中運(yùn)行時(shí),由于Linux內(nèi)核態(tài)內(nèi)存地址和用戶態(tài)內(nèi)存地址是相互獨(dú)立的,所以,發(fā)送數(shù)據(jù)時(shí)需要進(jìn)行數(shù)據(jù)拷貝(內(nèi)核態(tài)內(nèi)存地址與用戶態(tài)內(nèi)存地址之間互相進(jìn)行數(shù)據(jù)拷貝)。例如,當(dāng)需要傳輸某個(gè)數(shù)據(jù)時(shí),需要用戶態(tài)準(zhǔn)備好用戶態(tài)內(nèi)存空間,內(nèi)核態(tài)將數(shù)據(jù)從內(nèi)核態(tài)內(nèi)存空間復(fù)制到用戶態(tài)內(nèi)存空間,最后用戶態(tài)再將數(shù)據(jù)傳輸出去。
在進(jìn)行數(shù)據(jù)拷貝的過程中,既要進(jìn)行內(nèi)存地址的轉(zhuǎn)換,還要進(jìn)行數(shù)據(jù)的復(fù)制,所以,會(huì)導(dǎo)致數(shù)據(jù)傳輸時(shí)間增加,降低傳輸效率。
發(fā)明內(nèi)容
本發(fā)明的目的是提供一種Linux操作系統(tǒng)下基于RDMA的數(shù)據(jù)傳輸方法及裝置,減少數(shù)據(jù)傳輸時(shí)間,增加傳輸效率。
本發(fā)明采用以下技術(shù)方案:一種Linux操作系統(tǒng)下基于RDMA的數(shù)據(jù)傳輸方法,包括以下步驟:
根據(jù)待數(shù)據(jù)傳輸?shù)倪M(jìn)程,確定進(jìn)程對(duì)應(yīng)的用戶態(tài)內(nèi)存空間地址;
將用戶態(tài)內(nèi)存空間地址與內(nèi)核態(tài)內(nèi)存空間地址均映射到同一物理內(nèi)存空間地址中;
啟動(dòng)進(jìn)程將待傳輸數(shù)據(jù)寫入到用戶態(tài)內(nèi)存空間地址,生成數(shù)據(jù)包并通過網(wǎng)卡發(fā)送至遠(yuǎn)端服務(wù)器;
構(gòu)建本地事件,獲取寫入待傳輸數(shù)據(jù)的第一應(yīng)用程序?qū)?yīng)的第一通信標(biāo)識(shí)碼;
向第一應(yīng)用程序發(fā)送數(shù)據(jù)傳輸完成信息。
進(jìn)一步地,將用戶態(tài)內(nèi)存空間地址與內(nèi)核態(tài)內(nèi)存空間地址均映射到同一物理內(nèi)存空間地址中包括:
將用戶態(tài)內(nèi)存空間地址映射到物理內(nèi)存空間地址,且將內(nèi)核態(tài)內(nèi)存空間地址映射到同一物理內(nèi)存空間地址;
或者,將用戶態(tài)內(nèi)存空間地址映射到內(nèi)核態(tài)內(nèi)存空間地址,再將內(nèi)核態(tài)內(nèi)存空間地址映射到物理內(nèi)存地址;
或者,將內(nèi)核態(tài)內(nèi)存空間地址映射到用戶態(tài)內(nèi)存空間地址,在將用戶態(tài)內(nèi)存空間地址映射到物理內(nèi)存地址。
進(jìn)一步地,該方法還包括:
當(dāng)內(nèi)核態(tài)內(nèi)存空間地址接收到數(shù)據(jù)時(shí),獲取該數(shù)據(jù)在內(nèi)核態(tài)內(nèi)存空間地址中的偏移位和大小位;
將偏移位和大小位發(fā)送至用戶態(tài)的應(yīng)用程序;
用戶態(tài)的應(yīng)用程序根據(jù)偏移位和大小位在用戶態(tài)內(nèi)存空間地址中讀取數(shù)據(jù);
在內(nèi)核態(tài)內(nèi)存空間地址中刪除數(shù)據(jù)。
進(jìn)一步地,確定進(jìn)程對(duì)應(yīng)的用戶態(tài)內(nèi)存空間地址還包括:
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于西安奧卡云數(shù)據(jù)科技有限公司,未經(jīng)西安奧卡云數(shù)據(jù)科技有限公司許可,擅自商用是侵權(quán)行為。如果您想購買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請(qǐng)聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202110255647.9/2.html,轉(zhuǎn)載請(qǐng)聲明來源鉆瓜專利網(wǎng)。
- 同類專利
- 專利分類
G06F 電數(shù)字?jǐn)?shù)據(jù)處理
G06F15-00 通用數(shù)字計(jì)算機(jī)
G06F15-02 .通過鍵盤輸入的手動(dòng)操作,以及應(yīng)用機(jī)內(nèi)程序的計(jì)算,例如,袖珍計(jì)算器
G06F15-04 .在引入被處理的數(shù)據(jù)的同時(shí),進(jìn)行編制程序的,例如,在同一記錄載體上
G06F15-08 .應(yīng)用插接板編制程序的
G06F15-16 .兩個(gè)或多個(gè)數(shù)字計(jì)算機(jī)的組合,其中每臺(tái)至少具有一個(gè)運(yùn)算器、一個(gè)程序器及一個(gè)寄存器,例如,用于數(shù)個(gè)程序的同時(shí)處理
G06F15-18 .其中,根據(jù)計(jì)算機(jī)本身在一個(gè)完整的運(yùn)行期間內(nèi)所取得的經(jīng)驗(yàn)來改變程序的;學(xué)習(xí)機(jī)器
- LINUX內(nèi)核動(dòng)態(tài)加載方法
- 一種Linux嵌入式系統(tǒng)的安全啟動(dòng)方法
- 一種加快嵌入式Linux系統(tǒng)啟動(dòng)的方法
- Linux文件系統(tǒng)的多點(diǎn)備份和實(shí)時(shí)保護(hù)方法
- 基于硬件的Linux軟件開發(fā)系統(tǒng)及其構(gòu)建方法
- 將VxWorks任務(wù)移植到Linux的方法及裝置
- 一種Linux內(nèi)核接管socket鏈接的方法和裝置
- 一種Linux系統(tǒng)的備份和還原方法
- 一種基于Linux系統(tǒng)盤的寫過濾系統(tǒng)和方法
- 一種基于Linux系統(tǒng)盤的熱插拔方法和系統(tǒng)
- 將RDMA語義映射到高速存儲(chǔ)
- 一種基于RDMA的數(shù)據(jù)傳輸方法及RDMA網(wǎng)卡
- RDMA資源泄漏檢測和報(bào)告
- 一種數(shù)據(jù)訪問方法以及相關(guān)裝置
- 內(nèi)存訪問方法和裝置
- 一種虛擬硬盤的映射方法、設(shè)備和云計(jì)算平臺(tái)
- 基于流量負(fù)載預(yù)測的RDMA緩沖區(qū)動(dòng)態(tài)分配方法
- 基于迭代逼近的RDMA緩沖區(qū)動(dòng)態(tài)分配方法
- 面向分布式文件系統(tǒng)的RDMA通信地址交換方法
- 基于InfiniBand的通信方法、設(shè)備及存儲(chǔ)介質(zhì)





