用于处理远程直接内存访问请求的方法和装置制造方法及图纸

技术编号:15448101 阅读:170 留言:0更新日期:2017-05-29 22:51
本申请公开了用于处理远程直接内存访问请求的方法和装置。所述方法的一具体实施方式包括:响应于用户空间发送批量远程直接内存访问RDMA请求,在RDMA网卡中为所述批量RDMA请求分配链路;将所述批量RDMA请求中的每个RDMA请求封装成供RDMA网卡的链路识别的描述符;将所封装成的多个描述符的描述符物理地址构造成链表;将所述链表的起始物理地址下发至所分配的链路,以使用所分配的链路依次读取所述链表中的描述符物理地址并对描述符物理地址对应的描述符中所封装的RDMA请求进行处理。该实施方式实现了RDMA请求的批量处理。

Method and apparatus for processing remote direct memory access requests

A method and apparatus for processing remote direct memory access requests are disclosed. Including a specific embodiment of the method: in response to user space send bulk remote direct memory access RDMA request for the batch RDMA request distribution link in the RDMA card; the RDMA RDMA request in each batch request package for RDMA card into a link identification descriptor; descriptor physical address structure the descriptors encapsulated into the list; starting the physical address of the linked list issued to link the assigned, to link the allocated in order to read the list of descriptors of the physical address and processes the package descriptor physical addresses corresponding descriptors in the RDMA request. This implementation implements batch processing of RDMA requests.

【技术实现步骤摘要】
用于处理远程直接内存访问请求的方法和装置
本申请涉及计算机
,具体涉及网络
,尤其涉及用于处理远程直接内存访问请求的方法和装置。
技术介绍
RDMA(RemoteDirectMemoryAccess,远程直接内存访问),是为了解决网络传输中服务器端数据处理的延迟而产生的。RDMA与传统以太网的区别主要在于,数据由适配器从源端内存直接读出,经传输介质到达远端后被适配器直接写入目的区域。在使用RDMA技术时,发起者只需指定远端内存读写地址,开启传输并等待传输完成即可。整个传输过程几乎无需两端操作系统参与,无需复杂的协议层处理,亦无需多余数据拷贝,因此RDMA的延时能比传统以太网快一个数量级。此外,RDMA的传输介质一般是光纤,能提供极高的通信带宽,以满足业务巨大的吞吐量需求。然而,在使用RDMA技术时,在保证小数据包微秒级延时的前提下,如何增大小数据包的传输QPS从而提高光纤链路的带宽利用率以及改善应用业务的处理能力和实时性,是一个亟需解决的技术问题。
技术实现思路
本申请的目的在于提出一种改进的用于处理远程直接内存访问请求的方法和装置,来解决以上
技术介绍
部分提到的技术问题。第一方面,本申请提供了一种用于处理远程直接内存访问请求的方法,所述方法包括:响应于用户空间发送批量远程直接内存访问RDMA请求,在RDMA网卡中为所述批量RDMA请求分配链路;将所述批量RDMA请求中的每个RDMA请求封装成供RDMA网卡的链路识别的描述符;将所封装成的多个描述符的描述符物理地址构造成链表;将所述链表的起始物理地址下发至所分配的链路,以使用所分配的链路依次读取所述链表中的描述符物理地址并对描述符物理地址对应的描述符中所封装的RDMA请求进行处理。在一些实施例中,所述将所封装成的多个描述符的描述符物理地址构造成链表,包括:对所述多个描述符的描述符物理地址进行分组,得到至少一个分组;将每个分组作为链表的节点,构造成链表。在一些实施例中,所述对所述多个描述符的描述符物理地址进行分组,得到至少一个分组,包括:按照预先为每个分组设置的描述符物理地址数量,对所述多个描述符的描述符物理地址进行分组,得到至少一个分组。在一些实施例中,所述将所封装成的多个描述符的描述符物理地址构造成链表,还包括:在所述链表的每个节点中记录下一个节点中描述符物理地址的数量;以及所述方法还包括:将所述链表中第一个节点中描述符物理地址的数量下发给所分配的链路。在一些实施例中,所述方法还包括:检测所述RDMA网卡对批量RDMA请求的处理是否超时;向所述用户空间返回用于指示正常或超时的指示信息。在一些实施例中,所述方法还包括:检测所述RDMA网卡是否接收到目标节点或转发节点在发生传输异常时发回的否定回答NACK包;当接收到NACK包时,解析所述NACK包以确定异常类型,并向所述用户空间返回用于指示异常类型的指示信息。在一些实施例中,所述方法还包括:判断所述异常类型是否为预设异常类型;若所述异常类型为预设异常类型,使用所述RDMA网卡进行数据重传。第二方面,本申请提供了一种用于处理远程直接内存访问请求的装置,所述装置包括:分配单元,用于响应于用户空间发送批量远程直接内存访问RDMA请求,在RDMA网卡中为所述批量RDMA请求分配链路;封装单元,用于将所述批量RDMA请求中的每个RDMA请求封装成供RDMA网卡的链路识别的描述符;构造单元,用于将所封装成的多个描述符的描述符物理地址构造成链表;第一下发单元,用于将所述链表的起始物理地址下发至所分配的链路,以使用所分配的链路依次读取所述链表中的描述符物理地址并对描述符物理地址对应的描述符中所封装的RDMA请求进行处理。在一些实施例中,所述构造单元包括:分组子单元,用于对所述多个描述符的描述符物理地址进行分组,得到至少一个分组;构造子单元,用于将每个分组作为链表的节点,构造成链表。在一些实施例中,所述分组子单元进一步用于:按照预先为每个分组设置的描述符物理地址数量,对所述多个描述符的描述符物理地址进行分组,得到至少一个分组。在一些实施例中,所述构造单元还包括:记录单元,用于在所述链表的每个节点中记录下一个节点中描述符物理地址的数量;以及所述装置还包括:第二下发单元,用于将所述链表中第一个节点中描述符物理地址的数量下发给所分配的链路。在一些实施例中,所述装置还包括:超时检测单元,用于检测所述RDMA网卡对批量RDMA请求的处理是否超时;返回单元,用于向所述用户空间返回用于指示正常或超时的指示信息。在一些实施例中,所述装置还包括:包检测单元,用于检测所述RDMA网卡是否接收到目标节点或转发节点在发生传输异常时发回的否定回答NACK包;解析单元,用于当接收到NACK包时,解析所述NACK包以确定异常类型,并向所述用户空间返回用于指示异常类型的指示信息。在一些实施例中,所述装置还包括:判断单元,用于判断所述异常类型是否为预设异常类型;重传单元,用于若所述异常类型为预设异常类型,使用所述RDMA网卡进行数据重传。本申请提供的用于处理远程直接内存访问请求的方法和装置,在RDMA网卡中为批量RDMA请求分配链路,并将批量RDMA请求中多个RDMA请求所封装的描述符对应的物理地址构造成链表,并将该链表的起始物理地址下发给RDMA网卡,从而使RDMA网卡使用所分配的链路依次读取链表中各个节点以对上述多个RDMA请求进行处理,从而实现了RDMA请求的批量处理,在针对远程主机中离散的等长内存区段的多个RDMA请求进行处理时,处理器可以一次性批量处理,避免多次处理对处理器资源的消耗,从而提高处理效率。附图说明通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:图1是本申请可以应用于其中的示例性系统架构图;图2是根据本申请的用于处理远程直接内存访问请求的方法的一个实施例的流程图;图3是图2实施例中所处理的批量RDMA请求的一个示例;图4a、4b、4c分别是根据图2实施例及可选实现方式中所构造的链表的示意图;图5是根据本申请的用于处理远程直接内存访问请求的方法的又一个实施例的流程图;图6是根据本申请的用于处理远程直接内存访问请求的装置的一个实施例的结构示意图;图7是适于用来实现本申请实施例的终端设备或服务器的计算机系统的结构示意图。具体实施方式下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关专利技术,而非对该专利技术的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与有关专利技术相关的部分。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。图1示出了可以应用本申请的用于处理远程直接内存访问请求的方法或装置的实施例的示例性系统架构100。如图1所示,系统架构100可以包括主机101和主机105。其中主机101包括CPU(CentralProcessingUnit,中央处理器)102、存储器103和RDMA网卡104,主机105包括CPU106、RDMA网卡107和存储器108。此外,存储器103包括用户空间1031和内核空间1032,存储器108包括用户空间108本文档来自技高网...
用于处理远程直接内存访问请求的方法和装置

【技术保护点】
一种用于处理远程直接内存访问请求的方法,其特征在于,包括:响应于用户空间发送批量远程直接内存访问RDMA请求,在RDMA网卡中为所述批量RDMA请求分配链路;将所述批量RDMA请求中的每个RDMA请求封装成供RDMA网卡的链路识别的描述符;将所封装成的多个描述符的描述符物理地址构造成链表;将所述链表的起始物理地址下发至所分配的链路,以使用所分配的链路依次读取所述链表中的描述符物理地址并对描述符物理地址对应的描述符中所封装的RDMA请求进行处理。

【技术特征摘要】
1.一种用于处理远程直接内存访问请求的方法,其特征在于,包括:响应于用户空间发送批量远程直接内存访问RDMA请求,在RDMA网卡中为所述批量RDMA请求分配链路;将所述批量RDMA请求中的每个RDMA请求封装成供RDMA网卡的链路识别的描述符;将所封装成的多个描述符的描述符物理地址构造成链表;将所述链表的起始物理地址下发至所分配的链路,以使用所分配的链路依次读取所述链表中的描述符物理地址并对描述符物理地址对应的描述符中所封装的RDMA请求进行处理。2.根据权利要求1所述的方法,其特征在于,所述将所封装成的多个描述符的描述符物理地址构造成链表,包括:对所述多个描述符的描述符物理地址进行分组,得到至少一个分组;将每个分组作为链表的节点,构造成链表。3.根据权利要求2所述的方法,其特征在于,所述对所述多个描述符的描述符物理地址进行分组,得到至少一个分组,包括:按照预先为每个分组设置的描述符物理地址数量,对所述多个描述符的描述符物理地址进行分组,得到至少一个分组。4.根据权利要求2所述的方法,其特征在于,所述将所封装成的多个描述符的描述符物理地址构造成链表,还包括:在所述链表的每个节点中记录下一个节点中描述符物理地址的数量;以及所述方法还包括:将所述链表中第一个节点中描述符物理地址的数量下发给所分配的链路。5.根据权利要求1-4之一所述的方法,其特征在于,所述方法还包括:检测所述RDMA网卡对批量RDMA请求的处理是否超时;向所述用户空间返回用于指示正常或超时的指示信息。6.根据权利要求5所述的方法,其特征在于,所述方法还包括:检测所述RDMA网卡是否接收到目标节点或转发节点在发生传输异常时发回的否定回答NACK包;当接收到NACK包时,解析所述NACK包以确定异常类型,并向所述用户空间返回用于指示异常类型的指示信息。7.根据权利要求6所述的方法,其特征在于,所述方法还包括:判断所述异常类型是否为预设异常类型;若所述异常类型为预设异常类型,使用所述RDMA网卡进行数据重传。8.一种用于处理远程直接内存访问请求的装置,其特征...

【专利技术属性】
技术研发人员:缪天翔龚小章欧阳剑王勇漆维
申请(专利权)人:北京百度网讯科技有限公司
类型:发明
国别省市:北京,11

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

1