一种基于RDMA注册内存块的数据传输方法和装置制造方法及图纸

技术编号:15690508 阅读:79 留言:0更新日期:2017-06-24 02:57
本申请公开了一种基于RDMA注册内存块的数据传输方法和装置,该方法包括申请大块内存,并将所述大块内存分成多个具有预设大小的内存块;将所述内存块注册到网卡的发送端和接收端,其中注册到接收端的第一内存块的个数不小于注册到发送端的第二内存块的个数;获取可用的第二内存块,并装入待发送数据;利用网卡将待发送数据发送到所述第一内存块中。上述基于RDMA注册内存块的数据传输方法和装置,能够减少RDMA对内存资源的占用,降低RDMA因计算操作注册内存而占用的系统资源,从而提高数据传输的稳定性,并提高数据传输效率。

Data transmission method and device based on RDMA registered memory block

The invention discloses a RDMA based register memory block data transmission method and device, the method includes applying chunk of memory, and the large memory is divided into a plurality of memory blocks with preset size; the memory block registration card to the sending end and receiving end, which is registered to the receiving end of the first memory block number is not less than second the number of registered to the sending end of the memory block; get the second block of memory available, and load the data to be transmitted; use the card will be sent to send data to the first memory block. Based on the above RDMA registered memory block data transmission method and device can reduce the RDMA of memory resource, reduce the RDMA for computing registered memory and system resources occupied, so as to improve the stability of data transmission, and improve the efficiency of data transmission.

【技术实现步骤摘要】
一种基于RDMA注册内存块的数据传输方法和装置
本专利技术属于高性能通信
,特别是涉及一种基于RDMA注册内存块的数据传输方法和装置。
技术介绍
目前,普通网卡集成了支持硬件校验和的功能,并对软件进行了改进,从而减少了发送数据的拷贝量,但无法减少接收数据的拷贝量,而这部分拷贝量要占用CPU的大量计算周期。普通网卡的工作过程如下:先把收到的数据包缓存到系统上,数据包经过处理后,相应数据被分配到一个TCP连接;然后,接收系统再把主动提供的TCP数据同相应的应用程序联系起来,并将数据从系统缓冲区拷贝到目标存储地址。这样,制约网络速率的因素就出现了:应用通信强度不断增加和主机CPU在内核与应用存储器间处理数据的任务繁重使系统要不断追加主机CPU资源,配置高效的软件并增强系统负荷管理,问题的关键是要消除主机CPU中不必要的频繁数据传输,减少系统间的信息延迟。RDMA是通过网络把资料直接传入提前注册好的计算机存储区,将数据从一个系统快速移动到远程系统存储器中,而不对操作系统造成任何影响,这样就不需要用到多少计算机的处理功能。它消除了外部存储器复制和文本交换操作,因而能腾出总线空间和CPU周期用于改进应用系统性能。而目前通用的做法需由系统先对传入的信息进行分析与标记,然后再存储到正确的区域。在ceph集群中使用RDMA技术的实现一般有两种选择:其一是基于开源代码accelio类库的实现,不过由于accelio类库代码复杂度较高,且accelio类库本身存在一定的问题,在这些问题未被解决的情况下,不适合应用于生产环境;其二是基于VPIverbs接口自建,实现安全、可控的底层通信架构。使用第二种方式实现RDMA技术在ceph集群中的应用,是目前RDMA技术在存储领域应用的主要方式,其核心之一在于设计基于RDMA高效、稳定、可控的注册内存块管理机制。为了使RDMA技术在分布式ceph集群中得到应用,需要封装一套通信接口供上层应用调用,开源代码accelio类库实现了基于RDMA技术的通信模型,并实现了应用层的XIO接口,但是accelio类库本身存在一些稳定性的问题,并不能在分布式ceph集群中实现产品化应用。为了实现RDMA技术在分布式ceph集群中的产品化,可以考虑基于Verbs接口自建实现基于RDMA的高性能底层通信模块,而自建的核心之一在于设计一种高效、稳定、可控的注册内存块管理机制。
技术实现思路
为解决上述问题,本专利技术提供了一种基于RDMA注册内存块的数据传输方法和装置,能够减少RDMA对内存资源的占用,降低RDMA因计算操作注册内存而占用的系统资源,从而提高数据传输的稳定性,并提高数据传输效率。本专利技术提供的一种基于RDMA注册内存块的数据传输方法,包括:申请大块内存,并将所述大块内存分成多个具有预设大小的内存块;将所述内存块注册到网卡的发送端和接收端,其中注册到接收端的第一内存块的个数不小于注册到发送端的第二内存块的个数;获取可用的第二内存块,并装入待发送数据;利用网卡将待发送数据发送到所述第一内存块中。优选的,在上述基于RDMA注册内存块的数据传输方法中,所述将所述内存块注册到网卡的发送端和接收端为:利用VPIverbs接口ibv_reg_mr将内存块注册到Infiniband网卡的发送端和接收端。优选的,在上述基于RDMA注册内存块的数据传输方法中,所述将所述大块内存分成多个具有预设大小的内存块为:将所述大块内存分成多个大小为8K的内存块。优选的,在上述基于RDMA注册内存块的数据传输方法中,所述注册到接收端的第一内存块的个数不小于注册到发送端的第二内存块的个数为:注册到接收端的第一内存块的个数大于注册到发送端的第二内存块的个数。优选的,在上述基于RDMA注册内存块的数据传输方法中,在所述利用网卡将待发送数据发送到所述第一内存块中之后,还包括:所述接收端通知所述发送端数据传输完成,并将发送端占用的内存块置为可用状态。本专利技术提供的一种基于RDMA注册内存块的数据传输装置,包括:分块单元,用于申请大块内存,并将所述大块内存分成多个具有预设大小的内存块;注册单元,用于将所述内存块注册到网卡的发送端和接收端,其中注册到接收端的第一内存块的个数不小于注册到发送端的第二内存块的个数;装入单元,用于获取可用的第二内存块,并装入待发送数据;发送单元,用于利用网卡将待发送数据发送到所述第一内存块中。优选的,在上述基于RDMA注册内存块的数据传输装置中,所述注册单元具体用于利用VPIverbs接口ibv_reg_mr将内存块注册到Infiniband网卡的发送端和接收端。优选的,在上述基于RDMA注册内存块的数据传输装置中,所述分块单元具体用于将所述大块内存分成多个大小为8K的内存块。优选的,在上述基于RDMA注册内存块的数据传输装置中,所述注册单元具体用于将所述内存块注册到网卡的发送端和接收端,注册到接收端的第一内存块的个数大于注册到发送端的第二内存块的个数。优选的,在上述基于RDMA注册内存块的数据传输装置中,还包括:通知单元,用于利用所述接收端通知所述发送端数据传输完成,并将发送端占用的内存块置为可用状态。通过上述描述可知,本专利技术提供的上述基于RDMA注册内存块的数据传输方法和装置,由于该方法包括:申请大块内存,并将所述大块内存分成多个具有预设大小的内存块;将所述内存块注册到网卡的发送端和接收端,其中注册到接收端的第一内存块的个数不小于注册到发送端的第二内存块的个数;获取可用的第二内存块,并装入待发送数据;利用网卡将待发送数据发送到所述第一内存块中,因此能够减少RDMA对内存资源的占用,降低RDMA因计算操作注册内存而占用的系统资源,从而提高数据传输的稳定性,并提高数据传输效率。附图说明为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。图1为本申请实施例提供的第一种基于RDMA注册内存块的数据传输方法的示意图;图2为通信内存块的管理机制的原理示意图;图3为本申请实施例提供的第一种基于RDMA注册内存块的数据传输装置的示意图。具体实施方式本专利技术的核心思想在于提供一种基于RDMA注册内存块的数据传输方法和装置,能够减少RDMA对内存资源的占用,降低RDMA因计算操作注册内存而占用的系统资源,从而提高数据传输的稳定性,并提高数据传输效率。下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。本申请实施例提供的第一种基于RDMA注册内存块的数据传输方法如图1所示,图1为本申请实施例提供的第一种基于RDMA注册内存块的数据传输方法的示意图,该方法包括如下步骤:S1:申请大块内存,并将所述大块内存分成多个具有预设大小的内存块;需要说明的是,可以将要申请的大块内存打散成8K一个的内存块(chunk)。S2:将所述内存本文档来自技高网
...
一种基于RDMA注册内存块的数据传输方法和装置

【技术保护点】
一种基于RDMA注册内存块的数据传输方法,其特征在于,包括:申请大块内存,并将所述大块内存分成多个具有预设大小的内存块;将所述内存块注册到网卡的发送端和接收端,其中注册到接收端的第一内存块的个数不小于注册到发送端的第二内存块的个数;获取可用的第二内存块,并装入待发送数据;利用网卡将待发送数据发送到所述第一内存块中。

【技术特征摘要】
1.一种基于RDMA注册内存块的数据传输方法,其特征在于,包括:申请大块内存,并将所述大块内存分成多个具有预设大小的内存块;将所述内存块注册到网卡的发送端和接收端,其中注册到接收端的第一内存块的个数不小于注册到发送端的第二内存块的个数;获取可用的第二内存块,并装入待发送数据;利用网卡将待发送数据发送到所述第一内存块中。2.根据权利要求1所述的基于RDMA注册内存块的数据传输方法,其特征在于,所述将所述内存块注册到网卡的发送端和接收端为:利用VPIverbs接口ibv_reg_mr将内存块注册到Infiniband网卡的发送端和接收端。3.根据权利要求1所述的基于RDMA注册内存块的数据传输方法,其特征在于,所述将所述大块内存分成多个具有预设大小的内存块为:将所述大块内存分成多个大小为8K的内存块。4.根据权利要求1所述的基于RDMA注册内存块的数据传输方法,其特征在于,所述注册到接收端的第一内存块的个数不小于注册到发送端的第二内存块的个数为:注册到接收端的第一内存块的个数大于注册到发送端的第二内存块的个数。5.根据权利要求1-4任一项所述的基于RDMA注册内存块的数据传输方法,其特征在于,在所述利用网卡将待发送数据发送到所述第一内存块中之后,还包括:所述接收端通知所述发送端数据传输完成,并将发送端占...

【专利技术属性】
技术研发人员:尚付飞刘杰
申请(专利权)人:郑州云海信息技术有限公司
类型:发明
国别省市:河南,41

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1