CN116743673B - Rdma工作队列参数的调整方法、装置、设备及存储介质 - Google Patents
Rdma工作队列参数的调整方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN116743673B CN116743673B CN202311022892.0A CN202311022892A CN116743673B CN 116743673 B CN116743673 B CN 116743673B CN 202311022892 A CN202311022892 A CN 202311022892A CN 116743673 B CN116743673 B CN 116743673B
- Authority
- CN
- China
- Prior art keywords
- queue
- recommended
- depth
- time
- rdma
- 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
- 238000000034 method Methods 0.000 title claims abstract description 77
- 230000008859 change Effects 0.000 claims abstract description 39
- 230000008569 process Effects 0.000 claims abstract description 32
- 238000012544 monitoring process Methods 0.000 claims abstract description 19
- 238000012545 processing Methods 0.000 claims description 6
- 230000003247 decreasing effect Effects 0.000 claims description 3
- 238000005516 engineering process Methods 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 3
- 230000006854 communication Effects 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 230000006978 adaptation Effects 0.000 description 2
- 238000003491 array Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000010354 integration Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000001105 regulatory effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
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/50—Queue scheduling
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
Abstract
本申请提供一种RDMA工作队列参数的调整方法、装置、设备及存储介质,涉及大数据技术领域,该方法包括:获取RDMA工作队列的推荐队列深度,其中,所述推荐队列深度为所述RDMA工作队列的当前最大允许队列长度;在业务运行过程中,监测所述RDMA工作队列的实时队列长度;基于所述实时队列长度,调整所述推荐队列深度。如此,实现了在业务运行过程中,基于RDMA工作队列的实时变化灵活调整满足当前需求的队列深度,避免由于RDMA工作队列写满或清空导致无法继续正常读写的情况,保证读写业务流量的安全稳定。
Description
技术领域
本申请涉及大数据技术领域,特别是指一种RDMA工作队列参数的调整方法、装置、设备及存储介质。
背景技术
通过远程直接地址访问(Remote Direct Memory Access,RDMA)技术,本端节点可以“直接”访问远端节点的内存。所谓直接,指的是可以像访问本地内存一样,绕过传统以太网复杂的传输控制协议/网际协议(Transmission Control Protocol/InternetProtocol,TCP/IP)网络协议栈读写远端内存,而这个过程对端是不感知的,而且这个读写过程的大部分工作是由硬件而不是软件完成的。
目前RDMA的收发队列参数主要是用户在RDMA初始化时通过verbs应用编程接口(Application Programming Interface,API)指定,且在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工作队列写满或清空导致无法继续正常读写的情况,保证读写业务流量的安全稳定。
附图说明
图1为本申请实施例的远程直接地址访问RDMA工作队列参数的调整方法的示意图之一;
图2为本申请实施例的远程直接地址访问RDMA工作队列参数的调整方法的示意图之二;
图3为本申请实施例的远程直接地址访问RDMA工作队列参数的调整装置的示意图;
图4为本申请实施例的远程直接地址访问RDMA工作队列参数的调整设备的示意图。
具体实施方式
为使本申请要解决的技术问题、技术方案和优点更加清楚,下面将结合附图及具体实施例进行详细描述。
应理解,说明书通篇中提到的“一个实施例”或“一实施例”意味着与实施例有关的特定特征、结构或特性包括在本申请的至少一个实施例中。因此,在整个说明书各处出现的“在一个实施例中”或“在一实施例中”未必一定指相同的实施例。此外,这些特定的特征、结构或特性可以任意适合的方式结合在一个或多个实施例中。
在本申请的各种实施例中,应理解,下述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
另外,本文中术语“系统”和“网络”在本文中常可互换使用。
在本申请所提供的实施例中,应理解,“与A 相应的B”表示B 与A 相关联,根据A可以确定B。但还应理解,根据A 确定B 并不意味着仅仅根据A 确定B,还可以根据A 和/或其它信息确定B。
在对本申请实施例进行说明之前,首先对相关技术点进行说明:
工作队列(Work Queue,WQ):WQ是RDMA技术中最重要的概念之一,WQ是一个储存工作请求的队列;
工作队列元素(Work Queue Element,WQE):WQE可以认为是一种“任务说明”,其中,WQE是软件下发给硬件的,这份说明中包含了软件所希望硬件去做的任务以及有关这个任务的详细信息。比如,某一份任务是这样的:“我想把位于0x12345678的长度为10字节的数据发送给对面的节点”,硬件街道任务之后,就会通过直接内存访问(Direct MemoryAccess,DMA)去内存中取数据,组装数据包,然后发送;
工作队列对(Queue Pair,QP):任何通信过程都要有收发两端,QP是RDMA程序中一个发送工作队列和一个接收工作队列的组合,这两个队列分别称为发送队列(Send Queue,SQ)和接收队列(Receive Queue,RQ);其中,SQ专门用来存放发送任务,RQ专门用来存放接收任务。在一次发送-接收(SEND-RECV)流程中,发送端需要把表示一次发送任务的WQE放到SQ里面。同样的,接收端软件需要给硬件下发一个表示接收任务的WQE,这样硬件才知道收到数据之后放到内存中的哪个位置。
完成队列(Completion Queue,CQ):CQ与WQ对应,用于RDMA获取完成的工作请求;
共享接收队列(Share Receive Queue,SRQ):多个QP共享的同一个RQ。
下面,结合附图对本申请实施例的RDMA工作队列参数的调整方法、装置、设备及存储介质进行详细说明。
如图1所示,本申请实施例的RDMA工作队列参数的调整方法,包括:
步骤101,获取RDMA工作队列的推荐队列深度,其中,该推荐队列深度为RDMA工作队列的当前最大允许队列长度;
这里,需要说明的是,RDMA工作队列可以包括RDMA过程中的接收队列和/或发送队列。“推荐队列深度”是指目前为RDMA工作队列配置的允许的工作队列长度。
步骤102,在业务运行过程中,监测RDMA工作队列的实时队列长度;
步骤103,基于实时队列长度,调整推荐队列深度。
本申请的实施例的RDMA工作队列参数的调整方法,首先,获取RDMA工作队列的推荐队列深度,其中,推荐队列深度为RDMA工作队列的当前最大允许队列长度;其次,在业务运行过程中,监测RDMA工作队列的实时队列长度;最后,基于实时队列长度,调整推荐队列深度。如此,实现了在业务运行过程中,基于RDMA工作队列的实时变化灵活调整满足当前需求的队列深度,解决了目前由于RDMA工作队列参数无法修改的问题,避免了由于RDMA工作队列写满或清空导致无法继续正常读写的情况,保证读写业务流量的安全稳定。
作为一个可选的实现方式,步骤101,获取RDMA工作队列的推荐队列深度,包括:
根据与RDMA相关的硬件设备的参数,确定推荐队列深度;或者,
根据RDMA工作队列的队列长度的历史变化趋势,确定推荐队列深度。
也就是说,该推荐队列深度可以基于支持RDMA技术的硬件设备(如RDMA网卡)的能力确定,以确保该推荐队列深度能够得到硬件设备的支持;也可以基于历史数据确定与当前运行情况匹配的队列深度,以确保资源的合理利用。
作为一个具体的实现方式,根据与RDMA相关的硬件设备的参数,确定推荐队列深度,包括:
根据硬件设备的参数,确定RDMA工作队列的最大队列深度和最小队列深度;
这里,需要说明的是,由于不同的RDMA驱动厂商提供的硬件设备的驱动能力不同,导致各厂商的硬件设备对应的最大队列深度和最小队列深度也不同;因此,本步骤可以基于硬件的参数获取到与其匹配的最大队列深度和最小队列深度;例如,可以由厂商直接推荐与硬件设备对应的最大队列深度和最小队列深度,也可以是,在厂商推荐的最大队列深度和最小队列深度的基础上,结合实际情况选择满足需要的最大队列深度和最小队列深度;还可以是,根据厂商提供的硬件设备的参数确定与其匹配的最大队列深度和最小队列深度。
根据最大队列深度和所述最小队列深度,确定推荐队列深度,其中,推荐队列深度位于该最大队列深度和该最小队列深度之间。
本步骤中,推荐队列深度可以根据该最大队列深度和该最小队列深度自行配置,例如,该最大队列深度为100,该最小队列深度为20,则可以基于设备的实际使用情况,确定推荐队列深度,具体例如,有三个线程需要使用RDMA技术,则可以将三个线程对应的推荐队列深度分别设置为20。当然,若未自行配置推荐队列深度,也可以将最大队列深度和最小队列深度的中间值确定为该推荐队列深度,还例如最大队列深度为100且最小队列深度为20时,该推荐队列深度可以设置为中间值50。
作为另一个具体的实现方式,根据RDMA工作队列的队列长度的历史变化趋势,确定推荐队列深度,包括:
根据历史变化趋势,确定RDMA工作队列的繁忙时间段和空闲时间段;
也就是说,在进行RDMA时,可以实时监测工作队列的变化趋势并进行记录,以通过自学习的方式,确定繁忙时间段和空闲时间段,以及,各繁忙时间段和各空闲时间段对应的队列深度。
根据RDMA工作队列当前所处的时间段、繁忙时间段和空闲时间段,确定所述推荐队列深度。
例如,根据历史变化确实确定繁忙时间段为每天的上午9:00至12:00,以及,每天下午的2:00至6:00,其他时间段为空闲时间段;则在当前所处的时间段为上午10:00时,确认此时为繁忙时间段,则将推荐队列深度调整为与繁忙时间段对应的队列深度。
本具体的实现方式中,基于当前所处的时间段、繁忙时间段和空闲时间段,确定当前所处的时间段对应的推荐队列深度,使得推荐队列深度尽可能满足当前时间段的读写需求,减少调整推荐队列深度的次数。
简单来说,本具体的实现方式的实现过程为:实时监测工作队列大小的变化趋势并进行记录,得出当前设备使用繁忙以及使用空闲的时间段,在后续运行过程中根据当前时间段实时通知收发线程确定工作队列的推荐队列深度,从而能够根据需要占用或释放设备资源,以对设备资源进行更好的调控使用。
具体的,繁忙时间段的获取过程为监控模块实时监测工作队列的长度,当队列长度达到最大队列深度时,监控模块将此时间段标记为繁忙时间段。
空闲时间段的获取过程为监控模块实时监测工作队列的长度,当队列长度达到最小队列长度时,监控模块将此时间段标记为空闲时间段。
其中,读写业务繁忙时段到来时,收发线程将工作队列的推荐队列深度确定为最大队列深度,以应对业务繁忙带来的大量读写请求,并进一步地,在业务繁忙时段根据实际业务流量以及本申请实施例的调整原则调整推荐队列深度;
读写业务空闲时段到来时,收发线程将工作队列的推荐队列深度调整为最小队列深度,保证最基本的读写业务请求,在业务空闲时段根据实际业务流量以及调整原则调整推荐队列深度。
作为一个可选的实现方式,步骤103,基于实时队列长度,调整推荐队列深度,包括:
根据监测到的实时队列长度,确定工作队列的队列长度变化率;这里,队列长度变化率为单位时间(如每秒)内工作队列的任务变化个数。
根据推荐队列深度和当前监测到的实时队列长度,确定所述RDMA工作队列的剩余可用队列长度;具体的,剩余可用队列长度应为推荐队列深度与当前监测到的实时队列长度的差值。
根据队列长度变化率和剩余可用队列长度,调整推荐队列深度。
本可选的实现方式中,基于队列长度变化率和剩余可用队列长度调整推荐队列深度,避免了实时队列长度达到该推荐队列深度导致不能正常读写的情况,从而最大程度的保证了读写业务流量的安全稳定。
作为一个具体的实现方式,根据队列长度变化率和剩余可用队列长度,调整推荐队列深度,包括:
根据队列长度变化率和剩余可用队列长度,确定RDMA工作队列的队列长度达到推荐队列深度或者RDMA工作队列被清空的第一时刻;
具体的,本步骤的实现过程为:首先,计算剩余可用队列长度与队列长度变化率的绝对值的比值,该比值表示该工作队列发生剩余可用队列长度的变化所用的时间长度;其次,在当前时刻的基础上累加该比值,得到该第一时刻。其中,在该队列长度变化率为负值时,表明该工作队列在减少,则在第一时刻,工作队列可能被清空;在该队列长度变化率为正值时,表明该工作队列在增加,则在第一时刻,工作队列可能被写满(工作队列达到推荐队列深度)。
若RDMA工作队列的队列长度在第一时刻达到推荐队列深度,则在第二时刻增大推荐队列深度,这里,通过增大推荐队列深度,能够及时占用设备资源,以避免工作队列被写满而无法正常读写的情况。
或者,若RDMA工作队列在第一时刻被清空,则在第二时刻缩小推荐队列深度;这里,通过缩小推荐队列深度,一方面,能够及时释放设备资源,以对设备进行更好的调控使用;另一方面,能够避免无任务可读写的情况,以保证最基本的读写业务请求。
其中,第二时刻位于第一时刻之前,且第二时刻与第一时刻之间的时间间隔为预设时长,例如,预设时长为30s。
本具体的实现方式中,在业务运行过程中,通过提前调整推荐队列深度,一方面,能够避免工作队列被清空或被写满,从而避免无法正常读写任务的情况;另一方面,实现了对设备资源的灵活使用和调控;最终,最大程度保证了读写业务流量的安全稳定。
简单来说,上述具体的实现方式的实现过程如下:
(1)监控模块实时监测当前发送队列以及接收队列中任务变化率:其中,任务变化率定义为单位时间内每秒钟发送队列或接收队列中任务变化个数;
(2)根据当前发送队列以及接收队列长度,以及队列中任务变化率,计算当前队列填充满或清空的时间:当前发送队列或接收队列剩余可接受任务数除以队列中任务变化率,得出队列填充满或清空的时间;
(3)在队列填充满或者清空之前的预设时间,如30s,控制模块将队列扩大一倍或者缩小一倍,避免对现有业务产生影响。
作为一个可选的实现方式,基于实时队列长度,调整推荐队列深度,包括:
确定与推荐队列深度相关的最大水线和最小水线,其中,最大水线和最小水线均小于推荐队列深度,且最大水线大于最小水线;
这里,需要说明的是,本步骤中引入的“水线”还可以称为“阈值”、“Queue Limit”,例如,该最大水线可以为该推荐队列深度的90%,该最小水线可以为该推荐队列深度的10%,具体例如,若推荐队列深度为50,则最大水线为45,最小水线为5。
在实时队列长度达到最大水线的情况下,增大所述推荐队列深度;具体的,当实时队列长度达到该最大水线时,表明推荐队列深度可能无法满足当前时间段的读写业务量需求,因此,可以增大该推荐队列深度。
在实时队列长度达到最小水线的情况下,缩小推荐队列深度;具体的,当实时队列长度达到该最小水线时,表明推荐队列深度远远大于当前时间段的读写业务量需求,因此,可以缩小该推荐队列深度。
本可选实现方式中,基于当前的实际读写场景灵活调整推荐队列深度,实现了更细粒度的对RDMA通信进行实时控制,最大程度保证了读写业务流量的安全稳定。
也就是说,在配置了最大水线和最小水线时,具体的监测与处理过程如下:
针对发送队列:当发送队列发送任务数量达到最大水线时,则表示读写业务繁忙,将发送队列深度扩大一倍;而当发送队列任务数小于最小水线时,则表示读写业务空闲,将发送队列深度缩小一半;
针对接收队列:当接收队列接收任务数量达到最大水线,则表示读写业务繁忙,将接收队列深度扩大一倍;而当接收队列任务数小于最小水线时,则表示读写业务空闲,将接收队列深度缩小一半;
进一步地,作为一个可选的实现方式,该方法还包括:
在推荐队列深度达到RDMA工作队列的最大队列深度的情况下,停止增大推荐队列深度;和/或,
在推荐队列深度达到所述RDMA工作队列的最小队列深度的情况下,停止缩小推荐队列深度;
其中,最大队列深度和最小队列深度与RDMA相关的硬件设备的参数相关。
也就是说,在一次或多次调整推荐队列深度之后,需要进一步判断调整后的推荐队列深度是否达到预先配置的最大队列深度或最小队列深度。由于最大队列深度和最小队列深度为配置的工作队列的极限深度,因此,在调整后的推荐队列深度达到预先配置的最大队列深度,则不能再继续增大推荐队列深度;在调整后的推荐队列深度达到预先配置的最小队列深度,则不能再继续缩小推荐队列深度。
进一步地,作为一个可选的实现方式,该方法还包括:
在推荐队列深度达到RDMA工作队列的最大队列深度的情况下,输出告警信息;其中,最大队列深度与RDMA相关的硬件设备的参数相关。
这里,需要说明的是,在推荐队列深度达到该最大队列深度时,表明目前的读写场景的读写业务流量达到了硬件设备所能支持的极限,为了确保读写业务流量的安全稳定,需要通过告警信息提醒用户调整业务。
下面,结合图2对本申请实施例的RDMA工作队列参数的调整方法的实现过程进行说明:
步骤201,初始化计算发送队列和接收队列的推荐队列深度;具体的,本步骤可以是基于发送队列和接收队列的最大队列深度和最小队列深度进行初始化,例如,根据实际情况,在最大队列深度和最小队列深度之间选择推荐队列深度;或者,直接将最大队列深度和最小队列深度的中间值配置为推荐队列深度;其中,最大队列深度和最小队列深度可以由驱动厂商推荐,也可以基于驱动厂商推荐的信息自主配置。
步骤202,实时对发送队列和接收队列的队列长度进行实时监测;具体的,当实际业务运行进行读写操作时,收发线程实时对发送队列以及接收队列的队列长度进行实时监测;
步骤203,判断是否配置了发送队列和接收队列的最大水线、最小水线;若配置了,则执行步骤204,若未配置,则执行步骤205;具体的,例如:默认定义发送队列的推荐队列深度的100%以及0%,接收队列的推荐队列深度的100%以及0%为各自队列的最大水线和最小水线。
步骤204,判断发送/接收队列的发送/接收任务数量是否达到其最大水线,若是,则执行步骤206,若否,则返回至步骤202;本步骤具体是:判断发送队列的发送任务是否达到发送队列的最大水线,以及,判断接收队列的接收任务数量是否达到接收队列的最大水线;若其中任一个为是,则执行步骤206,若两个均为否,则返回至步骤202。
步骤205,实时计算队列满或空时间点;具体的,根据当前发送队列以及接收队列的队列长度,以及队列中任务变化率,计算当前队列填充满或清空的时间:例如:当前发送队列或接收队列剩余可接受任务数除以队列中任务变化率,得出队列填充满或清空的时间;
步骤206,判断推荐队列深度是否达到最大队列深度,若是,则执行步骤207,若否,则执行步骤208;
步骤207,发出告警,并不再扩大推荐队列深度;
步骤208,判断推荐队列深度是否达到最小队列深度,若是,则执行步骤209,若否,则执行步骤210;
步骤209,不再缩小推荐队列深度;
步骤210,调整发送/接收推荐队列深度,并返回至步骤202;具体的,本步骤为在发送队列的推荐队列深度达到其最大水线时,扩大发送队列的推荐队列深度,在发送队列的推荐队列深度达到其最小水线时,缩小发送队列的推荐队列深度;同样的,在接收队列的推荐队列深度达到其最大水线时,扩大接收队列的推荐队列深度,在接收队列的推荐队列深度达到其最小水线时,缩小接收队列的推荐队列深度;
步骤211,判断推荐队列深度是否达到最大队列深度或最小队列深度,若是,则执行步骤212,若否,则执行步骤213;本步骤中,具体是分别判断发送队列和接收队列是否达到其最大队列深度或最小队列深度;若其中的任一种情况的判断结果为是,则执行步骤212,若所有情况的判断结果为否,则执行步骤213;
步骤212,判断推荐队列深度是否达到最大队列深度,若是,则执行步骤207,若否,则执行步骤209;
步骤213,在队列满或空时间点之前的预设时间,调整推荐队列深度,并返回至步骤202。
本申请实施例的RDMA工作队列参数的调整方法,通过动态监测得出业务流量,根据业务时段以及实际业务流量,实时对工作队列深度进行调整,可以更细粒度的对RDMA通信进行实时控制,最大程度保证了读写业务流量的安全稳定。另外,本申请实施例的方法,通过RDMA收发线程实时监测下发的SQ以及RQ的剩余数量/实时数量,并根据剩余数量/实时数量动态调整。RDMA绕过中央处理器(Central Processing Unit,CPU)的特性,能够极大的节省CPU资源,提升设备读写的性能,它的使用场景一般是在高性能读写的场景。RDMA收发线程根据实际业务模型实时对RDMA收发队列的参数进行调整,占用或释放设备资源,对设备资源进行更好的调控使用。
这里,需要说明的是,本申请实施例的方法的执行主体可以为需要使用RDMA技术的应用程序或安装该应用程序的电子设备等。
如图3所示,本申请实施例还提供一种远程直接地址访问RDMA工作队列参数的调整装置,包括:
获取模块301,用于获取RDMA工作队列的推荐队列深度,其中,所述推荐队列深度为所述RDMA工作队列的当前最大允许队列长度;
监测模块302,用于在业务运行过程中,监测所述RDMA工作队列的实时队列长度;
调整模块303,用于基于所述实时队列长度,调整所述推荐队列深度。
可选地,所述获取模块301包括:
第一确定子模块,用于根据与RDMA相关的硬件设备的参数,确定所述推荐队列深度;或者,
第二确定子模块,用于根据所述RDMA工作队列的队列长度的历史变化趋势,确定所述推荐队列深度。
可选地,所述第一确定子模块,包括:
第一确定单元,用于根据所述硬件设备的参数,确定所述RDMA工作队列的最大队列深度和最小队列深度;
第二确定单元,用于根据所述最大队列深度和所述最小队列深度,确定所述推荐队列深度,其中,所述推荐队列深度位于所述最大队列深度和所述最小队列深度之间。
可选地,所述第二确定子模块包括:
第三确定单元,用于根据所述历史变化趋势,确定所述RDMA工作队列的繁忙时间段和空闲时间段;
第四确定单元,用于根据所述RDMA工作队列当前所处的时间段、所述繁忙时间段和所述空闲时间段,确定所述推荐队列深度。
可选地,所述调整模块303包括:
第三确定子模块,用于根据监测到的所述实时队列长度,确定所述工作队列的队列长度变化率;
第四确定子模块,用于根据所述推荐队列深度和当前监测到的实时队列长度,确定所述RDMA工作队列的剩余可用队列长度;
第一调整子模块,用于根据所述队列长度变化率和所述剩余可用队列长度,调整所述推荐队列深度。
可选地,所述第一调整子模块包括:
第五确定单元,用于根据所述队列长度变化率和所述剩余可用队列长度,确定所述RDMA工作队列的队列长度达到所述推荐队列深度或者所述RDMA工作队列被清空的第一时刻;
调整单元,用于若所述RDMA工作队列的队列长度在所述第一时刻达到所述推荐队列深度,则在第二时刻增大所述推荐队列深度,或者,若所述RDMA工作队列在所述第一时刻被清空,则在第二时刻缩小所述推荐队列深度;
其中,所述第二时刻位于所述第一时刻之前,且所述第二时刻与所述第一时刻之间的时间间隔为预设时长。
可选地,所述调整模块303包括:
第五确定子模块,用于确定与所述推荐队列深度相关的最大水线和最小水线,其中,所述最大水线和所述最小水线均小于所述推荐队列深度,且所述最大水线大于所述最小水线;
第二调整子模块,用于在所述实时队列长度达到所述最大水线的情况下,增大所述推荐队列深度;
第三调整子模块,用于在所述实时队列长度达到所述最小水线的情况下,缩小所述推荐队列深度。
进一步地,所述装置还包括控制模块,用于:
在所述推荐队列深度达到所述RDMA工作队列的最大队列深度的情况下,停止增大所述推荐队列深度;和/或,
在所述推荐队列深度达到所述RDMA工作队列的最小队列深度的情况下,停止缩小所述推荐队列深度;
其中,所述最大队列深度和所述最小队列深度与RDMA相关的硬件设备的参数相关。
进一步地,所述装置还包括输出模块,用于:
在所述推荐队列深度达到所述RDMA工作队列的最大队列深度的情况下,输出告警信息;其中,所述最大队列深度与RDMA相关的硬件设备的参数相关。
在此需要说明的是,本申请实施例提供的上述远程直接地址访问RDMA工作队列参数的调整装置,能够实现上述远程直接地址访问RDMA工作队列参数的调整方法实施例所实现的所有方法步骤,且能够达到相同的技术效果,在此不再对本实施例中与方法实施例相同的部分及有益效果进行具体赘述。
如图4所示,本申请实施例还提供一种远程直接地址访问RDMA工作队列参数的调整设备,包括收发机410、处理器400、存储器420及存储在所述存储器420上并可在所述处理器400上运行的程序或指令;所述处理器400执行所述程序或指令时实现上述远程直接地址访问RDMA工作队列参数的调整方法。
所述收发机410,用于在处理器400的控制下接收和发送数据。
其中,在图4中,总线架构可以包括任意数量的互联的总线和桥,具体由处理器400代表的一个或多个处理器和存储器420代表的存储器的各种电路链接在一起。总线架构还可以将诸如外围设备、稳压器和功率管理电路等之类的各种其他电路链接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。总线接口提供接口。收发机410可以是多个元件,即包括发送机和接收机,提供用于在传输介质上与各种其他装置通信的单元。处理器400负责管理总线架构和通常的处理,存储器420可以存储处理器400在执行操作时所使用的数据。
本申请实施例的一种可读存储介质,其上存储有程序或指令,所述程序或指令被处理器执行时实现如上所述的远程直接地址访问RDMA工作队列参数的调整方法中的步骤,且能达到相同的技术效果,为避免重复,这里不再赘述。
其中,所述处理器为上述实施例中所述的远程直接地址访问RDMA工作队列参数的调整设备中的处理器。所述可读存储介质,包括计算机可读存储介质,如计算机只读存储器(Read-Only Memory,简称ROM)、随机存取存储器(Random Access Memory,简称RAM)、磁碟或者光盘等。
本申请实施例中,模块可以用软件实现,以便由各种类型的处理器执行。举例来说,一个标识的可执行代码模块可以包括计算机指令的一个或多个物理或者逻辑块,举例来说,其可以被构建为对象、过程或函数。尽管如此,所标识模块的可执行代码无需物理地位于一起,而是可以包括存储在不同位里上的不同的指令,当这些指令逻辑上结合在一起时,其构成模块并且实现该模块的规定目的。
实际上,可执行代码模块可以是单条指令或者是许多条指令,并且甚至可以分布在多个不同的代码段上,分布在不同程序当中,以及跨越多个存储器设备分布。同样地,操作数据可以在模块内被识别,并且可以依照任何适当的形式实现并且被组织在任何适当类型的数据结构内。所述操作数据可以作为单个数据集被收集,或者可以分布在不同位置上(包括在不同存储设备上),并且至少部分地可以仅作为电子信号存在于系统或网络上。
在模块可以利用软件实现时,考虑到现有硬件工艺的水平,所以可以以软件实现的模块,在不考虑成本的情况下,本领域技术人员都可以搭建对应的硬件电路来实现对应的功能,所述硬件电路包括常规的超大规模集成(VLSI)电路或者门阵列以及诸如逻辑芯片、晶体管之类的现有半导体或者是其它分立的元件。模块还可以用可编程硬件设备,诸如现场可编程门阵列、可编程阵列逻辑、可编程逻辑设备等实现。
上述范例性实施例是参考该些附图来描述的,许多不同的形式和实施例是可行而不偏离本申请精神及教示,因此,本申请不应被建构成为在此所提出范例性实施例的限制。更确切地说,这些范例性实施例被提供以使得本申请会是完善又完整,且会将本申请范围传达给那些熟知此项技术的人士。在该些图式中,组件尺寸及相对尺寸也许基于清晰起见而被夸大。在此所使用的术语只是基于描述特定范例性实施例目的,并无意成为限制用。如在此所使用地,除非该内文清楚地另有所指,否则该单数形式“一”、“一个”和“该”是意欲将该些多个形式也纳入。会进一步了解到该些术语“包含”及/或“包括”在使用于本说明书时,表示所述特征、整数、步骤、操作、构件及/或组件的存在,但不排除一或更多其它特征、整数、步骤、操作、构件、组件及/或其族群的存在或增加。除非另有所示,陈述时,一值范围包含该范围的上下限及其间的任何子范围。
以上所述是本申请的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请所述原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。
Claims (8)
1.一种远程直接地址访问RDMA工作队列参数的调整方法,其特征在于,包括:
获取RDMA工作队列的推荐队列深度,其中,所述推荐队列深度为所述RDMA工作队列的当前最大允许队列长度;
在业务运行过程中,监测所述RDMA工作队列的实时队列长度;
基于所述实时队列长度,调整所述推荐队列深度;
其中,所述基于所述实时队列长度,调整所述推荐队列深度,包括:
根据监测到的所述实时队列长度,确定所述工作队列的队列长度变化率;
根据所述推荐队列深度和当前监测到的实时队列长度,确定所述RDMA工作队列的剩余可用队列长度;
根据所述队列长度变化率和所述剩余可用队列长度,确定所述RDMA工作队列的队列长度达到所述推荐队列深度或者所述RDMA工作队列被清空的第一时刻;
若所述RDMA工作队列的队列长度在所述第一时刻达到所述推荐队列深度,则在第二时刻增大所述推荐队列深度,或者,若所述RDMA工作队列在所述第一时刻被清空,则在第二时刻缩小所述推荐队列深度;
其中,所述第二时刻位于所述第一时刻之前,且所述第二时刻与所述第一时刻之间的时间间隔为预设时长。
2.根据权利要求1所述的方法,其特征在于,所述获取RDMA工作队列的推荐队列深度,包括:
根据与RDMA相关的硬件设备的参数,确定所述推荐队列深度;或者,
根据所述RDMA工作队列的队列长度的历史变化趋势,确定所述推荐队列深度。
3.根据权利要求2所述的方法,其特征在于,所述根据所述RDMA工作队列的队列长度的历史变化趋势,确定所述推荐队列深度,包括:
根据所述历史变化趋势,确定所述RDMA工作队列的繁忙时间段和空闲时间段;
根据所述RDMA工作队列当前所处的时间段、所述繁忙时间段和所述空闲时间段,确定所述推荐队列深度。
4.根据权利要求1所述的方法,其特征在于,所述基于所述实时队列长度,调整所述推荐队列深度,还包括:
确定与所述推荐队列深度相关的最大水线和最小水线,其中,所述最大水线和所述最小水线均小于所述推荐队列深度,且所述最大水线大于所述最小水线;
在所述实时队列长度达到所述最大水线的情况下,增大所述推荐队列深度;
在所述实时队列长度达到所述最小水线的情况下,缩小所述推荐队列深度。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在所述推荐队列深度达到所述RDMA工作队列的最大队列深度的情况下,停止增大所述推荐队列深度;和/或,
在所述推荐队列深度达到所述RDMA工作队列的最小队列深度的情况下,停止缩小所述推荐队列深度;
其中,所述最大队列深度和所述最小队列深度与RDMA相关的硬件设备的参数相关。
6.一种远程直接地址访问RDMA工作队列参数的调整装置,其特征在于,包括:
获取模块,用于获取RDMA工作队列的推荐队列深度,其中,所述推荐队列深度为所述RDMA工作队列的当前最大允许队列长度;
监测模块,用于在业务运行过程中,监测所述RDMA工作队列的实时队列长度;
调整模块,用于基于所述实时队列长度,调整所述推荐队列深度;
其中,所述调整模块包括:
第三确定子模块,用于根据监测到的所述实时队列长度,确定所述工作队列的队列长度变化率;
第四确定子模块,用于根据所述推荐队列深度和当前监测到的实时队列长度,确定所述RDMA工作队列的剩余可用队列长度;
第一调整子模块,用于根据所述队列长度变化率和所述剩余可用队列长度,调整所述推荐队列深度;
所述第一调整子模块包括:
第五确定单元,用于根据所述队列长度变化率和所述剩余可用队列长度,确定所述RDMA工作队列的队列长度达到所述推荐队列深度或者所述RDMA工作队列被清空的第一时刻;
调整单元,用于若所述RDMA工作队列的队列长度在所述第一时刻达到所述推荐队列深度,则在第二时刻增大所述推荐队列深度,或者,若所述RDMA工作队列在所述第一时刻被清空,则在第二时刻缩小所述推荐队列深度;
其中,所述第二时刻位于所述第一时刻之前,且所述第二时刻与所述第一时刻之间的时间间隔为预设时长。
7.一种远程直接地址访问RDMA工作队列参数的调整设备,包括收发机、处理器、存储器及存储在所述存储器上并可在所述处理器上运行的程序;其特征在于,所述处理器执行所述程序时实现如权利要求1至5中任一项所述的远程直接地址访问RDMA工作队列参数的调整方法。
8.一种可读存储介质,其上存储有程序或指令,其特征在于,所述程序或指令被处理器执行时实现如权利要求1至5中任一项所述的远程直接地址访问RDMA工作队列参数的调整方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311022892.0A CN116743673B (zh) | 2023-08-15 | 2023-08-15 | Rdma工作队列参数的调整方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311022892.0A CN116743673B (zh) | 2023-08-15 | 2023-08-15 | Rdma工作队列参数的调整方法、装置、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116743673A CN116743673A (zh) | 2023-09-12 |
CN116743673B true CN116743673B (zh) | 2023-11-03 |
Family
ID=87901610
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311022892.0A Active CN116743673B (zh) | 2023-08-15 | 2023-08-15 | Rdma工作队列参数的调整方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116743673B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112068768A (zh) * | 2019-06-10 | 2020-12-11 | 三星电子株式会社 | 基于队列对的NVMeoF启动器-目标系统中I/O传输的系统和方法 |
CN112416569A (zh) * | 2020-09-17 | 2021-02-26 | 上海哔哩哔哩科技有限公司 | 缓存内存调整方法、装置及计算机设备 |
CN114968854A (zh) * | 2021-02-25 | 2022-08-30 | 华为技术有限公司 | 对存储器的输入带宽进行调整的方法及存储系统 |
WO2023058232A1 (ja) * | 2021-10-08 | 2023-04-13 | 日本電信電話株式会社 | 通信システム、中間装置、通信方法、および、プログラム |
CN115964319A (zh) * | 2023-01-30 | 2023-04-14 | 珠海星云智联科技有限公司 | 远程直接内存访问的数据处理方法及相关产品 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9407560B2 (en) * | 2013-03-15 | 2016-08-02 | International Business Machines Corporation | Software defined network-based load balancing for physical and virtual networks |
-
2023
- 2023-08-15 CN CN202311022892.0A patent/CN116743673B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112068768A (zh) * | 2019-06-10 | 2020-12-11 | 三星电子株式会社 | 基于队列对的NVMeoF启动器-目标系统中I/O传输的系统和方法 |
CN112416569A (zh) * | 2020-09-17 | 2021-02-26 | 上海哔哩哔哩科技有限公司 | 缓存内存调整方法、装置及计算机设备 |
CN114968854A (zh) * | 2021-02-25 | 2022-08-30 | 华为技术有限公司 | 对存储器的输入带宽进行调整的方法及存储系统 |
WO2022179348A1 (zh) * | 2021-02-25 | 2022-09-01 | 华为技术有限公司 | 对存储器的输入带宽进行调整的方法及存储系统 |
WO2023058232A1 (ja) * | 2021-10-08 | 2023-04-13 | 日本電信電話株式会社 | 通信システム、中間装置、通信方法、および、プログラム |
CN115964319A (zh) * | 2023-01-30 | 2023-04-14 | 珠海星云智联科技有限公司 | 远程直接内存访问的数据处理方法及相关产品 |
Also Published As
Publication number | Publication date |
---|---|
CN116743673A (zh) | 2023-09-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11570123B2 (en) | Generating, at least in part, and/or receiving, at least in part, at least one request | |
US9225668B2 (en) | Priority driven channel allocation for packet transferring | |
CN101986241B (zh) | 用于存储系统中功率分配的方法和设备 | |
US11586392B2 (en) | Multi-stream SSD QoS management | |
DE102006019839A1 (de) | Zeitbewusste Systeme | |
CN105339917A (zh) | 访问存储器中数据的分离的存储器控制器 | |
TW201822010A (zh) | 資料儲存裝置與資料傳輸速率控制方法 | |
CN104509047A (zh) | 报文传输系统中分配报文缓冲区的方法 | |
US20200076742A1 (en) | Sending data using a plurality of credit pools at the receivers | |
CN107480078A (zh) | 一种总线带宽分配方法、装置及芯片 | |
KR20190070273A (ko) | 원자 데이터 액세스 요구의 조정 | |
CN116743673B (zh) | Rdma工作队列参数的调整方法、装置、设备及存储介质 | |
EP3326347A1 (en) | Method and system for usb 2.0 bandwidth reservation | |
CN106936867A (zh) | 一种业务请求的响应方法及装置 | |
CN115729864A (zh) | 存储装置、电子装置以及电子装置的操作方法 | |
WO2023184991A1 (zh) | 一种流量管控方法、装置、设备及可读存储介质 | |
CN109039694A (zh) | 一种面向业务的全局网络资源分配方法及装置 | |
CN109542833A (zh) | 一种基于微服务器架构的服务器管理方法、装置、服务器 | |
CN113014408A (zh) | 分布式系统及其管理方法 | |
CN112236755A (zh) | 一种内存访问方法及装置 | |
CN115576710A (zh) | 一种基板管理控制器的数据传输方法及相关装置 | |
CN110427273A (zh) | 内存调度方法、装置、设备及存储介质 | |
CN113805802A (zh) | 访问限流的方法、服务器及存储介质 | |
CN114691374A (zh) | 一种虚拟通道的请求分配方法及相关装置 | |
CN114546908A (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 | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40095858 Country of ref document: HK |