CN111400212A - 一种基于远程直接数据存取的传输方法、设备 - Google Patents

一种基于远程直接数据存取的传输方法、设备 Download PDF

Info

Publication number
CN111400212A
CN111400212A CN201910935454.0A CN201910935454A CN111400212A CN 111400212 A CN111400212 A CN 111400212A CN 201910935454 A CN201910935454 A CN 201910935454A CN 111400212 A CN111400212 A CN 111400212A
Authority
CN
China
Prior art keywords
sub
data
sent
time
buffer
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201910935454.0A
Other languages
English (en)
Other versions
CN111400212B (zh
Inventor
陈文祥
陈伟
叶敏
王伟
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hangzhou Hikvision System Technology Co Ltd
Original Assignee
Hangzhou Hikvision System Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hangzhou Hikvision System Technology Co Ltd filed Critical Hangzhou Hikvision System Technology Co Ltd
Priority to CN201910935454.0A priority Critical patent/CN111400212B/zh
Publication of CN111400212A publication Critical patent/CN111400212A/zh
Application granted granted Critical
Publication of CN111400212B publication Critical patent/CN111400212B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal

Abstract

本申请公开了一种基于远程直接数据存取RDMA的传输方法,该方法包括,在源端侧,将待发送任务拆分为至少两个以上子任务,将各个子任务分别存储于各个子缓存区中,当第一时刻到达时,向目的端侧发送第一子缓存区中的第一子任务;当第二时刻到达时,向目的端侧发送第二子缓存区中的第二子任务,所述第二子缓存区为所述第一子缓存区的下一子缓存区;所述第二时刻在第一时间段内的任一时刻等待,使得各个子缓存区中的各个子任务被批量发送;所述第一时间段为第一子任务被发送至该第一子任务的完成信息被获取的时间段。本申请屏蔽掉了各次发送完成后等待时间,使得各次发送时间以时分的方式复用,达到近似同步传输的效果。

Description

一种基于远程直接数据存取的传输方法、设备
技术领域
本发明涉及计算机网络数据存取领域,特别地,涉及一种基于远程直接数据存取(RDMA)的传输方法。
背景技术
传统的TCP/IP通信,发送和接收数据的过程中,都是在源端应用层数据从上向下逐层拷贝封装,目的端从下向上拷贝和解封装,所以比较慢,而且需要CPU参与的次数很多。
RDMA(Remote Direct Memory Access)技术全称为远程直接数据存取,是为了解决网络传输中服务器端数据处理的延迟而产生的。RDMA技术在数据存取的操作中,例如,数据的读/写操作,参与已经注册过的内存区域直接进行数据传输,而不需要CPU参与;其中,实现了RDMA引擎的网卡接替了CPU的工作,通过网络把数据从源主机(包括服务器或客户端)的存储区直接传入目标主机的存储区,将数据从一个本地系统快速移动到远程系统存储器中;由此可以看出,RDMA不对操作系统造成任何影响,它消除了外部存储器复制和文本切换的开销,节省下来的资源可以进行其它运算和服务,因而RDMA能解放内存带宽和CPU周期而用于改进应用系统性能,可以提供低延迟、高吞吐量、低CPU占用率,适用于高性能计算,这样就不需要用到多少计算机的处理功能。
参见图1所示,图1为RDAM的一种整体传输的示意图。当使用RDMA时,需要一实现了RDMA引擎的网卡,这种卡称为主机通道适配器(HCA),适配器创建一个贯穿PCIe总线的从RDMA引擎到RDMA应用程序内存的通道。RDMA操作开始于通过应用程序对内存进行设置。当通过应用程序对所需要的内存进行设置的时候,意味着告诉内核被设置的内存名花有主了,同时,意味着告诉HCA在这段内存上寻址,并开辟一条从HCA卡到这段内存的通道,这一动作称之为注册一个内存区域(MR)。一旦MR注册完毕,就可以使用这段内存来做任何RDMA操作。图1中还示出了注册的内存区域(MR)和被通信队列所使用的位于内存区域之内的缓冲区(buffer)。
RDMA通信基于三条队列SQ,RQ和CQ组成的集合。其中,发送队列(SQ)和接收队列(RQ)作为工作队列负责调度工作,它们总是成对被创建,称之为队列对(QP)。当放置在工作队列上的指令被完成的时候,完成队列(CQ)用来发送完成通知。
当指令被放置到工作队列的时候,意味着告诉HCA那些缓冲区需要被发送或者用来接收数据。这些指令是一些小的结构体,称之为工作队列元素(WQE)。一个WQE包含一个指向缓冲区的指针。放置在发送队列里的WQE中包含的是指向待发送数据的指针,指向待发送数据的缓冲区;放置在接收队列里的WQE中的指针指向用来存放待接收数据的缓冲区。
RDMA是一种异步传输机制。当一次性在工作队列里放置多个发送或接收WQE时,HCA将尽可能快地按顺序处理这些WQE。当一个WQE被处理了,那么缓冲区中的数据就被搬运了。一旦传输完成,HCA就创建一个完成队列元素(CQE)并放置到完成队列中,其中,在CQE中,包含了一个用来记录传输状态的字段,以标识传输成功或失败。
现有技术对RDMA技术提出了相当多的优化点,但是大多数都集中在使用RDMA进行异步数据传输上,这与RDMA的特性有关,RDMA的数据传输本身就是采用异步的方式。
参见图2所示,图2示出了RDMA在发送侧传输数据的一种流程,在发送侧包括:
WQE被填充至发送队列,其中,WQE的指针指向待发送数据所在缓冲区地址;
等待WQE被处理;
处理WQE,将该WQE指针指向的缓冲区中的数据变成数据流发送给接收端;
之后,为该次数据发送生成一CQE,并放置到完成队列中;如果发送成功,则处理该CQE,如果发送失败,则报错;
结束该次发送。
从上述发送过程可见,一次数据发送任务包含了两个环节:其一,将WQE填充发送队列,其二,等待WQE被处理以及生成CQE。从将WQE填充入发送队列,到发送完成产生CQE,会因这两个环节占用一定的时间而导致当前数据发送与下一数据发送之间存在延时,从而导致当前数据与下一数据到达接收侧时产生延时。
发明内容
本发明提供了一种远程直接数据存取的传输方法,以降低远程直接数据存取时数据发送的延时。
本发明提供的一种基于远程直接数据存取RDMA的传输方法是这样实现的:在源端侧,
将待发送任务拆分为至少两个以上子任务,将各个子任务分别存储于各个子缓存区中,
当第一时刻到达时,向目的端侧发送第一子缓存区中的第一子任务;
当第二时刻到达时,向目的端侧发送第二子缓存区中的第二子任务,所述第二子缓存区为所述第一子缓存区的下一子缓存区;
所述第二时刻在第一时间段内的任一时刻等待,使得各个子缓存区中的各个子任务被批量发送;所述第一时间段为第一子任务被发送至该第一子任务的完成信息被获取的时间段。
其中,所述待发送任务包括待发送数据,所述将待发送任务拆分为至少两个以上子任务包括,将存储有第一待发送数据的缓存区按照每次传输所设定的传输大小进行划分,得到至少两个以上子缓存区,将存储于各个子缓存区中的数据作为第二待发送数据,所述每次传输所设定的传输大小根据需要降低的延时确定;
所述当第一时刻到达时,向目的端侧发送第一子缓存区中的第一子任务,包括,
当第一时刻到达时,将存储于当前子缓存区的第二待发送数据作为第一数据,向目的端侧发送;
所述当第二时刻到达时,向目的端侧发送第二子缓存区中的第二子任务,包括,
当第二时刻到达时,将当前子缓存区的相邻下一子缓存区中的第二待发送数据作为第二数据,向目的端侧发送;所述第一时间段为第一数据被发送至该第一数据的完成信息被获取的时间段。
反复执行所述第二时刻的发送,直至各子缓存区中的第二待发送数据发送完毕。
较佳地,该方法进一步包括,批量处理各子缓存区中的第二待发送数据发送后获取到的所有完成信息,遍历所有完成信息中的传输状态,如果任一完成信息中的传输状态为失败状态,则判定所述第一待发送数据发送失败,上报报错信息。
较佳地,所述将存储有第一待发送数据的缓存区按照每次传输所设定的传输大小进行划分,得到至少两个以上子缓存区,进一步包括,分别为各个子缓存区设置对应的工作队列元素WQE,并填充至发送队列中;其中,各个WQE的指针分别指向其对应的子缓存区地址;
所述完成信息包括,为当前完成的发送而生成的完成队列元素CQE;
所述第一时间包括,从处理当前WQE、且当前WQE指针所指向的子缓冲区中的第二待发送数据通过RDMA的发送操作进行发送的结束时刻,到生成的CQE进入完成队列的时间段;
所述在发送当前子缓存区中的第二待发送数据后、并获取到其完成信息之内的第一时间段中的任一时刻,发送下一子缓存区中的第二待发送数据,包括,
对当前发送队列中的各个WQE依次进行处理:
处理当前WQE;
在所述从处理当前WQE、且当前WQE指针所指向的子缓冲区中的第二待发送数据通过RDMA的发送操作进行发送至目的端侧结束,到生成的CQE进入完成队列的第一时间内的任一时刻,处理下一WQE。
其中,所述在所述从处理当前WQE、且当前WQE指针所指向的子缓冲区中的第二待发送数据通过RDMA的发送操作进行发送至目的端侧结束,到生成的CQE进入完成队列的第一时间内的任一时刻,处理下一WQE,包括,
在处理当前WQE时序的下一相邻时序,处理下一WQE。
其中,所述直至各子缓存区中的第二待发送数据发送完毕,包括,
判断所述各个WQE是否处理完毕、并且各个WQE的CQE都进入完成队列,或者,判断是否达到所处理WQE的最大值,
如果是,则执行所述对当前发送队列中的各个WQE依次进行处理的步骤,
否则,执行所述批量处理各子缓存区中的第二待发送数据发送后获取到的所有完成信息的步骤。
又,所述将存储有第一待发送数据的缓存区按照每次传输所设定的传输大小进行划分,得到至少两个以上子缓存区,进一步包括,通过RDMA的接收和/或发送操作或者通过套接字socket方式,源端侧与目的端侧交换包含内存信息的消息;其中,内存信息包括各子缓冲区读取源地址、写入的目的地址、以及访问权限;
所述完成信息包括,来自目的端侧包含数据读写状态的确认信息;
所述第一时间包括,从通过当前RDMA的写操作把当前子缓冲区中的第二数据直接推送push到目的端工作队列的结束时刻,到接收到其完成信息的时间段;
所述在发送当前子缓存区中的第二待发送数据后、并获取到其完成信息之内的第一时间段中的任一时刻,发送下一子缓存区中的第二待发送数据,包括,
根据当前子缓存区的源地址,通过当前写操作,把该子缓冲区中的第二待发送数据直接推送到目的端工作队列的虚拟空间的内存块中,
在所述从通过当前写操作把当前子缓冲区中的第二数据直接推送push到目的端工作队列的结束时刻,到接收到其完成信息的第一时间段中的任一时刻,根据下一子缓存区的源地址,通过下一写操作,把该子缓冲区中的第二待发送数据直接推送到目的端工作队列的虚拟空间的内存块中。
其中,所述在所述从通过当前写操作把当前子缓冲区中的第二数据直接推送push到目的端工作队列的结束时刻,到接收到其完成信息的第一时间段中的任一时刻,根据下一子缓存区的源地址,通过下一写操作,把该子缓冲区中的第二待发送数据直接推送到目的端工作队列的虚拟空间的内存块中,包括,
在当前写操作时序的下一相邻时序,进行下一写操作。
其中,所述直至各子缓存区中的第二待发送数据发送完毕,包括,
判断各个子缓存区是否处理完毕,或者是否达到发送次数的最大值,
如果是,则执行所述根据当前子缓存区的源地址,通过当前写操作,把该子缓冲区中的第二待发送数据直接推送到目的端工作队列的虚拟空间的内存块中,
否则,执行所述批量处理各子缓存区中的第二待发送数据发送后获取到的所有完成信息的步骤。
本发明还提供一种支持远程直接数据存取RDMA的设备,该设备包括存储器、处理器以及用于实现RDMA引擎的主机通道适配器,其中,
存储器用于存储指令,该指令在由处理器执行时使得处理器执行上述基于远程直接数据存取RDMA的传输方法的步骤,使得存储于缓冲区中的第一待发送数据通过主机通道适配器进行传输。
本发明实施例通过将待发送任务拆分为至少两个以上子任务,将各个子任务分别存储于各个子缓存区中,避免了现有技术中一次性地将第一待发送数据进行传输而存在的延时;通过当第一时刻到达时,向目的端侧发送第一子缓存区中的第一子任务;当第二时刻到达时,向目的端侧发送第二子缓存区中的第二子任务,所述第二子缓存区为所述第一子缓存区的下一子缓存区;所述第二时刻在第一时间段内的任一时刻等待,使得各个子缓存区中的各个子任务被批量发送;所述第一时间段为第一子任务被发送至该第一子任务的完成信息被获取的时间段,屏蔽掉了子缓存器中第二待发送数据各次发送完成后等待时间,使得各次发送时间以时分的方式予以复用,尽管从各子缓存区中的第二待发送数据而言,是RDMA异步传输方式,但从第一待发送数据而言,由于当前第一待发送数据和下一第一待发送数据之间的延时通过本发明的方法可降低至几乎可以忽略,从而使得各个第一待发送数据之间整体上达到了同步传输的效果,优化了整体数据同步传输的性能;在需要同步传输的应用场景中,既发挥了RDMA解放内存带宽和CPU周期而用于改进应用系统性能的优势,又避免了其固有特性中异步传输方式所导致的应用局限性。
附图说明
图1为RDAM的一种整体传输的示意图。
图2为RDMA在发送侧传输数据的一种流程示意图。
图3为本实施例基于发送/接收操作的RDMA的一种整体传输示意图。
图4为本实施例基于发送/接收操作的RDMA传输方法的一种流程示意图。
图5为对多个WQE依次进行处理的一种时序示意图。
图6为数据大小相同时、现有技术发送和本申请实施例发送方式下延时差异比较的一种示意图。
图7为本实施例基于读/写操作的RDMA传输方法的一种流程示意图。
图8为待发送数据经过多次写操作的一种时序示意图。
图9为支持支持远程直接数据存取RDMA设备的一种示意图。
具体实施方式
为了使本申请的目的、技术手段和优点更加清楚明白,以下结合附图对本申请做进一步详细说明。
申请人发现,在RDMA的数据存取过程中,从当前WQE到下一WQE之间,等待的时长与发送的数据量大小有关,当数据量超过一定阈值后,发送的数据量越大,等待的时间就越长,这也是RDMA数据传输本身采用异步方式而存在的固有特性。本申请为降低远程直接数据存取时发送时延,对其数据发送过程进行优化,以获得近似同步传输的效果。
本申请结合RDMA的工作原理,将存储有第一待发送数据的缓存区按照每次传输所设定的传输大小进行划分,得到至少两个以上子缓存区,这样,把待发送任务拆分了多个子任务;对于各子缓存区中的第二待发送数据,在向目的端侧发送当前子缓存区中的第二待发送数据之后、且等待获取其完成信息的同时,并行地进行下一子缓存区中的第二待发送数据发送,直至各子缓存区中的第二待发送数据发送完毕。也就是:
将待发送任务拆分为至少两个以上子任务,将各个子任务分别存储于各个子缓存区中,
当第一时刻到达时,向目的端侧发送第一子缓存区中的第一子任务;
当第二时刻到达时,向目的端侧发送第二子缓存区中的第二子任务,所述第二子缓存区为所述第一子缓存区的下一子缓存区;
所述第二时刻在第一时间段内的任一时刻等待,使得各个子缓存区中的各个子任务被批量发送;所述第一时间段为第一子任务被发送至该第一子任务的完成信息被获取的时间段。
参见图3所示,图3为本实施例基于发送/接收操作的RDMA的一种整体传输示意图。通过RDMA应用程序,系统A和B分别创建了各自的工作队列、完成队列,为即将进行的RDMA传输注册了相应的内存区域。系统A识别一段缓冲区,该缓冲区的数据将被搬运到系统B上。系统B分配了一段空的缓冲区,用来存放来自系统A发送的数据。
实施例1:
参见图4所示,图4为本实施例基于发送/接收操作的RDMA传输方法的一种流程示意图。该方法包括,
步骤401,将待发送数据分解成对应多个发送任务;
具体实施方式可以是,将存储有待发送数据的缓存区按照每次传输所设定的传输大小进行划分,得到多个子缓存区,分别为各个子缓存区设置对应的WQE,并填充至发送队列中;其中,各个WQE的指针分别指向其对应的子缓存区地址。
较佳地,对于任一待发送数据,每次传输的传输大小相同,例如,存储有待发送数据的缓存区大小为64k,设定每次传输大小为4k,这样,将产生16个WQE;具体传输大小可以根据需要降低的时延来设计。
步骤402,对当前发送队列中的WQE依次进行处理:
为方便描述,以下结合时序来说明,所应理解的是,具体应用中可根据具体配置情况调整。参见图5所示,图5示出了对多个WQE依次进行处理的一种时序示意图。在第一时序处理当前第一WQE,在该时序中,第一WQE指针所指向的子缓冲区中的数据被发送至接收端;之后,在第二时序进行等待,以等待生成CQE、以及生成的CQE进入到完成队列;
在第二时序,处理第二WQE,在该时序中,第二WQE指针所指向的缓冲区中的数据被发送至接收端;之后,在第三时序进行等待,以等待生成CQE、以及生成的CQE进入到完成队列;
在第三时序,处理第三WQE,在该时序中,第三WQE指针所指向的缓冲区中的数据被发送至接收端;之后,在第四时序进行等待,以等待生成CQE、以及生成的CQE进入到完成队列;
……
以此类推。
步骤403,判断所述待发送数据对应的所有WQE是否处理完毕、并且所有WQE的CQE都进入完成队列,或者,是否达到所处理WQE的最大值,如果是,则执行步骤404,否则,返回步骤402,直至当待发送数据所对应的所有WQE均被处理完毕、并且所有WQE的CQE都进入完成队列。
步骤404,批量处理所有CQE,遍历所有CQE的状态,只要其中任一CQE的状态为失败,则该待发送数据的发送失败,清除所有CQE,并报错。
至此,待发送数据发送结束。
从图5中的发送时序可见,将发送任务分解并进行多次发送,在第一次发送完毕之后等待CQE的同时并行地进行第二次发送,以此类推,在最后一次发送完成之后统一处理完成队列中的CQE,采用这样的方式,屏蔽掉了各次发送完成后等待CQE的时间,理想情况下,只需等待一个分解后的发送任务生成CQE的时间。
参见图6所示,图6为数据大小相同时、现有技术发送和本申请实施例发送方式下延时差异比较的一种示意图。结合图5的时序为例,优化发送过程之前的现有技术发送方式中,发送队列填充一个WQE,对应的缓冲区A中的数据,假设传输缓冲区A中的数据耗时为t,从处理当前WQE到处理下一WQE,延时Δt:
Δt=2C+t
其中,C为一个时序的时长。
而本实施例中,假设缓冲区A中的数据分成4次发送,则每次传输的耗时为t/4,延时Δt:
Figure BDA0002221478720000081
另外,从CQE的处理而言,本发明实施例中将分解后的发送任务每次发送完成后的CQE批量处理,并且,分解后的每个发送任务所耗时很少,这样每次发送相当于是同步发送,而从相邻WQE之间的时延来看,本发明实施例的时延也小于优化前的时延,这样,当前数据与下一数据的发送几乎达到了同步。此外,在本实施例中,采用接收/发送的操作方式,能够避免较为复杂的读写操作,更容易获取到数据传输的状态,使得批量发送、批量处理CQE得以实现。
实施例2:
基于实施例1的构思,本申请还可基于读/写来实现RDMA的数据传输。
参见图7所示,图7为本实施例基于读/写操作的RDMA传输方法的一种流程示意图。对于将源端(发送侧)的待发送数据存储到目的端(接收侧),该方法包括,在待发送数据的源端,
步骤701,初始化上下文(context),注册内存域;建立RDMA连接;
步骤702,按照每次传输所设定的传输大小,将待发送数据分解成对应多个发送任务;
具体实施方式可以是,将存储有待发送数据的缓存区按照每次传输所设定的传输大小分解,得到多个子缓存区,
步骤703,通过接收/发送操作或者通过socket方式,源端与目的端交换包含内存信息的MSG_MR消息;其中,内存信息包括各个子缓存区的读取源地址、写入目的地址、以及访问权限(remote_key),
步骤704,根据待发送数据各个子缓存区的源地址,通过写操作把数据从各个子缓冲区直接推送(push)到目的端工作队列的虚拟空间的连续内存块中,并接收目的端通过发送操作或者通过socket方式返回的MSG_DONE消息,该消息包含有标识数据读取状态的确认信息;
参见图8所示,图8示出了待发送数据经过多次写操作的一种时序示意图。从时序图可见,本申请实施例中,将发送任务分解并进行多次发送,在当前写操作时序的下一时序,则进行下一写操作,采用这样的方式,屏蔽掉了各次发送完成后等待确认信息的时间,理想情况下,只需等待一个确认信息的接收时间。而发送优化之前的现有技术,延时包括了写操作时序之后的若干时序以及接收确认信息的接收时间。
步骤705,判断是否处理完所有子缓存区,或者是否到达发送任务的最大值,如果是,则执行步骤706,否则,返回步骤704;
步骤706,批量处理每次写操作之后所接收的MSG_DONE消息,遍历所有MSG_DONE消息,只要其中任一确认信息为失败,则意味着待发送数据的发送失败,并报错。
至此,待发送数据的发送结束,关闭RDMA连接。
本实施例2通过写操作来实现数据的发送,与本实施例1所不同的是,在RDMA中,读/写属于单边操作,没有发送队列填充步骤,需向目的内存区域写入数据;另外,在进行单边操作之前,需要预先获取对端的注册内存区信息,此信息一般采用socket方式发送,也可以采用发送/接收这样的双边操作的形式进行发送;在完成传输之后,确认信息同样采用socket或者双边操作完成;当这些过程采用双边操作时,需要按照双边操作处理,包括将填充工作队列、以及等待完成队列中的CQE。由于写操作过程中需要源端和目的端之间多次交互,相比而言,实施例1采用发送操作代码实现更为简单,数据的整体传输效率更高,传输的可靠性更好。
参见图9所示,图9为支持支持远程直接数据存取RDMA设备的一种示意图。该设备包括存储器(图中存储区)、处理器以及用于实现RDMA引擎的主机通道适配器,其中,
存储器用于存储指令,该指令在由处理器执行时使得处理器执行本申请实施例基于远程直接数据存取RDMA的传输方法的步骤,使得存储于缓冲区中的第一待发送数据通过主机通道适配器进行传输;
两设备之间基于infiniband(无限带宽)/IB网络连接。
存储器可以包括随机存取存储器(Random Access Memory,RAM),也可以包括非易失性存储器(Non-Volatile Memory,NVM),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(Digital SignalProcessing,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
本发明实施例还提供了一种计算机可读存储介质,所述存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现如下步骤:
在源端侧,
将待发送任务拆分为至少两个以上子任务,将各个子任务分别存储于各个子缓存区中,
当第一时刻到达时,向目的端侧发送第一子缓存区中的第一子任务;
当第二时刻到达时,向目的端侧发送第二子缓存区中的第二子任务,所述第二子缓存区为所述第一子缓存区的下一子缓存区;
所述第二时刻在第一时间段内的任一时刻等待,使得各个子缓存区中的各个子任务被批量发送;所述第一时间段为第一子任务被发送至该第一子任务的完成信息被获取的时间段。
对于装置/网络侧设备/存储介质实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。

Claims (10)

1.一种基于远程直接数据存取RDMA的传输方法,其特征在于,该方法包括,在源端侧,
将待发送任务拆分为至少两个以上子任务,将各个子任务分别存储于各个子缓存区中,
当第一时刻到达时,向目的端侧发送第一子缓存区中的第一子任务;
当第二时刻到达时,向目的端侧发送第二子缓存区中的第二子任务,所述第二子缓存区为所述第一子缓存区的下一子缓存区;
所述第二时刻在第一时间段内的任一时刻等待,使得各个子缓存区中的各个子任务被批量发送;所述第一时间段为第一子任务被发送至该第一子任务的完成信息被获取的时间段。
2.如权利要求1所述的传输方法,其特征在于,所述待发送任务包括待发送数据,所述将待发送任务拆分为至少两个以上子任务包括,将存储有第一待发送数据的缓存区按照每次传输所设定的传输大小进行划分,得到至少两个以上子缓存区,将存储于各个子缓存区中的数据作为第二待发送数据,所述每次传输所设定的传输大小根据需要降低的延时确定;
所述当第一时刻到达时,向目的端侧发送第一子缓存区中的第一子任务,包括,
当第一时刻到达时,将存储于当前子缓存区的第二待发送数据作为第一数据,向目的端侧发送;
所述当第二时刻到达时,向目的端侧发送第二子缓存区中的第二子任务,包括,
当第二时刻到达时,将当前子缓存区的相邻下一子缓存区中的第二待发送数据作为第二数据,向目的端侧发送;所述第一时间段为第一数据被发送至该第一数据的完成信息被获取的时间段。
反复执行所述第二时刻的发送,直至各子缓存区中的第二待发送数据发送完毕。
3.如权利要求2所述的传输方法,其特征在于,该方法进一步包括,各子缓存区中的第二待发送数据发送完毕后,批量处理各子缓存区中的第二待发送数据发送后获取到的所有完成信息,遍历所有完成信息中的传输状态,如果任一完成信息中的传输状态为失败状态,则判定所述第一待发送数据发送失败,上报报错信息。
4.如权利要求3所述的传输方法,其特征在于,所述将存储有第一待发送数据的缓存区按照每次传输所设定的传输大小进行划分,得到至少两个以上子缓存区,进一步包括,分别为各个子缓存区设置对应的工作队列元素WQE,并填充至发送队列中;其中,各个WQE的指针分别指向其对应的子缓存区地址;
所述完成信息包括,为当前完成的发送而生成的完成队列元素CQE;
所述第一时间包括,从处理当前WQE、且当前WQE指针所指向的子缓冲区中的第二待发送数据通过RDMA的发送操作进行发送的结束时刻,到生成的CQE进入完成队列的时间段;
所述当第一时刻到达时,将存储于当前子缓存区的第二待发送数据作为第一数据,向目的端侧发送,包括,
对当前发送队列中的各个WQE依次进行处理:
处理当前WQE;
所述当第二时刻到达时,将当前子缓存区的相邻下一子缓存区中的第二待发送数据作为第二数据,向目的端侧发送,包括,
在所述从处理当前WQE、且当前WQE指针所指向的子缓冲区中的第二待发送数据通过RDMA的发送操作进行发送至目的端侧结束,到生成的CQE进入完成队列的第一时间内的任一时刻,处理下一WQE。
5.如权利要求4所述的传输方法,其特征在于,所述在所述从处理当前WQE、且当前WQE指针所指向的子缓冲区中的第二待发送数据通过RDMA的发送操作进行发送至目的端侧结束,到生成的CQE进入完成队列的第一时间内的任一时刻,处理下一WQE,包括,
在处理当前WQE时序的下一相邻时序,处理下一WQE。
6.如权利要求4或5所述的传输方法,其特征在于,所述直至各子缓存区中的第二待发送数据发送完毕,包括,
判断所述各个WQE是否处理完毕、并且各个WQE的CQE都进入完成队列,或者,判断是否达到所处理WQE的最大值,
如果是,则执行所述对当前发送队列中的各个WQE依次进行处理的步骤,
否则,执行所述批量处理各子缓存区中的第二待发送数据发送后获取到的所有完成信息的步骤。
7.如权利要求3所述的传输方法,其特征在于,所述将存储有第一待发送数据的缓存区按照每次传输所设定的传输大小进行划分,得到至少两个以上子缓存区,进一步包括,通过RDMA的接收和/或发送操作或者通过套接字socket方式,源端侧与目的端侧交换包含内存信息的消息;其中,内存信息包括各子缓冲区读取源地址、写入的目的地址、以及访问权限;
所述完成信息包括,来自目的端侧包含数据读写状态的确认信息;
所述第一时间包括,从通过当前RDMA的写操作把当前子缓冲区中的第二待发送数据直接推送push到目的端工作队列的结束时刻,到接收到其完成信息的时间段;
所述当第一时刻到达时,将存储于当前子缓存区的第二待发送数据作为第一数据,向目的端侧发送,包括,
根据当前子缓存区的源地址,通过当前写操作,把该子缓冲区中的第二待发送数据直接推送到目的端工作队列的虚拟空间的内存块中,
所述当第二时刻到达时,将当前子缓存区的相邻下一子缓存区中的第二待发送数据作为第二数据,向目的端侧发送,包括,
在所述从通过当前写操作把当前子缓冲区中的第二待发送数据直接推送push到目的端工作队列的结束时刻,到接收到其完成信息的第一时间段中的任一时刻,根据下一子缓存区的源地址,通过下一写操作,把该子缓冲区中的第二待发送数据直接推送到目的端工作队列的虚拟空间的内存块中。
8.如权利要求7所述的传输方法,其特征在于,所述在所述从通过当前写操作把当前子缓冲区中的第二待发送数据直接推送push到目的端工作队列的结束时刻,到接收到其完成信息的第一时间段中的任一时刻,根据下一子缓存区的源地址,通过下一写操作,把该子缓冲区中的第二待发送数据直接推送到目的端工作队列的虚拟空间的内存块中,包括,
在当前写操作时序的下一相邻时序,进行下一写操作。
9.如权利要求7或8所述的传输方法,其特征在于,所述直至各子缓存区中的第二待发送数据发送完毕,包括,
判断各个子缓存区是否处理完毕,或者是否达到发送次数的最大值,
如果是,则执行所述根据当前子缓存区的源地址,通过当前写操作,把该子缓冲区中的第二待发送数据直接推送到目的端工作队列的虚拟空间的内存块中,
否则,执行所述批量处理各子缓存区中的第二待发送数据发送后获取到的所有完成信息的步骤。
10.一种支持远程直接数据存取RDMA的设备,其特征在于,该设备包括存储器、处理器以及用于实现RDMA引擎的主机通道适配器,其中,
存储器用于存储指令,该指令在由处理器执行时使得处理器执行如权利要求1至7任一所述的基于远程直接数据存取RDMA的传输方法的步骤,使得存储于缓冲区中的第一待发送数据通过主机通道适配器进行传输。
CN201910935454.0A 2019-09-29 2019-09-29 一种基于远程直接数据存取的传输方法、设备 Active CN111400212B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910935454.0A CN111400212B (zh) 2019-09-29 2019-09-29 一种基于远程直接数据存取的传输方法、设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910935454.0A CN111400212B (zh) 2019-09-29 2019-09-29 一种基于远程直接数据存取的传输方法、设备

Publications (2)

Publication Number Publication Date
CN111400212A true CN111400212A (zh) 2020-07-10
CN111400212B CN111400212B (zh) 2022-02-08

Family

ID=71435864

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910935454.0A Active CN111400212B (zh) 2019-09-29 2019-09-29 一种基于远程直接数据存取的传输方法、设备

Country Status (1)

Country Link
CN (1) CN111400212B (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113395359A (zh) * 2021-08-17 2021-09-14 苏州浪潮智能科技有限公司 基于远程直接内存访问的文件币集群数据传输方法、系统
CN113867940A (zh) * 2021-09-07 2021-12-31 苏州浪潮智能科技有限公司 一种内存管理方法和相关装置
CN114584492A (zh) * 2022-02-15 2022-06-03 珠海星云智联科技有限公司 一种延时测量方法、系统以及相关设备
CN116582492A (zh) * 2023-07-14 2023-08-11 珠海星云智联科技有限公司 优化rdma读取的拥塞控制方法、系统及存储介质

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1520111A (zh) * 2003-09-02 2004-08-11 ����ͨѶ�ɷ����޹�˾ 局域网内的数据传输方法
CN101018101A (zh) * 2006-02-10 2007-08-15 华为技术有限公司 数据传输方法和系统及数据发送和接收装置
CN102970107A (zh) * 2012-11-14 2013-03-13 北京经纬恒润科技有限公司 数据包传输过程中断点续存的方法及装置
CN103645994A (zh) * 2013-11-05 2014-03-19 华为技术有限公司 一种数据处理方法及设备
CN105893323A (zh) * 2016-05-23 2016-08-24 华为技术有限公司 一种读数据的方法及设备
CN106411767A (zh) * 2011-06-29 2017-02-15 微软技术许可有限责任公司 通过远程直接存储器访问的任意大小的传输操作
CN107346997A (zh) * 2016-11-24 2017-11-14 天地融科技股份有限公司 一种数据传输方法以及终端
CN107678892A (zh) * 2017-11-07 2018-02-09 黄淮学院 基于跳跃恢复链的连续数据保护方法
US10216652B1 (en) * 2012-06-29 2019-02-26 EMC IP Holding Company LLC Split target data transfer
CN110120980A (zh) * 2019-05-27 2019-08-13 牧星机器人(江苏)有限公司 非稳定链路的可靠文件传输方法、计算机设备及存储介质

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1520111A (zh) * 2003-09-02 2004-08-11 ����ͨѶ�ɷ����޹�˾ 局域网内的数据传输方法
CN101018101A (zh) * 2006-02-10 2007-08-15 华为技术有限公司 数据传输方法和系统及数据发送和接收装置
CN106411767A (zh) * 2011-06-29 2017-02-15 微软技术许可有限责任公司 通过远程直接存储器访问的任意大小的传输操作
US10216652B1 (en) * 2012-06-29 2019-02-26 EMC IP Holding Company LLC Split target data transfer
CN102970107A (zh) * 2012-11-14 2013-03-13 北京经纬恒润科技有限公司 数据包传输过程中断点续存的方法及装置
CN103645994A (zh) * 2013-11-05 2014-03-19 华为技术有限公司 一种数据处理方法及设备
CN105893323A (zh) * 2016-05-23 2016-08-24 华为技术有限公司 一种读数据的方法及设备
CN107346997A (zh) * 2016-11-24 2017-11-14 天地融科技股份有限公司 一种数据传输方法以及终端
CN107678892A (zh) * 2017-11-07 2018-02-09 黄淮学院 基于跳跃恢复链的连续数据保护方法
CN110120980A (zh) * 2019-05-27 2019-08-13 牧星机器人(江苏)有限公司 非稳定链路的可靠文件传输方法、计算机设备及存储介质

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113395359A (zh) * 2021-08-17 2021-09-14 苏州浪潮智能科技有限公司 基于远程直接内存访问的文件币集群数据传输方法、系统
CN113395359B (zh) * 2021-08-17 2021-10-29 苏州浪潮智能科技有限公司 基于远程直接内存访问的文件币集群数据传输方法、系统
CN113867940A (zh) * 2021-09-07 2021-12-31 苏州浪潮智能科技有限公司 一种内存管理方法和相关装置
CN113867940B (zh) * 2021-09-07 2024-01-12 苏州浪潮智能科技有限公司 一种内存管理方法和相关装置
CN114584492A (zh) * 2022-02-15 2022-06-03 珠海星云智联科技有限公司 一种延时测量方法、系统以及相关设备
CN116582492A (zh) * 2023-07-14 2023-08-11 珠海星云智联科技有限公司 优化rdma读取的拥塞控制方法、系统及存储介质
CN116582492B (zh) * 2023-07-14 2023-09-26 珠海星云智联科技有限公司 优化rdma读取的拥塞控制方法、系统及存储介质

Also Published As

Publication number Publication date
CN111400212B (zh) 2022-02-08

Similar Documents

Publication Publication Date Title
CN111400212B (zh) 一种基于远程直接数据存取的传输方法、设备
CN110647480B (zh) 数据处理方法、远程直接访存网卡和设备
CN109690510B (zh) 用于将数据分发到高性能计算网络和基于云的网络中的多个接收器的多播装置和方法
US6615282B1 (en) Adaptive messaging
KR102082020B1 (ko) 다수의 링크된 메모리 리스트들을 사용하기 위한 방법 및 장치
US8732360B2 (en) System and method for accessing memory
US20190079895A1 (en) System and method for maximizing bandwidth of pci express peer-to-peer (p2p) connection
US20190068501A1 (en) Throttling for bandwidth imbalanced data transfers
US20150288624A1 (en) Low-latency processing in a network node
EP1883240A1 (en) Distributed multi-media server system, multi-media information distribution method, program thereof, and recording medium
US11822811B2 (en) Method, electronic device and computer program product for processing data
US7447872B2 (en) Inter-chip processor control plane communication
CN112445735A (zh) 一种联邦学习数据传输方法、计算机设备、系统及存储介质
US10489322B2 (en) Apparatus and method to improve performance in DMA transfer of data
CN108632166B (zh) 一种基于dpdk的收包二级缓存方法及系统
CN116521096B (zh) 存储器访问电路及存储器访问方法、集成电路和电子设备
CN116578245B (zh) 存储器访问电路及存储器访问方法、集成电路和电子设备
US9804959B2 (en) In-flight packet processing
CN116471242A (zh) 基于rdma的发送端、接收端、数据传输系统及方法
US20160055111A1 (en) Using a credits available value in determining whether to issue a ppi allocation request to a packet engine
MacArthur et al. An efficient method for stream semantics over rdma
US7254654B1 (en) Split-FIFO multi-station data transfer system
CN116594570B (zh) 存储器访问电路及存储器访问方法、集成电路和电子设备
US9548947B2 (en) PPI de-allocate CPP bus command
CN116521097B (zh) 存储器访问电路及存储器访问方法、集成电路和电子设备

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant