内存中数据块的发送、接收方法和装置及传输系统的制作方法

文档序号:7765326阅读:133来源:国知局
专利名称:内存中数据块的发送、接收方法和装置及传输系统的制作方法
技术领域
本发明涉及计算机应用领域,尤其涉及一种在内核运行态下内存中数据块的发 送、接收方法和装置及传输系统。
背景技术
Infiniband(无限带宽)是一种高速互联技术,用于作系统内部互联,替代总线的 使用。其中该技术还拥有RDMA(Remote Direct Memory Access,远程直接内存访问)的特性。在实现本发明过程中,发明人发现现有技术存在如下问题现有技术中使用Infiniband链路传输数据块时,采用RDMA进行内存管理,要求每 次传输的数据块必须是页对齐的数据块,而采用该机制时,在数据包中存在首数据块相对 于页右不对齐,尾数据块相对于页左不对齐,中间数据块相对于页不对齐这三种中的任意 一种情况时,就需要将整个数据包分多次发送,增加了消息往返交互的次数,从而增加了数 据包中全部数据块的传输时间,降低了数据包的传输效率。

发明内容
本发明提供一种在内核运行态下内存中数据块的发送、接收方法和装置及传输系 统,缩短数据块的传输时间。为解决上述技术问题,本发明提供了如下技术方案—种在内核运行态下内存中数据块的发送方法,包括当检测到有数据包的数据块需要通过无限带宽链路传输时,通知接收端注册用于 存储所述数据包中全部数据块的内存空间;为本地用于缓冲所述数据包中全部数据块的内存空间进行注册;当检测到本地和所述接收端都完成内存空间的注册后,将所述数据包的全部数据 块填充到一个工作请求中;通过无限带宽链路向所述接收端发送所述工作请求。优选的,在所述通知接收端注册用于存储所述数据包中全部数据块的内存空间时 还包括通知所述接收端所述数据包中全部数据块的格式信息,其中所述格式信息为本地 和所述接收端预先为每个格式信息的描述信息设置的字符数小于该格式信息的描述信息 字符数的标识。优选的,所述为本地用于缓冲所述数据包中全部数据块的内存空间进行注册,包 括在未检测到接收端对所述数据包中数据块的内存注册完成前,为本地用于缓冲所 述数据包中全部数据块的内存空间进行注册。一种在内核运行态下内存中数据块的接收方法,包括
获取包括注册用于存储通过无限带宽链路传输的数据包中全部数据块的内存空 间的通知;为本地用于存储所述数据包中全部数据块的内存空间进行注册;在通过无限带宽链路接收到一包括所述数据包中全部数据块的工作请求后,将所 述数据包的数据块存储到本地注册得到的内存空间。一种在内核运行态下内存中数据块的发送装置,包括通知模块,用于当检测到有数据包的数据块通过无限带宽链路需要传输时,通知 接收端注册用于存储所述数据包中全部数据块的内存空间;注册模块,与所述通知模块相连,用于为本地用于缓冲所述数据包中全部数据块 的内存空间进行注册;填充模块,与所述注册模块相连,用于当检测到本地和所述接收端都完成内存空 间的注册后,将所述数据包的全部数据块填充到一个工作请求中;发送模块,与所述填充模块相连,用于通过无限带宽链路向所述接收端发送所述 工作请求。优选的,所述通知模块,还用于通知所述接收端所述数据包中全部数据块的格式 信息,其中所述格式信息为本地和所述接收端预先为每个格式信息的描述信息设置的字符 数小于该格式信息的描述信息字符数的标识。优选的,所述注册模块,用于在未检测到接收端对所述数据包中数据块的内存注 册完成前,为本地用于缓冲所述数据包中全部数据块的内存空间进行注册。—种在内核运行态下内存中数据块的接收装置,包括获取模块,用于获取包括注册用于存储通过无限带宽链路传输的数据包中全部数 据块的内存空间的通知;注册模块,与所述获取模块相连,用于为本地用于存储所述数据包中全部数据块 的内存空间进行注册;存储模块,与所述注册模块相连,用于在通过无限带宽链路接收到一包括所述数 据包中全部数据块的工作请求后,将所述数据包的数据块存储到本地注册得到的内存空 间。一种在内核运行态下内存中数据块的接收装置,包括发送装置和接收装置,其 中所述发送装置,用于当检测到有数据包的数据块需要通过无限带宽链路传输时, 通知接收端注册用于存储所述数据包中全部数据块的内存空间;为本地用于缓冲所述数据 包中全部数据块的内存空间进行注册;当检测到本地和所述接收端都完成内存空间的注册 后,将所述数据包的全部数据块填充到一个工作请求中;通过无限带宽链路向所述接收端 发送所述工作请求。所述接收装置,用于获取包括注册用于存储通过无限带宽链路传输的数据包中全 部数据块的内存空间的通知;为本地用于存储所述数据包中全部数据块的内存空间进行注 册;在通过无限带宽链路接收到一包括所述数据包中全部数据块的工作请求后,将所述数 据包的数据块存储到本地注册得到的内存空间。本发明提供的实施例,发送端将所述数据包的全部数据块通过一个工作请求发送到所述数据包的接收端,与现有技术首先判断是否有页不对齐数据,只传输页对齐数据相 比,减少了发送同一数据包中全部数据块的时间;另一方面,由于接收端一次性能够接收 到数据包中全部数据块,与现有技术中在数据包中有页不对齐的数据块时需要多次接收相 比,减少了接收同一数据包中全部数据块的次数,缩短了数据块的接收时间,从而达到缩短 数据包中全部数据块的传输时间的目的,提高了数据包的传输效率。进一步的,在发送端通知接收端进行内存注册后立即进行本地的内存注册,使得 发送端与接收端的内存注册几乎同时进行,缩短了整体的内存注册时间,也达到了缩短整 个数据包中数据块的传输时间。


图1为本发明提供的在内核运行态下内存中数据块的发送方法实施例的流程示 意图;图2为本发明提供的在内核运行态下内存中数据块的接收方法实施例的流程示 意图;图3为本发明提供的在内核运行态下内存中数据块的传输方法应用实例的流程 示意图;图4为本发明提供的在内核运行态下内存中数据块的发送装置实施例的结构示 意图;图5为本发明提供的在内核运行态下内存中数据块的接收装置实施例的结构示 意图。
具体实施例方式为使本发明的目的、技术方案和优点更加清楚,下面将结合附图及具体实施例对 本发明作进一步的详细描述。图1为本发明提供的在内核运行态下内存中数据块的发送方法实施例的流程示 意图。图1所示方法实施例包括步骤101、当检测到有数据包的数据块需要通过无限带宽链路传输时,通知接收端 注册用于存储所述数据包中全部数据块的内存空间;步骤102、为本地用于缓冲所述数据包中全部数据块的内存空间进行注册;步骤103、当检测到本地和所述接收端都完成内存空间的注册后,将所述数据包的 全部数据块填充到一个工作请求中;步骤104、通过无限带宽链路传输的向所述接收端发送所述工作请求。本发明提供的方法实施例,将所述数据包的全部数据块通过一个工作请求发送到 所述数据包的接收端,与现有技术首先判断是否有页不对齐数据,只传输页对齐数据相比, 减少了发送同一数据包中全部数据块的时间,提高了发送的效率;进一步的,也减少了本地 进行内存注册的次数,降低了处理器的负担。图2为本发明提供的在内核运行态下内存中数据块的接收方法实施例的流程示 意图。图2所示方法实施例包括步骤201、获取包括注册用于存储通过无限带宽链路传输的数据包中全部数据块的内存空间的通知;步骤202、为本地用于存储所述数据包中全部数据块的内存空间进行注册;步骤203、在通过无限带宽链路接收到一包括所述数据包中全部数据包的工作请 求后,将所述数据包的数据块存储到本地注册得到的内存空间。本发明提供的方法实施例,由于接收端一次性能够接收到数据包中全部数据块, 与现有技术中在数据包中有页不对齐的数据块时需要多次接收相比,减少了接收同一数据 包中全部数据块的次数,缩短了数据块的接收时间,提高了数据包的传输效率;进一步的, 也减少了本地进行内存注册的次数,降低了处理器的负担。下面以一应用实例对本发明实施例提供的方法实施例作进一步介绍图3为本发明提供的在内核运行态下内存中数据块的传输方法应用实例的流程 示意图。图3所示方法应用实例包括步骤301、发送端获取需要通过无限带宽链路传输的待发送的数据包。步骤302、发送端通知该数据包的接收端为自身用于存储该数据包的内存进行注 册,包括通知该接收端本次发送的数据包的格式类型。在本步骤中,与现有技术发送具体的格式信息不同的是,本发明发送的是格式标 识,其占用的存储空间要小于具体内容所占用的空间。其中每个格式标识所对应的具体内 容可以由发送端和接收端预先协商好。在需要使用格式标识时,根据预先设置的格式信息 对应的标识,获取所述数据包的格式信息的格式标识;通过向所述接收端发送所述数据包 的格式标识通知接收端为用于存储所述数据包中数据块的内存进行注册。其中所述格式信 息为本地和所述接收端预先为每个格式信息的描述信息设置的字符数小于该格式信息的 描述信息字符数的标识。由于在通知格式信息时,采用的字段较少的标识代替具体内容,减 少了传输的数据量。当然,该格式类型的信息可转化为直接的格式要求消息,比如所需内存段的个数 (即有几个数据块),内存端的大小(即数据块所需的地址空间)以及每个数据块访问时所 需的密钥。特别地,在已知所有数据包最多有两个数据段,其中一个必定是包头的情况下, 该类型消息可转化为整个数据包的长度消息或数据包的数据段(非包头段)的长度。步骤303、发送端在未检测到接收端对所述数据包中数据块的内存注册完成前,为 本地用于缓冲所述数据包中数据块的内存进行注册。其中现有技术中内存注册的方法均适用于本发明,此处不在赘述。在本步骤中,触发本地进行内存注册的条件是本地通知接收端进行内存;而现有 技术中是将接收到接收端发送的内存注册完成后才触发的,由上可知,本应用实例中发送 端注册内存的时间明显早于现有技术的注册时间,从而能够在接收到送的内存注册完成 时,已完成本地的内存注册,直接进行数据块发送流程,也进一步缩短了数据块传输所需的 时间。步骤304、接收端为用于存储所述数据包中全部数据块的内存空间进行注册。步骤305、发送端判断本地和接收端是否都已经完成内存注册操作。如果已完成,则执行步骤306 ;否则,继续执行步骤305。步骤306、发送端将将所述数据包的全部数据块填充到一个工作请求中。在本步骤中,由于将该数据包的全部数据块通过一个工作请求来发送,那么即使该数据包中右不对齐的首数据块、左不对齐的尾数据块和页不对齐的非首尾数据块中的至 少一种,该数据包中的数据块也不会分多次发送。步骤307、发送端通过无限带宽链路向接收端发送所述工作请求。步骤308、接收端将所述数据包的数据块存储到本地注册得到的内存空间。可选的,在步骤308之后,所述方法应用实例还包括步骤309、判断是否接收到包括所述接收端成功接收所述数据包中数据块的信 息;在本步骤中,通过判断接收端对数据块的接收情况,保证数据块能够成功传输到 接收端,保证传输的可靠性。如果接收到,则流程结束;否则,继续执行步骤306。本发明提供的方法应用实例,发送端将所述数据包的全部数据块通过一个工作请 求发送到所述数据包的接收端,与现有技术首先判断是否有页不对齐数据,只传输页对齐 数据相比,减少了发送同一数据包中全部数据块的时间;另一方面,由于接收端一次性能够 接收到数据包中全部数据块,与现有技术中在数据包中有页不对齐的数据块时需要多次接 收相比,减少了接收同一数据包中全部数据块的次数,缩短了数据块的接收时间,从而达到 缩短数据包中全部数据块的传输时间的目的,提高了数据包的传输效率。需要说明的是,本发明提供的方法可以应用在装有IB卡的服务器上,且服务器内 部采用Infiniband连接代替总线连接,该服务器中运行的程序通过驱动程序提供的接口 基于底层物理传输协议采用系统中的内核线程传输数据块。当然,也不限于此,可以应用在 其他设备上基于内核态下传输数据块的场景。图4为本发明提供的在内核运行态下内存中数据块的发送装置实施例的结构示 意图。结合图1和图3所述的方法,图4所示的装置实施例包括通知模块401,用于当检测到有数据包的数据块需要通过无限带宽链路传输时,通 知接收端注册用于存储所述数据包中全部数据块的内存空间;注册模块402,与所述通知模块401相连,用于为本地用于缓冲所述数据包中全部 数据块的内存空间进行注册;填充模块403,与所述注册模块402相连,用于当检测到本地和所述接收端都完成 内存空间的注册后,将所述数据包的全部数据块填充到一个工作请求中;发送模块404,与所述填充模块403相连,用于通过无限带宽链路向所述接收端发 送所述工作请求。其中所述通知模块401,还用于通知所述接收端所述数据包中全部数据块的格式 信息,其中所述格式信息为本地和所述接收端预先为每个格式信息的描述信息设置的字符 数小于该格式信息的描述信息字符数的标识。其中所述注册模块,用于在未检测到接收端对所述数据包中数据块的内存注册完 成前,为本地用于缓冲所述数据包中全部数据块的内存空间进行注册。本发明提供的装置实施例,将所述数据包的全部数据块通过一个工作请求发送到 所述数据包的接收端,与现有技术首先判断是否有页不对齐数据,只传输页对齐数据相比, 减少了发送同一数据包中全部数据块的时间,提高了发送的效率;进一步的,也减少了本地 进行内存注册的次数,降低了处理器的负担。
图5为本发明提供的在内核运行态下内存中数据块的接收装置实施例的结构示 意图。结合图2和图3所述的方法,图5所示的装置实施例包括获取模块501,用于获取包括注册用于存储通过无限带宽链路传输的数据包中全 部数据块的内存空间的通知;注册模块502,与所述获取模块501相连,用于为本地用于存储所述数据包中全部 数据块的内存空间进行注册;存储模块503,与所述注册模块502相连,用于在通过无限带宽链路接收到一包括 所述数据包中全部数据快的工作请求后,将所述数据包的数据块存储到本地注册得到的内 存空间。本发明提供的装置实施例,由于接收端一次性能够接收到数据包中全部数据块, 与现有技术中在数据包中有页不对齐的数据块时需要多次接收相比,减少了接收同一数据 包中全部数据块的次数,缩短了数据块的接收时间,提高了数据包的传输效率;进一步的, 也减少了本地进行内存注册的次数,降低了处理器的负担。另外,结合图4和图5所示的装置,本发明还提供一种在内核运行态下内存中数据 块的传输系统,包括发送装置和接收装置,其中所述发送装置,用于当检测到有数据包的数据块需要通过无限带宽链路传输时, 通知接收端注册用于存储所述数据包中全部数据块的内存空间;为本地用于缓冲所述数据 包中全部数据块的内存空间进行注册;当检测到本地和所述接收端都完成内存空间的注册 后,将所述数据包的全部数据块填充到一个工作请求中;通过无限带宽链路向所述接收端 发送所述工作请求。所述接收装置,用于获取包括注册用于存储通过无限带宽链路传输的数据包中全 部数据块的内存空间的通知;为本地用于存储所述数据包中全部数据块的内存空间进行注 册;在通过无限带宽链路接收到一包括所述数据包中全部数据块的工作请求后,将所述数 据包的数据块存储到本地注册得到的内存空间。本发明提供的系统实施例,每次传输时以数据包为传输单元,不采用现有技术中 以页对齐的数据块为传输单元,不会出现数据包中有页不对齐的数据块时需要分多次传输 的问题,减少了数据块的传输次数,缩短了数据块的接收时间,提高了数据包的传输效率; 进一步的,也减少了本地进行内存注册的次数,降低了处理器的负担。本领域普通技术人员可以理解上述实施例的全部或部分步骤可以使用计算机程 序流程来实现,所述计算机程序可以存储于一计算机可读存储介质中,所述计算机程序在 相应的硬件平台上(如系统、设备、装置、器件等)执行,在执行时,包括方法实施例的步骤 之一或其组合。可选地,上述实施例的全部或部分步骤也可以使用集成电路来实现,这些步骤可 以被分别制作成一个个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电 路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。上述实施例中的各装置/功能模块/功能单元可以采用通用的计算装置来实现, 它们可以集中在单个的计算装置上,也可以分布在多个计算装置所组成的网络上。上述实施例中的各装置/功能模块/功能单元以软件功能模块的形式实现并作为 独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。上述提到的计算机可读取存储介质可以是只读存储器,磁盘或光盘等。 以上所述,仅为本发明的具体实施方式
,但本发明的保护范围并不局限于此,任何 熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵 盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求所述的保护范围为准。
权利要求
1.一种在内核运行态下内存中数据块的发送方法,其特征在于,包括当检测到有数据包的数据块需要通过无限带宽链路传输时,通知接收端注册用于存储 所述数据包中全部数据块的内存空间;为本地用于缓冲所述数据包中全部数据块的内存空间进行注册;当检测到本地和所述接收端都完成内存空间的注册后,将所述数据包的全部数据块填 充到一个工作请求中;通过无限带宽链路向所述接收端发送所述工作请求。
2.根据权利要求1所述的方法,其特征在于,在所述通知接收端注册用于存储所述数 据包中全部数据块的内存空间时还包括通知所述接收端所述数据包中全部数据块的格式信息,其中所述格式信息为本地和所 述接收端预先为每个格式信息的描述信息设置的字符数小于该格式信息的描述信息字符 数的标识。
3.根据权利要求1所述的方法,其特征在于,所述为本地用于缓冲所述数据包中全部 数据块的内存空间进行注册,包括在未检测到接收端对所述数据包中数据块的内存注册完成前,为本地用于缓冲所述数 据包中全部数据块的内存空间进行注册。
4.一种在内核运行态下内存中数据块的接收方法,其特征在于,包括获取包括注册用于存储通过无限带宽链路传输的数据包中全部数据块的内存空间的 通知;为本地用于存储所述数据包中全部数据块的内存空间进行注册;在通过无限带宽链路接收到一包括所述数据包中全部数据块的工作请求后,将所述数 据包的数据块存储到本地注册得到的内存空间。
5.一种在内核运行态下内存中数据块的发送装置,其特征在于,包括通知模块,用于当检测到有数据包的数据块通过无限带宽链路需要传输时,通知接收 端注册用于存储所述数据包中全部数据块的内存空间;注册模块,与所述通知模块相连,用于为本地用于缓冲所述数据包中全部数据块的内 存空间进行注册;填充模块,与所述注册模块相连,用于当检测到本地和所述接收端都完成内存空间的 注册后,将所述数据包的全部数据块填充到一个工作请求中;发送模块,与所述填充模块相连,用于通过无限带宽链路向所述接收端发送所述工作 请求。
6.根据权利要求5所述的装置,其特征在于所述通知模块,还用于通知所述接收端所述数据包中全部数据块的格式信息,其中所 述格式信息为本地和所述接收端预先为每个格式信息的描述信息设置的字符数小于该格 式信息的描述信息字符数的标识。
7.根据权利要求5所述的装置,其特征在于所述注册模块,用于在未检测到接收端对所述数据包中数据块的内存注册完成前,为 本地用于缓冲所述数据包中全部数据块的内存空间进行注册。
8.一种在内核运行态下内存中数据块的接收装置,其特征在于,包括获取模块,用于获取包括注册用于存储通过无限带宽链路传输的数据包中全部数据块 的内存空间的通知;注册模块,与所述获取模块相连,用于为本地用于存储所述数据包中全部数据块的内 存空间进行注册;存储模块,与所述注册模块相连,用于在通过无限带宽链路接收到一包括所述数据包 中全部数据块的工作请求后,将所述数据包的数据块存储到本地注册得到的内存空间。
9. 一种在内核运行态下内存中数据块的接收装置,其特征在于,包括发送装置和接收 装置,其中所述发送装置,用于当检测到有数据包的数据块需要通过无限带宽链路传输时,通知 接收端注册用于存储所述数据包中全部数据块的内存空间;为本地用于缓冲所述数据包中 全部数据块的内存空间进行注册;当检测到本地和所述接收端都完成内存空间的注册后, 将所述数据包的全部数据块填充到一个工作请求中;通过无限带宽链路向所述接收端发送 所述工作请求。所述接收装置,用于获取包括注册用于存储通过无限带宽链路传输的数据包中全部数 据块的内存空间的通知;为本地用于存储所述数据包中全部数据块的内存空间进行注册; 在通过无限带宽链路接收到一包括所述数据包中全部数据块的工作请求后,将所述数据包 的数据块存储到本地注册得到的内存空间。
全文摘要
本发明提供一种内存中数据块的发送、接收方法和装置及传输系统,涉及通信领域;能够缩短数据块的传输时间。所述发送方法,包括当检测到有数据包的数据块需要通过无限带宽链路传输时,通知接收端注册用于存储所述数据包中全部数据块的内存空间;为本地用于缓冲所述数据包中全部数据块的内存空间进行注册;当检测到本地和所述接收端都完成内存空间的注册后,将所述数据包的全部数据块填充到一个工作请求中;通过无限带宽链路向所述接收端发送所述工作请求。本发明提供的技术方案可应用于信息传输。
文档编号H04L29/08GK102073593SQ20101054622
公开日2011年5月25日 申请日期2010年11月15日 优先权日2010年11月15日
发明者施培任, 李海东 申请人:浪潮(北京)电子信息产业有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1