CN112422244B - 基于流量负载预测的rdma缓冲区动态分配方法 - Google Patents
基于流量负载预测的rdma缓冲区动态分配方法 Download PDFInfo
- Publication number
- CN112422244B CN112422244B CN201910771718.3A CN201910771718A CN112422244B CN 112422244 B CN112422244 B CN 112422244B CN 201910771718 A CN201910771718 A CN 201910771718A CN 112422244 B CN112422244 B CN 112422244B
- Authority
- CN
- China
- Prior art keywords
- rdma
- buffer
- initiator
- request
- avg
- 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.)
- Active
Links
- 239000000872 buffer Substances 0.000 title claims abstract description 179
- 238000000034 method Methods 0.000 title claims abstract description 25
- 239000003999 initiator Substances 0.000 claims abstract description 77
- 230000004044 response Effects 0.000 claims abstract description 19
- 238000004364 calculation method Methods 0.000 claims description 6
- 238000005070 sampling Methods 0.000 claims description 4
- 239000000284 extract Substances 0.000 claims description 3
- 230000000977 initiatory effect Effects 0.000 description 5
- 238000004891 communication Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 239000002699 waste material Substances 0.000 description 2
- 238000010586 diagram Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000013589 supplement Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/70—Admission control; Resource allocation
- H04L47/83—Admission control; Resource allocation based on usage prediction
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/70—Admission control; Resource allocation
- H04L47/72—Admission control; Resource allocation using reservation actions during connection setup
- H04L47/722—Admission control; Resource allocation using reservation actions during connection setup at the destination endpoint, e.g. reservation of terminal resources or buffer space
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L5/00—Arrangements affording multiple use of the transmission path
- H04L5/003—Arrangements for allocating sub-channels of the transmission path
- H04L5/0078—Timing of allocation
- H04L5/0082—Timing of allocation at predetermined intervals
Landscapes
- Engineering & Computer Science (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开一种基于流量负载预测的RDMA缓冲区动态分配方法,包括以下步骤:S1、检查RDMA被动方是否有可用的RDMA缓冲区;S2、检查未使用的RDMA缓冲区的个数及armed是否为0;S3、RDMA被动方若在规定时间内没有分配任何RDMA缓冲区,则发送一条控制消息将TSER告知RDMA发起方;S4、RDMA发起方不断测量RDMA请求时间间隔、分配RDMA缓冲区的请求/应答时间;S5、根据获得的at和rtt,计算获得加权平均RDMA请求时间间隔avg_at和分配RDMA缓冲区的请求/应答时间间隔avg_rtt;S6、根据avg_at和avg_rtt计算并更新rbuf_thresh的大小。本发明实现对RDMA缓冲区的动态分配,在保证网络高带宽的同时,可以显著降低预先分配的RDMA缓冲区数量,降低内存消耗量。
Description
技术领域
本发明涉及一种基于流量负载预测的RDMA缓冲区动态分配方法,属于计算机技术领域。
背景技术
包括IB在内的基于交换的互连网络架构,均提供Send/Receive、RDMA Write、RDMARead等数据传输类型。其中Send/Receive操作类似于socket编程中的send/receive语义,可以将发送方指定的数据写入接收方指定的接收缓冲区。而RDMA Write、RDMA Read等操作(下文将合称RDMA操作)可以将发送方指定的数据写入发送方指定的远程接收缓冲区,而不需要远程主机的参与,从而为上层软件提供了直接访问远程内存的编程语义,成为IBVerbs等编程接口的最常用操作类型。
RDMA操作的使用流程如下(以RDMA Write为例):
(1)RDMA被动方首先注册用于接收数据的RDMA缓冲区,并将RDMA缓冲区信息告知发送方;
(2)RDMA发送方向发送队列(Send Queue,SQ)投递发送请求,其中指定了发送缓冲区信息、接收方的RDMA缓冲区信息等;
(3)RDMA发起方的消息处理引擎从SQ中读取发送请求,从发送缓冲区取数据,并组织成数据报文传递到RDMA被动方(该包中携带有接收方接收缓冲区地址信息),然后在本地完成队列(Complete Queue,CQ)中产生完成信息CQE;
(4)RDMA被动方消息处理引擎收到数据后,根据数据报文中的接收缓冲区地址信息,直接将数据写入该接收缓冲区;
(5)RDMA Write操作完成后,在RDMA被动方不产生完成信息条目CQE;需要通过其它方式通知被动方该RDMA Write操作的完成,最常用的方式是发送方发送一条Send/Receive消息进行确认。
在利用RDMA操作进行通信时,RDMA操作的被动方首先需要分配RDMA缓冲区,并将其虚地址、存储句柄等信息告知RDMA操作发起方,从而引入了额外的消息延迟。一般采用预先分配大量RDMA缓冲区的方法来消除上述额外延迟。在通信负载较小的情况下,预先分配大量RDMA缓冲区会造成RDMA缓冲区的利用率较低,造成内存浪费。
利用RDMA操作进行通信时,RDMA操作的被动方首先需要分配用于存放接收数据的RDMA缓冲区,并将RDMA缓冲区的虚地址、存储句柄等信息告知RDMA操作发送方。分配RDMA缓冲区的策略具体有以下两种:一种是实时分配方法,即RDMA操作发起方在进行RDMA操作前,先通过控制消息向RDMA操作的被动方申请创建RDMA缓冲区,RDMA被动方收到该请求后,分配RDMA缓冲区,并通过另外一条控制消息将RDMA缓冲区信息返回给RDMA操作发起方;该方法的缺点是:RDMA发起方需要等待被动方分配好RDMA缓冲区,然后才能进行RDMA操作,从而引入了额外的消息延迟。另一种是预先分配方法,即RDMA被动方预先分配固定数量的RDMA缓冲区,并将这些RDMA缓冲区的信息公告给RDMA操作发起方,从而使RDMA操作发起方不用等待就可立即发起RDMA操作。每消耗一个RDMA缓冲区,RDMA被动方都要即时补充一个新的RDMA缓冲区;该方法的缺点是:需要事先分配大量的RDMA缓冲区,以防止出现RDMA缓冲区不够用的情况,而在负载较低的情况下,这会造成RDMA缓冲区占用大量内存的情况,造成内存浪费。
发明内容
本发明的目的是提供一种基于流量负载预测的RDMA缓冲区动态分配方法,该基于流量负载预测的RDMA缓冲区动态分配方法实现对RDMA缓冲区的动态分配,在保证网络高带宽的同时,可以显著降低预先分配的RDMA缓冲区数量,降低内存消耗量。
为达到上述目的,本发明采用的技术方案是:一种基于流量负载预测的RDMA缓冲区动态分配方法,包括以下步骤:
S1、RDMA发起方记录该RDMA操作与上一个RDMA操作的时间间隔,即RDMA请求时间间隔(arrive time,at);
S2、RDMA发起方检查本地保存的RDMA缓冲区列表,此RDMA缓冲区列表中包含了RDMA被动方为该RDMA发起方分配的所有可用RDMA缓冲区,判断RDMA被动方是否有可用的RDMA缓冲区,如果有,则RDMA发起方直接向RDMA被动方发送发起RDMA操作,利用该RDMA缓冲区进行RDMA操作,如果没有,则RDMA发起方将RDMA操作进行缓存,并向RDMA被动方发送分配RDMA缓冲区的请求(ReqMoreRbuf请求),该请求中包含RDMA被动方任意时刻需保持的最小RDMA缓冲区数量(rbuf_thresh值),还包含RDMA操作发起时的时间戳TSV,所述RDMA被动方设置一个armed标记位和一个TSER时间戳变量,并将armed标记位的初始值设置为0,当armed标记位为1表示RDMA被动方收到了ReqMoreRbuf请求但还未对其发送应答消息,TSER时间戳变量用于记录收到的ReqMoreRbuf请求携带的TSV时间戳;
S3、RDMA被动方在收到ReqMoreRbuf请求时,首先检查armed的值,若armed标记置为0,则将armed标记位置1,并将TSER设置为收到的ReqMoreRbuf请求的TSV,然后检查分配给该RDMA发起方的未使用的RDMA缓冲区的个数,如果其未使用的RDMA缓冲区个数小于RDMA发起方发布的rbuf_thresh,则立即分配新的RDMA缓冲区,并将新分配的RDMA缓冲区信息(RbufAdvertise消息)公告给RDMA发起方,以确保任意时刻未使用的RDMA缓冲区数大于等于rbuf_thresh,并将armed标记置为0,所述RbufAdvertise消息携带了RDMA被动方的armed、TSER的数值,如果其未使用的RDMA缓冲区个数不小于RDMA发起方发布的rbuf_thresh,则RDMA被动方不做任何操作;
S4、RDMA被动方若在规定时间内没有向RDMA发起方发送任何RbufAdvertise消息,则发送一条RbufAdvertise消息将TSER告知RDMA发起方;
S5、RDMA发起方收到RDMA被动方发来的RbufAdvertise消息后,首先检查该RbufAdvertise消息的armed标记,若为1,计算分配RDMA缓冲区的请求/应答时间(roundtrip time,rtt)=当前时间-TSER,然后提取RbufAdvertise消息携带的RDMA缓冲区信息,并放入RDMA发起方本地的RDMA缓冲区列表,然后重新启动S1中缓存的RDMA操作;
S6、RDMA发起方根据获得的at和rtt,计算获得加权平均RDMA请求时间间隔avg_at和分配RDMA缓冲区的加权平均请求/应答时间间隔avg_rtt;
S7、根据avg_at和avg_rtt计算并更新rbuf_thresh的大小;
S8、RDMA发起方完成RDMA操作后,向RDMA被动方发送通知(RdmaFinish消息),该RdmaFinish消息携带S7计算出的rbuf_thresh;
S9、RDMA被动方在收到RdmaFinish消息后,检查分配给该RDMA发起方的未使用的RDMA缓冲区的个数,如果其未使用的RDMA缓冲区个数小于RDMA发起方发布的rbuf_thresh,则立即分配新的RDMA缓冲区,并将新分配的RDMA缓冲区信息通过RbufAdvertise消息公告给RDMA发起方,以确保任意时刻未使用的RDMA缓冲区数大于等于rbuf_thresh,并将armed标记置为0。
上述技术方案中进一步改进的方案如下:
1.上述方案中,在S2中,rbuf_thresh值由RDMA发起方根据发送端流量负载情况动态调整。
2.上述方案中,在S1中,RDMA请求时间间隔at的计算公式为: 其中是该RDMA消息与上一个RDMA消息时间间隔,at_min是一个常数,设置为完成一个RDMA所需的最短时间,即at_min=RDMA缓冲区长度/网络带宽。
3.上述方案中,在S6中,加权平均RDMA请求时间间隔avg_at的计算公式为:avg_at←min(α×avg_at+(1-α)×at,β×avg_at),其中α是介于0.8~0.9的一个常量,β是介于1~1.5的常量。
4.上述方案中,在S6中,分配RDMA缓冲区的加权平均请求/应答时间间隔avg_rtt的计算公式为:avg_rtt←min(α×avg_rtt+(1-α)×rtt,β×avg_rtt),其中α是介于0.8~0.9的一个常量,β是介于1~1.5的常量。
5.上述方案中,所述RDMA发起方每隔一段固定的时间就主动发出一个申请RDMA缓冲区的请求,以提高rtt采样频率。
6.上述方案中,在S7中,rbuf_thresh的计算公式为:rbuf_thresh←min(rbuf_max,max(2,(avg_rtt)/(avg_at))),其中rbuf_max表示最大的rbuf数。
7.上述方案中,在S4中,规定时间内为50微秒内。
由于上述技术方案的运用,本发明与现有技术相比具有下列优点:
本发明基于流量负载预测的RDMA缓冲区动态分配方法,其根据流量负载变化动态分配RDMA缓冲区,从而实现对RDMA缓冲区的动态分配,在保证网络高带宽的同时,可以显著降低预先分配的RDMA缓冲区数量,降低内存消耗量。
附图说明
附图1为RDMA Write操作的使用流程图;
附图2为本发明基于流量负载预测的RDMA缓冲区动态分配方法流程图。
具体实施方式
实施例:一种基于流量负载预测的RDMA缓冲区动态分配方法,包括以下步骤:
S1、RDMA发起方记录该RDMA操作与上一个RDMA操作的时间间隔,即RDMA请求时间间隔(arrive time,at);
S2、RDMA发起方检查本地保存的RDMA缓冲区列表,此RDMA缓冲区列表中包含了RDMA被动方为该RDMA发起方分配的所有可用RDMA缓冲区,判断RDMA被动方是否有可用的RDMA缓冲区,如果有,则RDMA发起方直接向RDMA被动方发送发起RDMA操作,利用该RDMA缓冲区进行RDMA操作,如果没有,则RDMA发起方将RDMA操作进行缓存,并向RDMA被动方发送分配RDMA缓冲区的请求(ReqMoreRbuf请求),该请求中包含RDMA被动方任意时刻需保持的最小RDMA缓冲区数量(rbuf_thresh值),还包含RDMA操作发起时的时间戳TSV,所述RDMA被动方设置一个armed标记位和一个TSER时间戳变量,并将armed标记位的初始值设置为0,当armed标记位为1表示RDMA被动方收到了ReqMoreRbuf请求但还未对其发送应答消息,TSER时间戳变量用于记录收到的ReqMoreRbuf请求携带的TSV时间戳;
S3、RDMA被动方在收到ReqMoreRbuf请求时,首先检查armed的值,若armed标记置为0,则将armed标记位置1,并将TSER设置为收到的ReqMoreRbuf请求的TSV,然后检查分配给该RDMA发起方的未使用的RDMA缓冲区的个数,如果其未使用的RDMA缓冲区个数小于RDMA发起方发布的rbuf_thresh,则立即分配新的RDMA缓冲区,并将新分配的RDMA缓冲区信息(RbufAdvertise消息)公告给RDMA发起方,以确保任意时刻未使用的RDMA缓冲区数大于等于rbuf_thresh,并将armed标记置为0,所述RbufAdvertise消息携带了RDMA被动方的armed、TSER的数值,如果其未使用的RDMA缓冲区个数不小于RDMA发起方发布的rbuf_thresh,则RDMA被动方不做任何操作;
S4、RDMA被动方若在规定时间内没有向RDMA发起方发送任何RbufAdvertise消息,则发送一条RbufAdvertise消息将TSER告知RDMA发起方;
S5、RDMA发起方收到RDMA被动方发来的RbufAdvertise消息后,首先检查该RbufAdvertise消息的armed标记,若为1,计算分配RDMA缓冲区的请求/应答时间(roundtrip time,rtt)=当前时间-TSER,然后提取RbufAdvertise消息携带的RDMA缓冲区信息,并放入RDMA发起方本地的RDMA缓冲区列表,然后重新启动S1中缓存的RDMA操作;
S6、RDMA发起方根据获得的at和rtt,计算获得加权平均RDMA请求时间间隔avg_at和分配RDMA缓冲区的加权平均请求/应答时间间隔avg_rtt;
S7、根据avg_at和avg_rtt计算并更新rbuf_thresh的大小;
S8、RDMA发起方完成RDMA操作后,向RDMA被动方发送通知(RdmaFinish消息),该RdmaFinish消息携带S7计算出的rbuf_thresh;
S9、RDMA被动方在收到RdmaFinish消息后,检查分配给该RDMA发起方的未使用的RDMA缓冲区的个数,如果其未使用的RDMA缓冲区个数小于RDMA发起方发布的rbuf_thresh,则立即分配新的RDMA缓冲区,并将新分配的RDMA缓冲区信息通过RbufAdvertise消息公告给RDMA发起方,以确保任意时刻未使用的RDMA缓冲区数大于等于rbuf_thresh,并将armed标记置为0。
在S2中,rbuf_thresh值由RDMA发起方根据发送端流量负载情况动态调整。
在S1中,RDMA请求时间间隔at的计算公式为:其中是该RDMA消息与上一个RDMA消息时间间隔,at_min是一个常数,设置为完成一个RDMA所需的最短时间,即at_min=RDMA缓冲区长度/网络带宽。
在S6中,加权平均RDMA请求时间间隔avg_at的计算公式为:avg_at←min(α×avg_at+(1-α)×at,β×avg_at),其中α是介于0.8~0.9的一个常量,β是介于1~1.5的常量。
在S6中,分配RDMA缓冲区的加权平均请求/应答时间间隔avg_rtt的计算公式为:avg_rtt←min(α×avg_rtt+(1-α)×rtt,β×avg_rtt),其中α是介于0.8~0.9的一个常量,β是介于1~1.5的常量。
上述RDMA发起方每隔一段固定的时间就主动发出一个申请RDMA缓冲区的请求,以提高rtt采样频率。
在S7中,rbuf_thresh的计算公式为:rbuf_thresh←min(rbuf_max,max(2,(avg_rtt)/(avg_at))),其中rbuf_max表示最大的rbuf数。
在S4中,规定时间内为50微秒内。
实施例进一步解释如下:
通过测量RDMA请求平均到达时间间隔avg_at及分配RDMA缓冲区的请求/应答时间间隔avg_rtt,并根据avg_at及avg_rtt预测所需的RDMA缓冲区数量。
RDMA发起方在发起RDMA操作时,首先检查是否有可用的RDMA缓冲区;如果有,则直接利用该RDMA缓冲区进行RDMA操作;如果没有,则向RDMA被动方发送分配RDMA缓冲区的请求。不论是发起的RDMA操作,还是发出的分配RDMA缓冲区请求,都携带一个rbuf_thresh,RDMA被动方必须确保任意时刻可用的rbuf数大于等于rbuf_thresh。
RDMA被动方在收到分配RDMA缓冲区请求或RDMA操作已完成的通知后,都检查未使用的RDMA缓冲区的个数,如果其个数小于RDMA发起方发布的rbuf_thresh,则立即补充新的RDMA缓冲区,并将新分配的RDMA缓冲区信息公告给RDMA发起方。
RDMA发起方不断测量RDMA请求时间间隔(下文简称为arrive time,at)、分配RDMA缓冲区的请求/应答时间(下文简称为roundtrip time,rtt),并根据at及rtt预测通信负载大小,进而不断调整rbuf_thresh的大小,从而使RDMA被动方能够按需动态分配RDMA缓冲区。
测量RDMA请求平均到达时间间隔avg_at的方法:
每次发起RDMA操作时,分别利用下面的公式1、公式2计算其到达时间间隔at及加权平均到达时间间隔avg_at:
公式2:avg_at←min(α×avg_at+(1-α)×at,β×avg_at),其中α是介于0.8~0.9的一个常量,β是介于1~1.5的常量,设置β的目的是防止avg_at剧烈扩大。该公式保证每次avg_at的变动在[α,β]范围之内。
测量分配RDMA缓冲区的请求/应答时间间隔avg_rtt的方法:
RDMA发起方发出的每个分配RDMA缓冲区的请求中均带有时间戳TSV;
RDMA被动方维护一个armed标记位、一个TSER时间戳变量,初始化时armed为0;
当被动方收到分配RDMA缓冲区的请求时,检查armed是否为0,若为0,则将TSER更新为该请求携带的时间戳TSV,并置armed为1;
当被动方公告RDMA缓冲区信息时,将armed、TSER一起返回给RDMA发起方,并修改armed为0;
当RDMA发起方收到RDMA缓冲区信息时,检查armed标记,若为1,则计算rtt(当前时间-TSER),然后利用下面的公式3更新avg_rtt:
公式3:avg_rtt←min(α×avg_rtt+(1-α)×rtt,β×avg_rtt);
为了提高rtt采样频率,采用两种机制:一是主动方每隔一段固定的时间就主动发出一个申请RDMA缓冲区的请求;二是每条RDMA完成通知中都携带申请RDMA缓冲区的请求。
被动方在收到分配RDMA缓冲区的请求后,如果发现可用的RDMA缓冲区不小于rbuf_thresh,则不会分配新的RDMA缓冲区,从而不会向RDMA发起方更新其TSER等信息,从而导致RDMA发起方测量的rtt增大。为防止该情况的发生,RDMA被动方若在规定时间内没有分配任何RDMA缓冲区,则需要发送一条控制消息将TSER告知主动方。
rbuf_thresh计算方法:
RDMA发起方按下面的公式4不断调整rbuf_thresh的大小:
公式4:rbuf_thresh←min(rbuf_max,max(2,(avg_rtt)/(avg_at))),其中rbuf_max表示最大的rbuf数。
采用上述基于流量负载预测的RDMA缓冲区动态分配方法时,其根据流量负载变化动态分配RDMA缓冲区,从而实现对RDMA缓冲区的动态分配,在保证网络高带宽的同时,可以显著降低预先分配的RDMA缓冲区数量,降低内存消耗量。
为了便于更好的理解本发明,下面将对本文中使用的术语进行简要的解释:
Remote Direct Memory Access(RDMA):一种不需要远程CPU参与而直接对远程系统的内存进行访问的方法。
RDMA Write:RDMA技术中的一种操作类型,发送方可以直接将数据写入远程方系统的主存中。
RDMA Read:RDMA技术中的一种操作类型,发送方可以直接从远程方主存中读取数据。
RDMA Buffer(rbuf):RDMA操作中远程方系统的数据缓冲区。
RDMA发起方:RDMA操作的发起方,也即投递RDMA请求的一方。
RDMA被动方:RDMA操作的被动方,也即RDMA操作的远程方。
IB:InfiniBand(直译为“无限带宽”技术)是一个用于高性能计算的计算机网络通信标准,它具有极高的吞吐量和极低的延迟,用于计算机与计算机之间的数据互连。InfiniBand也用作服务器与存储系统之间的直接或交换互连,以及存储系统之间的互连。
Socket:套接字,是一个抽象层,应用程序可以通过它发送或接收数据,可对其进行像对文件一样的打开、读写和关闭等操作。
上述实施例只为说明本发明的技术构思及特点,其目的在于让熟悉此项技术的人士能够了解本发明的内容并据以实施,并不能以此限制本发明的保护范围。凡根据本发明精神实质所作的等效变化或修饰,都应涵盖在本发明的保护范围之内。
Claims (7)
1.一种基于流量负载预测的RDMA缓冲区动态分配方法,其特征在于:包括以下步骤:
S1、RDMA发起方记录该RDMA操作与上一个RDMA操作的时间间隔at,即RDMA请求时间间隔;
S2、RDMA发起方检查本地保存的RDMA缓冲区列表,此RDMA缓冲区列表中包含了RDMA被动方为该RDMA发起方分配的所有可用RDMA缓冲区,判断RDMA被动方是否有可用的RDMA缓冲区,如果有,则RDMA发起方直接向RDMA被动方发送发起RDMA操作,利用该RDMA缓冲区进行RDMA操作,如果没有,则RDMA发起方将RDMA操作进行缓存,并向RDMA被动方发送ReqMoreRbuf请求,即分配RDMA缓冲区的请求,该请求中包含RDMA被动方任意时刻需保持的最小rbuf_thresh值,即RDMA缓冲区数量,还包含RDMA操作发起时的时间戳TSV,所述RDMA被动方设置一个armed标记位和一个TSER时间戳变量,并将armed标记位的初始值设置为0,当armed标记位为1表示RDMA被动方收到了ReqMoreRbuf请求但还未对其发送应答消息,TSER时间戳变量用于记录收到的ReqMoreRbuf请求携带的TSV时间戳,rbuf_thresh值由RDMA发起方根据发送端流量负载情况动态调整;
S3、RDMA被动方在收到ReqMoreRbuf请求时,首先检查armed的值,若armed标记置为0,则将armed标记位置1,并将TSER设置为收到的ReqMoreRbuf请求的TSV,然后检查分配给该RDMA发起方的未使用的RDMA缓冲区的个数,如果其未使用的RDMA缓冲区个数小于RDMA发起方发布的rbuf_thresh,则立即分配新的RDMA缓冲区,并将新分配的RbufAdvertise消息,即RDMA缓冲区信息公告给RDMA发起方,以确保任意时刻未使用的RDMA缓冲区数大于等于rbuf_thresh,并将armed标记置为0,所述RbufAdvertise消息携带了RDMA被动方的armed、TSER的数值,如果其未使用的RDMA缓冲区个数不小于RDMA发起方发布的rbuf_thresh,则RDMA被动方不做任何操作;
S4、RDMA被动方若在规定时间内没有向RDMA发起方发送任何RbufAdvertise消息,则发送一条RbufAdvertise消息将TSER告知RDMA发起方;
S5、RDMA发起方收到RDMA被动方发来的RbufAdvertise消息后,首先检查该RbufAdvertise消息的armed标记,若为1,计算分配RDMA缓冲区的请求/应答时间(roundtrip time,rtt)=当前时间-TSER,然后提取RbufAdvertise消息携带的RDMA缓冲区信息,并放入RDMA发起方本地的RDMA缓冲区列表,然后重新启动S1中缓存的RDMA操作;
S6、RDMA发起方根据获得的at和rtt,计算获得加权平均RDMA请求时间间隔avg_at和分配RDMA缓冲区的加权平均请求/应答时间间隔avg_rtt;
S7、根据avg_at和avg_rtt计算并更新rbuf_thresh的大小;
S8、RDMA发起方完成RDMA操作后,向RDMA被动方发送RdmaFinish消息,该RdmaFinish消息携带S7计算出的rbuf_thresh;
S9、RDMA被动方在收到RdmaFinish消息后,检查分配给该RDMA发起方的未使用的RDMA缓冲区的个数,如果其未使用的RDMA缓冲区个数小于RDMA发起方发布的rbuf_thresh,则立即分配新的RDMA缓冲区,并将新分配的RDMA缓冲区信息通过RbufAdvertise消息公告给RDMA发起方,以确保任意时刻未使用的RDMA缓冲区数大于等于rbuf_thresh,并将armed标记置为0。
3.根据权利要求1所述的基于流量负载预测的RDMA缓冲区动态分配方法,其特征在于:在S6中,加权平均RDMA请求时间间隔avg_at的计算公式为:avg_at←min(α×avg_at+(1-α)×at,β×avg_at),其中α是介于0.8~0.9的一个常量,β是介于1~1.5的常量。
4.根据权利要求1所述的基于流量负载预测的RDMA缓冲区动态分配方法,其特征在于:在S6中,分配RDMA缓冲区的加权平均请求/应答时间间隔avg_rtt的计算公式为:avg_rtt←min(α×avg_rtt+(1-α)×rtt,β×avg_rtt),其中α是介于0.8~0.9的一个常量,β是介于1~1.5的常量。
5.根据权利要求1所述的基于流量负载预测的RDMA缓冲区动态分配方法,其特征在于:所述RDMA发起方每隔一段固定的时间就主动发出一个申请RDMA缓冲区的请求,以提高rtt采样频率。
6.根据权利要求1所述的基于流量负载预测的RDMA缓冲区动态分配方法,其特征在于:在S7中,rbuf_thresh的计算公式为:rbuf_thresh←min(rbuf_max,max(2,(avg_rtt)/(avg_at))),其中rbuf_max表示最大的rbuf数。
7.根据权利要求1所述的基于流量负载预测的RDMA缓冲区动态分配方法,其特征在于:在S4中,规定时间内为50微秒内。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910771718.3A CN112422244B (zh) | 2019-08-21 | 2019-08-21 | 基于流量负载预测的rdma缓冲区动态分配方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910771718.3A CN112422244B (zh) | 2019-08-21 | 2019-08-21 | 基于流量负载预测的rdma缓冲区动态分配方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112422244A CN112422244A (zh) | 2021-02-26 |
CN112422244B true CN112422244B (zh) | 2022-11-25 |
Family
ID=74779143
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910771718.3A Active CN112422244B (zh) | 2019-08-21 | 2019-08-21 | 基于流量负载预测的rdma缓冲区动态分配方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112422244B (zh) |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016028268A1 (en) * | 2014-08-19 | 2016-02-25 | Hewlett Packard Enterprise Development Lp | Send buffer based on messaging traffic load |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8381204B2 (en) * | 2008-04-30 | 2013-02-19 | International Business Machines Corporation | Compiler driven mechanism for registration and deregistration of memory pages |
US9176911B2 (en) * | 2012-12-11 | 2015-11-03 | Intel Corporation | Explicit flow control for implicit memory registration |
US10671460B2 (en) * | 2018-02-05 | 2020-06-02 | Micron Technology, Inc. | Memory access communications through message passing interface implemented in memory systems |
-
2019
- 2019-08-21 CN CN201910771718.3A patent/CN112422244B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016028268A1 (en) * | 2014-08-19 | 2016-02-25 | Hewlett Packard Enterprise Development Lp | Send buffer based on messaging traffic load |
Non-Patent Citations (1)
Title |
---|
基于RDMA技术的Spark系统Shuffle性能优化;于汝杰;《中国优秀硕士学位论文全文数据库》;20190131;第3章 * |
Also Published As
Publication number | Publication date |
---|---|
CN112422244A (zh) | 2021-02-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8392565B2 (en) | Network memory pools for packet destinations and virtual machines | |
US7295565B2 (en) | System and method for sharing a resource among multiple queues | |
US9405725B2 (en) | Writing message to controller memory space | |
US11403247B2 (en) | Methods and apparatus for network interface fabric send/receive operations | |
US5781741A (en) | Message communications system in a parallel computer | |
CN112948149A (zh) | 一种远端内存共享方法、装置、电子设备及存储介质 | |
US7469309B1 (en) | Peer-to-peer data transfer method and apparatus with request limits | |
US11403253B2 (en) | Transport protocol and interface for efficient data transfer over RDMA fabric | |
WO2020019743A1 (zh) | 流量控制方法及装置 | |
CN108092908A (zh) | 控制流量的方法和发送端设备 | |
EP3077914B1 (en) | System and method for managing and supporting virtual host bus adaptor (vhba) over infiniband (ib) and for supporting efficient buffer usage with a single external memory interface | |
US11301408B1 (en) | Asymmetric read / write architecture for enhanced throughput and reduced latency | |
CN112783667A (zh) | 基于虚拟环境的内存共享系统及方法 | |
CN102314400B (zh) | 一种分散聚合式dma方法及装置 | |
CN113360077B (zh) | 数据存储方法、计算节点及存储系统 | |
US20060227799A1 (en) | Systems and methods for dynamically allocating memory for RDMA data transfers | |
CN112306693B (zh) | 数据包的处理方法和设备 | |
US7185147B2 (en) | Striping across multiple cache lines to prevent false sharing | |
CN112422244B (zh) | 基于流量负载预测的rdma缓冲区动态分配方法 | |
US20040240388A1 (en) | System and method for dynamic assignment of timers in a network transport engine | |
US20150193201A1 (en) | Flow control with buffer reclamation | |
KR20150048028A (ko) | 데이터 전송 관리 방법 | |
CN112433980B (zh) | 基于迭代逼近的rdma缓冲区动态分配方法 | |
CN112019450A (zh) | 设备间流式通信 | |
CN114253733B (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 |