首页 / 数据传输处理方法和数据传输器

数据传输处理方法和数据传输器有效专利 发明

技术领域

[0001] 本发明实施例涉及通信技术领域,尤其涉及一种数据传输处理方法和数据传输器。

相关背景技术

[0002] 随着通信技术的发展,通过网络传输数据信息已成为人们进行信息交流的重要方式。由于传输数据量的日益增大,在服务器端通常存在数据传输处理的延迟问题。
[0003] 现有技术中,通常采用远程直接数据存取(Remote Direct Memory Access,简称为RDMA)方法来解决上述传输数据处理的延迟问题。在RDMA方法中,计算机S1通过网络将数据直接传入对端计算机S2的内存,其中,所有在数据传输过程中用到的内存都必须被注册。S2在执行内存注册的过程中,其操作系统通常不能直接感知内存,需要通过固件层向其汇报,然后根据汇报结果管理并使用内存。图1为现有技术提供的RDMA方法中内存注册原理的示意图,如图1所示,S101、用户态进程通过系统调用发起内存窗口的注册请求消息。其中,注册请求消息包含了内存虚拟起始地址和长度。S102、系统内核处理内存注册请求消息,并将内存映射关系发送给网络适配器。具体的,系统内核在接收到用户态进程发起内存窗口的注册请求消息后,将该块内存窗口锁定到真实的物理内存,然后再将内存映射关系发送给网络适配器。S103、网络适配器根据内存映射关系为内存窗口生成本地关键字和远端关键字,并返回给系统内核。所述本地关键字为本地传输设备的内存访问权限标识,所述远端关键字为远端传输设备的内存访问权限标识。S104、系统内核将本次内存注册的上下文信息保存,并将其句柄消息返回给用户态进程,以便其在注销内存窗口时使用。所述句柄消息为所述上下文信息的标识。在完成上述内存窗口的注册后,即可从该内存读数据或向该内存写数据。
[0004] 在RDMA传输中,通过网络将传输数据从一个传输设备的存储器快速移动到另一个传输设备的存储器中,而不经过传输设备操作系统的处理过程,节约了传输设备的计算机处理资源。但是,每次RDMA传输所需的内存都需要单独注册,因此,现有技术的数据传输处理过程存在频繁的输入/输出(Input/Output,简称为I/O)操作,从而导致系统负载大,效率低。

具体实施方式

[0040] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0041] 图2为本发明数据传输处理方法实施例一的流程图,如图2所示,本实施例的方法应用于数据传输器,所述数据传输器设置于服务器,所述服务器还包括内存,本实施例的方法可以包括以下内容。
[0042] S201、数据传输器接收数据传输请求。
[0043] 所述数据传输请求由所述数据传输器或者另一数据传输器发送,所述传输请求中携带有虚拟内存起始地址以及内存长度。
[0044] 具体的,所述服务器为数据传输器所归属于的传输设备,所述另一数据传输器归属于另一服务器传输设备,所述数据传输请求由所述数据传输器或者另一数据传输器发送,即所述数据传输请求来自所述服务器或者另一服务器,因此,数据传输器接收来自其所属传输设备内部的数据传输请求,或者接收来自其它传输设备的数据传输请求。
[0045] S202、数据传输器将数据传输请求发送给内存管理器,并指示内存管理器从内存资源池中申请传输内存。
[0046] 所述内存资源池由所述数据传输器通过基本输入输出系统BIOS从服务器内存中提前申请建立;所述内存管理器从内存资源池中申请传输内存包括:内存管理器使用内存映射表,获得所述虚拟内存对应的物理内存,按照所述物理内存起始地址以及内存长度,从内存资源池中申请传输内存,其中,所述内存映射表记录有虚拟内存与物理内存的映射关系。
[0047] 具体的,数据传输器通过服务器的基本输入输出系统BIOS建立的内存资源池对于服务器的操作系统来说是不可见的,因此,服务器的操作系统在执行数据传输处理业务时并不使用数据传输器通过BIOS建立的内存资源池中的内存。内存管理器在接收到数据传输器发送数据传输请求和从内存资源池中申请传输内存的指示后,根据传输请求中携带的虚拟内存起始地址以及内存长度,使用内存映射表,获得虚拟内存对应的物理内存,并按照所述物理内存起始地址以及内存长度,从内存资源池中申请传输内存,其中,所述内存映射表记录有虚拟内存与物理内存的映射关系。由于内存资源池为数据传输器预先构建的可供多次数据传输处理使用的内存资源块。当数据传输器在接收到数据传输请求后,只需通过内存管理器从内存资源池中申请数据传输过程中所需的内存。
[0048] S203、数据传输器指示内存管理器使用传输内存与数据传输器或者另一数据传输器进行数据传输。
[0049] 具体的,内存管理器从内存资源池中申请到数据传输过程中所需的传输内存后,数据传输器指示内存管理器使用所述传输内存执行数据传输,此时,数据传输器完成一次与其所属传输设备或者其它传输设备的数据传输。
[0050] 本实施例中,数据传输器在接收到数据传输请求后,通过将数据传输请求发送给内存管理器,并指示内存管理器从内存资源池中申请传输内存,其中,内存资源池由数据传输器通过基本输入输出系统BIOS从服务器内存中提前申请建立,内存管理器从内存资源池中申请传输内存,并使用所述传输内存与所述数据传输器或者另一数据传输器进行数据传输,使得整个数据传输过程的执行不需要经过中央处理器CPU,不但避免了在数据传输处理过程中对每次数据传输所需的内存单独注册,而且提高了数据传输处理的效率。
[0051] 内存资源池的建立可以有多种方式,下面举例说明:(1)设置内存需求信息,例如内存大小,还可以增加内存读/写属性、内存读写速度等其他需求,这个需求信息可以由用户通过人机操作界面录入,也可以由服务器统计后自行设置。(2)BIOS对符合需求信息的内存设置标识,这些标识称为标识信息。如前所述,由BIOS设置标识后,拥有标识的内存对操作系统透明,无法被操作系统占用。(3)内存管理器使用内存映射信息对拥有BIOS标识的内存进行预留,建立出内存资源池。例如使用内存映射信息查找拥有标识的物理内存所对应的逻辑内存,并找到的逻辑内存标记为预留内存。
[0052] 如上所述的数据传输处理方法,其中,所述数据传输器通过基本输入输出系统BIOS从服务器内存中申请一部分内存建立内存资源池,具体为:
[0053] 所述数据传输器通过所述基本输入输出系统BIOS按照设定的大小以及内存读/写属性,从服务器内存中申请一部分内存进行标记,被标记的内存成为内存资源池。
[0054] 具体的,用户根据所要传输数据的数据量,可以通过服务器的基本输入输出系统BIOS输入数据传输参数选项信息,参数选项信息中包含内存属性信息,内存属性标识了内存的大小和内存的读/写属性。数据传输器再通过所述基本输入输出系统BIOS,按照设定的大小以及内存读/写属性,从服务器内存中申请一部分内存进行标记,被标记的内存成为内存资源池,并将标记信息记录于操作系统的内存映射信息中。
[0055] 本实施例中,数据传输器通过根据用户输入的参数选项信息提前建立内存资源池,进而可以在接收到数据传输请求后,通过指示内存管理器从内存资源池中申请数据传输过程中所需的内存,并使用该内存执行数据传输,使得整个数据传输过程的执行不需要经过中央处理器CPU,不但避免了在数据传输处理过程中对每次数据传输所需的内存单独注册,而且提高了数据传输处理的效率。
[0056] 如上所述的数据传输处理方法,其中,所述内存读/写属性包括下述至少一种:
[0057] 远端可读;
[0058] 远端可写;
[0059] 本地可读;或者
[0060] 本地可写。
[0061] 具体的,所述服务器为数据传输器所归属于的传输设备,即为本地传输设备;所述另一数据传输器归属于另一服务器传输设备,所述另一服务器即为远端传输设备。所述数据传输请求由所述数据传输器或者另一数据传输器发送,即所述数据传输请求来自所述服务器或者另一服务器,因此,数据传输器接收来自其本地传输设备内部的数据传输请求,或者接收来自远端传输设备的数据传输请求。相应的,所述内存读/写属性可以为远端可读、远端可写、本地可读或者本地可写中的至少一种。
[0062] 如上所述的数据传输处理方法,其中,所述数据传输请求来自远端服务器,所述传输器是网络接口卡。对于不同设备之间的数据传输,所述传输器是网络接口卡。
[0063] 本发明实施例中的数据传输器可以是开放架构企业分发(Open Fabrics Enterprise Distribution,简称为OFED)芯片,可以预留内存供服务器的其他器件使用,或者预留内存供其他服务器的器件使用。可以建立内存资源池并使用所述内存资源池进行数据的器件称为数据传输器,例如是网卡、主机总线适配器(Host Bus Adapter,HBA)或者其他接口卡。现有技术中,数据传输器和内存之间的数据传输需要经过CPU,而且还需要经过操作系统(OS)的处理。本发明实施例可以通过BIOS设置用作内存资源池的内存,对计算机系统而言,由于BIOS启动完成后才启动操作系统,因此BIOS标识的内存无法被操作系统占用。内存管理器可以利用BIOS标识信息所标识的内存进行建立内存资源池。当数据传输器有内存使用需求时,可以通过内存管理器申请内存资源池的一部分供数据传输器使用。由于内存资源池的建立,以及整个数据传输过程都不经过CPU,不需要操作系统参与,因此能够提高数据传输效率。
[0064] 如上所述的数据传输处理方法,其中,所述数据传输请求来自所述服务器。所述传输器位于所述服务器,所述数据传输请求来自所述服务器,即所述数据传输是同一设备内部的数据传输。
[0065] 本发明实施例的数据传输器通过建立内存资源池并从内存资源池中申请传输内存进行数据传输,所述数据传输请求可以与数据传输器位于同一服务器,也可以来自其它服务器,后一种数据传输可以应用于远程直接数据存取RDMA。
[0066] 如上所述的数据传输处理方法,其中所述数据传输为远程直接数据存取RDMA。
[0067] 图3为本发明数据传输处理方法实施例二的流程图,如图3所示,本实施例中将结合RDMA传输,给出本发明数据传输处理方法的具体应用实施例,本实施例的数据传输器设置于传输设备中,本实施例的方法可以包括以下内容。
[0068] S301、用户通过传输设备的启动界面输入RDMA传输参数选项。
[0069] 具体的,为了提高RDMA传输速度,用户通过启动(Setup)界面设置RDMA传输参数选项信息,其中,参数选项信息中可以包含内存属性信息,内存属性标识了内存的大小和内存的读/写属性。
[0070] S302、传输设备根据用户输入的传输参数信息设置固件层的内存汇报接口参数。
[0071] 具体的,由于操作系统(Operating System,简称为OS)通常不能直接感知内存,需要通过固件层向其汇报之后,OS才能根据汇报结果管理并使用内存。汇报的途径主要是通过基本输入输出系统(Basic Input Output System,简称为BIOS)软中断服务int15的0xE830号功能函数或者通过统一可扩展固件接口(Unified Extensible Firmware Interface,简称为UEFI)的GetMemoryMap()函数。
[0072] S303、传输设备启动操作系统。
[0073] S304、传输设备获取其操作系统的内存映射信息,构建内存资源池。
[0074] 具体的,在RDMA传输中,支持RDMA传输的开放架构企业分发(Open Fabrics Enterprise Distribution,简称为OFED)驱动获取传输设备中操作系统的内存映射(Memory Map)信息,并根据内存映射信息构建内存资源池。
[0075] S305、传输设备获取其操作系统的内存映射信息。
[0076] 具体的,在RDMA传输中,OFED驱动获取其系统的内存映射信息,其中,内存映射信息中包含S304中构建的内存资源池信息。
[0077] S306、传输设备申请数据传输过程中所需的内存。
[0078] 具体的,在RDMA传输中,OFED驱动获取内存映射信息中包含的内存资源池信息,从内存资源池中申请得到数据传输过程中所需的内存。
[0079] S307、传输设备执行RDMA传输。
[0080] 具体的,传输设备从内存资源池中申请到RDMA传输过程中所需的内存后,即可使用所述内存执行RDMA传输。
[0081] 本实施例中,传输设备首先根据用户通过启动界面输入的RDMA传输参数设置固件层的内存汇报接口参数,并在其操作系统启动后获取其系统的内存映射信息,然后根据系统的内存映射信息构建内存资源池,进而通过从内存资源池中申请RDMA传输过程中所需的内存,并使用该内存执行RDMA传输,从而避免了在RDMA传输处理过程中对每次RDMA传输所需的内存单独注册,提高了网络中RDMA传输处理的效率。
[0082] 图4为本发明数据传输器实施例一的结构示意图,如图4所示,本实施例的数据传输器可以包括:接收模块401、申请模块402和传输模块403。其中,接收模块401用于数据传输请求,所述数据传输请求由所述数据传输器或者另一数据传输器发送,所述传输请求中携带有虚拟内存起始地址以及内存长度;申请模块402用于将所述数据传输请求发送给内存管理器,并指示内存管理器从内存资源池中申请传输内存,所述内存资源池由所述数据传输器通过基本输入输出系统BIOS从服务器内存中提前申请建立;所述内存管理器从内存资源池中申请传输内存包括:内存管理器使用内存映射表,获得所述虚拟内存对应的物理内存,按照所述物理内存起始地址以及内存长度,从内存资源池中申请传输内存,其中,所述内存映射表记录有虚拟内存与物理内存的映射关系;传输模块403用于指示内存管理器使用所述传输内存与所述数据传输器或者另一数据传输器进行数据传输。
[0083] 本实施例的数据传输器可以用于执行图2所示方法实施例的方法,其实现原理和所要达到的技术效果类似,在此不再赘述。
[0084] 如上所述的数据传输器,其中,申请模块402具体可以用于通过所述基本输入输出系统BIOS按照设定的大小以及内存读/写属性,从服务器内存中申请一部分内存进行标记,被标记的内存成为内存资源池。
[0085] 本实施例的数据传输器,其实现原理和所要达到的技术效果上文中已有论述,在此不再赘述。
[0086] 如上所述的数据传输器,其中,所述内存读/写属性包括下述至少一种:
[0087] 远端可读;
[0088] 远端可写;
[0089] 本地可读;或者
[0090] 本地可写。
[0091] 本实施例的数据传输器,其实现原理和所要达到的技术效果上文中已有论述,在此不再赘述。
[0092] 如上所述的数据传输器,其中,所述数据传输请求来自远端服务器,所述传输器是网络接口卡。
[0093] 本实施例的数据传输器,其实现原理和所要达到的技术效果上文中已有论述,在此不再赘述。
[0094] 如上所述的数据传输器,其中,所述数据传输请求来自所述服务器。
[0095] 本实施例的数据传输器,其实现原理和所要达到的技术效果上文中已有论述,在此不再赘述。
[0096] 如上所述的数据传输器,其中,所述数据传输为远程直接数据存取RDMA。
[0097] 本实施例的数据传输器,其实现原理和所要达到的技术效果上文中已有论述,在此不再赘述。
[0098] 最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

当前第1页 第1页 第2页 第3页
相关技术