一种RDMA的数据处理方法及相关装置转让专利

申请号 : CN201910629093.7

文献号 : CN110399329B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 张雪庆

申请人 : 苏州浪潮智能科技有限公司

摘要 :

本申请公开了一种RDMA的数据处理方法,包括:RDMA主机端服务器执行端口初始化操作,得到多个数据处理端口,并对每个数据处理端口创建处理队列;根据接收到的待处理数据的信息确定处理队列,将所述待处理数据发送至所述处理队列;按照预设周期判断处理队列是否存在待处理数据;当处理队列存在待处理数据时,将所述待处理数据发送至所述处理队列对应的数据处理端口,以便通过所述数据处理端口对所述待处理数据进行处理。通过数据处理端口和处理队列实现轮询处理,降低主机端的处理压力,提高数据处理效率。本申请还公开了一种RDMA的数据处理系统、服务器以及计算机可读存储介质,具有以上有益效果。

权利要求 :

1.一种RDMA的数据处理方法,其特征在于,包括:RDMA主机端服务器创建多个数据处理端口;所述RDMA主机端服务器的NVMF发起者模块对所述多个数据处理端口进行驱动注册,以便完成端口初始化操作;对每个数据处理端口创建处理队列;

根据接收到的待处理数据的信息确定处理队列,将所述待处理数据发送至所述处理队列;

按照预设周期判断处理队列是否存在待处理数据;

当处理队列存在待处理数据时,将所述待处理数据发送至所述处理队列对应的数据处理端口,以便通过所述数据处理端口对所述待处理数据进行处理;

其中,根据接收到的待处理数据的信息确定处理队列,将所述待处理数据发送至所述处理队列,包括:接收到所述待处理数据;

根据所述待处理数据的类型和所述待处理数据的传输信息确定处理队列;

将所述待处理数据发送至所述处理队列。

2.根据权利要求1所述的数据处理方法,其特征在于,当处理队列存在待处理数据时,将所述待处理数据发送至所述处理队列对应的数据处理端口,以便通过所述数据处理端口对所述待处理数据进行处理;

当处理队列存在待处理数据时,将所述待处理数据进行打包处理,得到待发送数据;

将所述待发送数据发送至发送端口,以便通过所述发送端口将所述待发送数据进行发送处理。

3.一种RDMA的数据处理系统,其特征在于,包括:端口初始化模块,用于创建多个数据处理端口;所述RDMA主机端服务器的NVMF发起者模块对所述多个数据处理端口进行驱动注册,以便完成端口初始化操作;对每个数据处理端口创建处理队列;

处理队列排队模块,用于根据接收到的待处理数据的信息确定处理队列,将所述待处理数据发送至所述处理队列;

队列任务判断模块,用于按照预设周期判断处理队列是否存在待处理数据;

数据处理模块,用于当处理队列存在待处理数据时,将所述待处理数据发送至所述处理队列对应的数据处理端口,以便通过所述数据处理端口对所述待处理数据进行处理;

其中,所述处理队列排队模块,包括:

数据接收单元,用于接收到所述待处理数据;

队列确定单元,用于根据所述待处理数据的类型和所述待处理数据的传输信息确定处理队列;

数据发送单元,用于将所述待处理数据发送至所述处理队列。

4.根据权利要求3所述的数据处理系统,其特征在于,所述数据处理模块,包括:打包处理单元,用于当处理队列存在待处理数据时,将所述待处理数据进行打包处理,得到待发送数据;

数据发送单元,用于将所述待发送数据发送至发送端口,以便通过所述发送端口将所述待发送数据进行发送处理。

5.一种服务器,其特征在于,包括:

存储器,用于存储计算机程序;

处理器,用于执行所述计算机程序时实现如权利要求1至2任一项所述的数据处理方法的步骤。

6.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至2任一项所述的数据处理方法的步骤。

说明书 :

一种RDMA的数据处理方法及相关装置

技术领域

[0001] 本申请涉及计算机技术领域,特别涉及一种RDMA的数据处理方法、数据处理系统、服务器以及计算机可读存储介质。

背景技术

[0002] 随着信息技术的不断发展,目前在服务器技术领域出现了一种共享内存技术,即RDMA(Remote Direct Memory Access)技术,也就是远程直接数据存取。其主要目的是为了解决网络传输中服务器端数据处理的延迟。RDMA通过网络把资料直接传入计算机的存储区,将数据从一个系统快速移动到远程系统存储器中,而不对操作系统造成任何影响,如此就不需要用到多少计算机的处理功能。消除了外部存储器复制和上下文切换的开销,因而能释放内存带宽和CPU周期用于改进应用系统性能。
[0003] 但是,现有技术中,数据处理要经过内核协议栈处理再拷贝到用户态进程,增加了数据复制的时间和空间。并且,内核栈调试不方便进行操作。
[0004] 因此,如何提高RDMA技术中的数据处理的效率是本领域技术人员关注的重点问题。

发明内容

[0005] 本申请的目的是提供一种RDMA的数据处理方法、数据处理系统、服务器以及计算机可读存储介质,通过数据处理端口和处理队列实现轮询处理,降低主机端的处理压力,提高数据处理效率。
[0006] 为解决上述技术问题,本申请提供一种RDMA的数据处理方法,包括:
[0007] RDMA主机端服务器执行端口初始化操作,得到多个数据处理端口,并对每个数据处理端口创建处理队列;
[0008] 根据接收到的待处理数据的信息确定处理队列,将所述待处理数据发送至所述处理队列;
[0009] 按照预设周期判断处理队列是否存在待处理数据;
[0010] 当处理队列存在待处理数据时,将所述待处理数据发送至所述处理队列对应的数据处理端口,以便通过所述数据处理端口对所述待处理数据进行处理。
[0011] 可选的,RDMA主机端服务器执行端口初始化操作,得到多个数据处理端口,并对每个数据处理端口创建处理队列,包括:
[0012] 所述RDMA主机端服务器创建所述多个数据处理端口;
[0013] 所述RDMA主机端服务器的NVMF发起者模块对所述多个数据端口进行驱动注册,以便完成所述端口初始化操作;
[0014] 对每个数据处理端口创建处理队列。
[0015] 可选的,根据接收到的待处理数据的信息确定处理队列,将所述待处理数据发送至所述处理队列,包括:
[0016] 接收到所述待处理数据;
[0017] 根据所述待处理数据的类型和所述待处理数据的传输信息确定处理队列;
[0018] 将所述待处理数据发送至所述处理队列。
[0019] 可选的,当处理队列存在待处理数据时,将所述待处理数据发送至所述处理队列对应的数据处理端口,以便通过所述数据处理端口对所述待处理数据进行处理;
[0020] 当处理队列存在待处理数据时,将所述待处理数据进行打包处理,得到待发送数据;
[0021] 将所述待发送数据发送至发送端口,以便通过所述发送端口将所述待发送数据进行发送处理。
[0022] 本申请还提供一种RDMA的数据处理系统,包括:
[0023] 端口初始化模块,用于执行端口初始化操作,得到多个数据处理端口,并对每个数据处理端口创建处理队列;
[0024] 处理队列排队模块,用于根据接收到的待处理数据的信息确定处理队列,将所述待处理数据发送至所述处理队列;
[0025] 队列任务判断模块,用于按照预设周期判断处理队列是否存在待处理数据;
[0026] 数据处理模块,用于当处理队列存在待处理数据时,将所述待处理数据发送至所述处理队列对应的数据处理端口,以便通过所述数据处理端口对所述待处理数据进行处理。
[0027] 可选的,所述端口初始化模块,包括:
[0028] 端口创建单元,用于创建所述多个数据处理端口;
[0029] 端口注册单元,用于对所述多个数据端口进行驱动注册,以便完成所述端口初始化操作;
[0030] 队列创建单元,用于对每个数据处理端口创建处理队列。
[0031] 可选的,所述处理队列排队模块,包括:
[0032] 数据接收单元,用于接收到所述待处理数据;
[0033] 队列确定单元,用于根据所述待处理数据的类型和所述待处理数据的传输信息确定处理队列;
[0034] 数据发送单元,用于将所述待处理数据发送至所述处理队列。
[0035] 可选的,所述数据处理模块,包括:
[0036] 打包处理单元,用于当处理队列存在待处理数据时,将所述待处理数据进行打包处理,得到待发送数据;
[0037] 数据发送单元,用于将所述待发送数据发送至发送端口,以便通过所述发送端口将所述待发送数据进行发送处理。
[0038] 本申请还提供一种服务器,包括:
[0039] 存储器,用于存储计算机程序;
[0040] 处理器,用于执行所述计算机程序时实现如上所述的数据处理方法的步骤。
[0041] 本申请还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的数据处理方法的步骤。
[0042] 本申请所提供的一种RDMA的数据处理方法,包括:RDMA主机端服务器执行端口初始化操作,得到多个数据处理端口,并对每个数据处理端口创建处理队列;根据接收到的待处理数据的信息确定处理队列,将所述待处理数据发送至所述处理队列;按照预设周期判断处理队列是否存在待处理数据;当处理队列存在待处理数据时,将所述待处理数据发送至所述处理队列对应的数据处理端口,以便通过所述数据处理端口对所述待处理数据进行处理。
[0043] 通过采用轮询的方式对主机端服务器接收到的多个待处理数据进行处理,也就是,创建不同的数据处理端口,每个端口对应有对应的处理队列,当接收到待处理数据时先放入处理队列中,按照一定的周期对处理队列进行查询以便将处理队列中的待处理数据进行处理,采用数据处理端口对数据进行处理,避免过多的待处理数据被主机端中的发起者模块处理,减少主机端中发起者模块的任务量,降低压力,并且,采用了不同的数据处理端口可以并发处理多个数据连接,提高了数据处理的效率,尤其是改善数据传输时的效率,增大带宽降低时延。
[0044] 本申请还提供一种RDMA的数据处理系统、服务器以及计算机可读存储介质,具有以上有益效果,在此不作赘述。

附图说明

[0045] 为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
[0046] 图1为本申请实施例所提供的第一种RDMA的数据处理方法的流程图;
[0047] 图2为本申请实施例所提供的第二种RDMA的数据处理方法的流程图;
[0048] 图3为本申请实施例所提供的一种RDMA的数据处理系统的结构示意图。

具体实施方式

[0049] 本申请的核心是提供一种RDMA的数据处理方法、数据处理系统、服务器以及计算机可读存储介质,通过数据处理端口和处理队列实现轮询处理,降低主机端的处理压力,提高数据处理效率。
[0050] 为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
[0051] 目前在服务器技术领域出现了一种共享内存技术,即RDMA(Remote Direct Memory Access)技术,也就是远程直接数据存取。其主要目的是为了解决网络传输中服务器端数据处理的延迟。RDMA通过网络把资料直接传入计算机的存储区,将数据从一个系统快速移动到远程系统存储器中,而不对操作系统造成任何影响,如此就不需要用到多少计算机的处理功能。消除了外部存储器复制和上下文切换的开销,因而能释放内存带宽和CPU周期用于改进应用系统性能。但是,现有技术中,数据处理要经过内核协议栈处理再拷贝到用户态进程,增加了数据复制的时间和空间。并且,内核栈调试不方便进行操作。
[0052] 因此,本申请提供一种RDMA的数据处理方法,通过采用轮询的方式对主机端服务器接收到的多个待处理数据进行处理,也就是,创建不同的数据处理端口,每个端口对应有对应的处理队列,当接收到待处理数据时先放入处理队列中,按照一定的周期对处理队列进行查询以便将处理队列中的待处理数据进行处理,采用数据处理端口对数据进行处理,避免过多的待处理数据被主机端中的发起者模块处理,减少主机端中发起者模块的任务量,降低压力,并且,采用了不同的数据处理端口可以并发处理多个数据连接,提高了数据处理的效率,尤其是改善数据传输时的效率,增大带宽降低时延。
[0053] 请参考图1,图1为本申请实施例所提供的第一种RDMA的数据处理方法的流程图。
[0054] 本实施例中,该方法可以包括:
[0055] S101,RDMA主机端服务器执行端口初始化操作,得到多个数据处理端口,并对每个数据处理端口创建处理队列;
[0056] 本步骤旨在主机端服务器实现对RDMA技术的初始化操作,并且,创建出应对处理不同数据处理任务的数据处理端口,对每个数据处理端口创建对应的处理队列。
[0057] 现有技术中的一般都是采用主机端服务器中的RDMA技术的发起者模块对接收到的数据进行对应的处理。也就是,一个处理模块需要处理不同来源,不同类型的数据,当数据量增大时,该处理模块处理压力增大,处理效率降低,无法处理更多的数据。
[0058] 因此,本实施例中采用的不同的数据处理端口对待处理数据进行处理,对待处理数据进行分流,而不是只采用发起者模块对待处理数据进行处理,降低了发起者模块的数据处理压力,提高了数据处理时的效率。
[0059] 其中,数据处理端口包括但不限于IO处理端口,发送端口等。可见,IO处理端口可以对数据进行IO处理,发送端口可以将数据进行发送。
[0060] S102,根据接收到的待处理数据的信息确定处理队列,将待处理数据发送至处理队列;
[0061] 在S101的基础上,本步骤旨在将接收到的待处理数据分配到对应的处理队列中。具体的,本步骤中主要是根据待处理数据的信息确定对应的处理队列,再将该待处理数据保存于该队列中。
[0062] 更具体的,本步骤中可以根据待处理数据的属性信息,或者是发送者的信息确定保存的处理队列。
[0063] S103,按照预设周期判断处理队列是否存在待处理数据;若是,则执行S104;
[0064] 在S102的基础上,本步骤旨在对待处理队列进行轮询。也就是,在多个处理队列之间进行对应的待处理数据查询,并且是以一定的周期进行。具体的,可以针对每个处理队列按照预设周期进行查询,还可以针对多个处理队列进行轮换查询。
[0065] 其中,预设周期可以采用现有技术提供的任意一种查询周期,还可以通过技术人员经验进行设定,在此不做具体限定。
[0066] S104,当处理队列存在待处理数据时,将待处理数据发送至处理队列对应的数据处理端口,以便通过数据处理端口对待处理数据进行处理。
[0067] 在S103的基础上,本步骤旨在当处理队列存在待处理数据时,调用对应的数据处理端口对该待处理数据进行对应的处理操作。本步骤中是将该待处理数据发送至对应的数据处理端口进行处理,例如,调用IO处理端口时,将该待处理数据发送至该IO处理端口继续进行处理即可,具体的,当IO处理端口处理的数据还可以返回至其他处理队列,进行后续的处理操作。
[0068] 综上,本实施例通过采用轮询的方式对主机端服务器接收到的多个待处理数据进行处理,也就是,创建不同的数据处理端口,每个端口对应有对应的处理队列,当接收到待处理数据时先放入处理队列中,按照一定的周期对处理队列进行查询以便将处理队列中的待处理数据进行处理,采用数据处理端口对数据进行处理,避免过多的待处理数据被主机端中的发起者模块处理,减少主机端中发起者模块的任务量,降低压力,并且,采用了不同的数据处理端口可以并发处理多个数据连接,提高了数据处理的效率,尤其是改善数据传输时的效率,增大带宽降低时延。
[0069] 以下通过一个实施例,对本申请提供的一种RDMA的数据处理方法做进一步说明。
[0070] 请参考图2,图2为本申请实施例所提供的第二种RDMA的数据处理方法的流程图。
[0071] 本实施例中,该方法可以包括:
[0072] S201,RDMA主机端服务器创建多个数据处理端口;
[0073] S202,RDMA主机端服务器的NVMF发起者模块对多个数据端口进行驱动注册,以便完成端口初始化操作;
[0074] S203,对每个数据处理端口创建处理队列;
[0075] 可见,S201至S203主要是对如何进行初始化操作做具体说明。首先创建出多个数据处理端口,然后对创建的数据处理端口进行注册操作,使得数据处理端口可用,以便完成初始化操作。
[0076] S204,接收到待处理数据;
[0077] S205,根据待处理数据的类型和待处理数据的传输信息确定处理队列;
[0078] S206,将待处理数据发送至处理队列;
[0079] 可见,S204至S206主要是对如何进行初始化操作做具体说明。具体的,本实施例中主要是采用待处理数据的类型和传输信息确定处理队列。其中,传输信息是指对端ID等信息。
[0080] S207,按照预设周期判断处理队列是否存在待处理数据;若是,则执行S208;
[0081] S208,当处理队列存在待处理数据时,将待处理数据进行打包处理,得到待发送数据;
[0082] S209,将待发送数据发送至发送端口,以便通过发送端口将待发送数据进行发送处理。
[0083] S208和S209主要是对如何进行初始化操作做具体说明。具体说明是将待处理数据如何进行发送处理。也就是通过发送端口进行处理。
[0084] 可见,本实施例通过采用轮询的方式对主机端服务器接收到的多个待处理数据进行处理,也就是,创建不同的数据处理端口,每个端口对应有对应的处理队列,当接收到待处理数据时先放入处理队列中,按照一定的周期对处理队列进行查询以便将处理队列中的待处理数据进行处理,采用数据处理端口对数据进行处理,避免过多的待处理数据被主机端中的发起者模块处理,减少主机端中发起者模块的任务量,降低压力,并且,采用了不同的数据处理端口可以并发处理多个数据连接,提高了数据处理的效率,尤其是改善数据传输时的效率,增大带宽降低时延。
[0085] 以下通过另一个更具体的实施例,对本申请提供的一种RDMA的数据处理方法做进一步说明。
[0086] 本实施例中,该方法可以包括:
[0087] 步骤1,主机端NVMF(NVMe over Fabrics NVMe通过网络方式传输)发起者模块向平台接口层注册驱动,进行初始化操作,完成HBA(Host Bus Adapter主机总线适配器)卡所有端口注册平台端口和IO端口;
[0088] 步骤2,创建NVMF subsystem(子系统模块)、pollgroup(轮询队列),1:1绑定线程;
[0089] 步骤3,在每个subsystem中创建多个控制器和namespace(命名空间);
[0090] 步骤4,平台接口层开始启动端口,执行start_port(起始函数)函数操作;
[0091] 步骤5,平台接口层执行轮询操作,轮询查询相应端口的队列;轮询处理开始于上一步执行完start_port后,获取完成状态;轮询处理请求队列、反馈队列、完成队列三个队列。在每个队列处理过程中,基本都是查找队列中未处理项,从队列中取出、调用对应的接口进行处理。轮询操作持续处理,直到程序退出轮询操作结束;
[0092] 步骤6,当上层应用程序收到数据要发送时,根据数据类型、对端的ID等信息,将数据发送到对应的IO端口队列;
[0093] 步骤7,用户态RDMA模块将其打包增加RDMA包头包尾等信息,放入发送队列;
[0094] 步骤8,HBA卡FW(Firmware固件)自动完成数据发送操作。
[0095] 可见,本申请实施例提供的RDMA的数据处理方法,通过采用轮询的方式对主机端服务器接收到的多个待处理数据进行处理,也就是,创建不同的数据处理端口,每个端口对应有对应的处理队列,当接收到待处理数据时先放入处理队列中,按照一定的周期对处理队列进行查询以便将处理队列中的待处理数据进行处理,采用数据处理端口对数据进行处理,避免过多的待处理数据被主机端中的发起者模块处理,减少主机端中发起者模块的任务量,降低压力,并且,采用了不同的数据处理端口可以并发处理多个数据连接,提高了数据处理的效率,尤其是改善数据传输时的效率,增大带宽降低时延。
[0096] 下面对本申请实施例提供的一种RDMA的数据处理系统进行介绍,下文描述的一种RDMA的数据处理系统与上文描述的一种RDMA的数据处理方法可相互对应参照。
[0097] 请参考图3,图3为本申请实施例所提供的一种RDMA的数据处理系统的结构示意图。
[0098] 本实施例中,该系统可以包括:
[0099] 端口初始化模块100,用于执行端口初始化操作,得到多个数据处理端口,并对每个数据处理端口创建处理队列;
[0100] 处理队列排队模块200,用于根据接收到的待处理数据的信息确定处理队列,将待处理数据发送至处理队列;
[0101] 队列任务判断模块300,用于按照预设周期判断处理队列是否存在待处理数据;
[0102] 数据处理模块400,用于当处理队列存在待处理数据时,将待处理数据发送至处理队列对应的数据处理端口,以便通过数据处理端口对待处理数据进行处理。
[0103] 可选的,该端口初始化模块100,可以包括:
[0104] 端口创建单元,用于创建多个数据处理端口;
[0105] 端口注册单元,用于对多个数据端口进行驱动注册,以便完成端口初始化操作;
[0106] 队列创建单元,用于对每个数据处理端口创建处理队列。
[0107] 可选的,该处理队列排队模块200,可以包括:
[0108] 数据接收单元,用于接收到待处理数据;
[0109] 队列确定单元,用于根据待处理数据的类型和待处理数据的传输信息确定处理队列;
[0110] 数据发送单元,用于将待处理数据发送至处理队列。
[0111] 可选的,该数据处理模块400,可以包括:
[0112] 打包处理单元,用于当处理队列存在待处理数据时,将所述待处理数据进行打包处理,得到待发送数据;
[0113] 数据发送单元,用于将所述待发送数据发送至发送端口,以便通过所述发送端口将所述待发送数据进行发送处理。
[0114] 本申请实施例还提供一种服务器,包括:
[0115] 存储器,用于存储计算机程序;
[0116] 处理器,用于执行所述计算机程序时实现如以上实施例所述的数据处理方法的步骤。
[0117] 本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如以上实施例所述的数据处理方法的步骤。
[0118] 该计算机可读存储介质可以包括:U盘、移动硬盘、只读存储器(Read‑Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
[0119] 说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
[0120] 专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
[0121] 结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD‑ROM、或技术领域内所公知的任意其它形式的存储介质中。
[0122] 以上对本申请所提供的一种RDMA的数据处理方法、数据处理系统、服务器以及计算机可读存储介质进行了详细介绍。本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。