[发明专利]一种Linux操作系统下基于RDMA的数据传输方法及装置有效
申请号: | 202110255647.9 | 申请日: | 2021-03-09 |
公开(公告)号: | CN112948318B | 公开(公告)日: | 2022-12-06 |
发明(设计)人: | 宋江波;周耀辉;吴军疆 | 申请(专利权)人: | 西安奥卡云数据科技有限公司 |
主分类号: | G06F15/173 | 分类号: | G06F15/173;G06F9/50;G06F12/02 |
代理公司: | 西安维赛恩专利代理事务所(普通合伙) 61257 | 代理人: | 李明全 |
地址: | 710000 陕西省西安市西咸*** | 国省代码: | 陕西;61 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 linux 操作系统 基于 rdma 数据传输 方法 装置 | ||
本发明公开了一种Linux操作系统下基于RDMA的数据传输方法及装置,根据待数据传输的进程,确定进程对应的用户态内存空间地址;将用户态内存空间地址与内核态内存空间地址均映射到同一物理内存空间地址中;启动进程将待传输数据写入到用户态内存空间地址,生成数据包并通过网卡发送至远端服务器;构建本地事件,获取写入待传输数据的第一应用程序对应的第一通信标识码;向第一应用程序发送数据传输完成信息;本发明不再需要将数据复制到内核态,可以直接进行数据的接收和发送,减少数据复制,进而减少数据传输时间,增加传输效率。
技术领域
本发明属于通信技术领域,尤其涉及一种Linux操作系统下基于RDMA的数据传输方法及装置。
背景技术
远程直接内存访问技术(Remote Direct MemoryAccess,RDMA)是一种直接存储器访问技术,它将数据直接从一台计算机的内存传输到另一台计算机,通过使网络适配器直接在应用程序内存间传输数据,不再需要在应用程序内存与操作系统缓冲区之间复制数据。这种传输不需要中央处理器、CPU缓存或上下文交换参与,并且传输可与其他系统操作并行。当应用程序执行RDMA读取或写入请求时,应用程序数据直接传输到网络,从而减少延迟并实现快速的消息传输。
当RDMA技术在Linux操作系统中运行时,由于Linux内核态内存地址和用户态内存地址是相互独立的,所以,发送数据时需要进行数据拷贝(内核态内存地址与用户态内存地址之间互相进行数据拷贝)。例如,当需要传输某个数据时,需要用户态准备好用户态内存空间,内核态将数据从内核态内存空间复制到用户态内存空间,最后用户态再将数据传输出去。
在进行数据拷贝的过程中,既要进行内存地址的转换,还要进行数据的复制,所以,会导致数据传输时间增加,降低传输效率。
发明内容
本发明的目的是提供一种Linux操作系统下基于RDMA的数据传输方法及装置,减少数据传输时间,增加传输效率。
本发明采用以下技术方案:一种Linux操作系统下基于RDMA的数据传输方法,包括以下步骤:
根据待数据传输的进程,确定进程对应的用户态内存空间地址;
将用户态内存空间地址与内核态内存空间地址均映射到同一物理内存空间地址中;
启动进程将待传输数据写入到用户态内存空间地址,生成数据包并通过网卡发送至远端服务器;
构建本地事件,获取写入待传输数据的第一应用程序对应的第一通信标识码;
向第一应用程序发送数据传输完成信息。
进一步地,将用户态内存空间地址与内核态内存空间地址均映射到同一物理内存空间地址中包括:
将用户态内存空间地址映射到物理内存空间地址,且将内核态内存空间地址映射到同一物理内存空间地址;
或者,将用户态内存空间地址映射到内核态内存空间地址,再将内核态内存空间地址映射到物理内存地址;
或者,将内核态内存空间地址映射到用户态内存空间地址,在将用户态内存空间地址映射到物理内存地址。
进一步地,该方法还包括:
当内核态内存空间地址接收到数据时,获取该数据在内核态内存空间地址中的偏移位和大小位;
将偏移位和大小位发送至用户态的应用程序;
用户态的应用程序根据偏移位和大小位在用户态内存空间地址中读取数据;
在内核态内存空间地址中删除数据。
进一步地,确定进程对应的用户态内存空间地址还包括:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于西安奥卡云数据科技有限公司,未经西安奥卡云数据科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110255647.9/2.html,转载请声明来源钻瓜专利网。