掌桥专利:专业的专利平台
掌桥专利
首页

一种调度控制方法、设备及计算机存储介质

文献发布时间:2023-06-19 19:00:17


一种调度控制方法、设备及计算机存储介质

技术领域

本申请涉及云计算技术领域,尤其涉及一种调度控制方法、设备及计算机存储介质。

背景技术

由于分布式存储系统的分散特性,同一存储设备会同时被多个存储用户设备访问,这就涉及到存储资源的竞争问题。为了解决这一问题,存储系统通过服务质量(Qualityof Service,QoS)控制来为不同业务的用户设备分配不同的存储资源,以实现存储资源公平合理的分配。

在相关技术中,一般采用Dmclock算法实现不同存储输入/输出(Input/Out,IO)请求的调度控制,从而为不同业务的存储用户设备分配不同的存储资源。然而,Dmclock算法只是在考虑了转发率性能的基础上对待处理IO请求进行调度,但是由于考虑不全面,导致某些业务场景下服务质量控制的效果并不理想。

发明内容

本申请提供了一种调度控制方法、设备及计算机存储介质,在兼顾转发率性能和吞吐率性能的基础上对待处理IO请求进行调度,能够提供高质量的存储服务。

本申请的技术方案是这样实现的:

第一方面,本申请实施例提供了一种调度控制方法,应用于服务设备,该方法包括:

接收用户设备发送的待处理输入输出IO请求,并确定待处理IO请求的属性参数;其中,属性参数至少包括预设吞吐率参数和预设转发率参数;

基于预设吞吐率参数和预设转发率参数,对待处理IO请求进行标签分配处理,确定待处理IO请求的目标时间标签值;

基于待处理IO请求的目标时间标签值,对待处理IO请求进行调度。

第二方面,本申请实施例提供了一种服务设备,该服务设备包括确定单元、标签单元和推荐单元;其中,

确定单元,配置为接收用户设备发送的待处理输入输出IO请求,并确定待处理IO请求的属性参数;其中,属性参数至少包括预设吞吐率参数和预设转发率参数;

标签单元,配置为基于预设吞吐率参数和预设转发率参数,对待处理IO请求进行标签分配处理,确定待处理IO请求的目标时间标签值;

调度单元,配置为基于待处理IO请求的目标时间标签值,对待处理IO请求进行调度。

第三方面,本申请实施例提供了一种服务设备,该服务设备包括存储器和处理器;其中,

存储器,用于存储能够在处理器上运行的计算机程序;

处理器,用于在运行计算机程序时,执行如第一方面方法的步骤。

第四方面,本申请实施例提供了一种计算机存储介质,该计算机存储介质存储有计算机程序,该计算机程序被执行时实现如第一方面方法的步骤。

本申请提供了一种调度控制方法、设备及计算机存储介质,接收用户设备发送的待处理输入输出IO请求,并确定待处理IO请求的属性参数;其中,属性参数至少包括预设吞吐率参数和预设转发率参数;基于预设吞吐率参数和预设转发率参数,对待处理IO请求进行标签分配处理,确定待处理IO请求的目标时间标签值;基于待处理IO请求的目标时间标签值,对待处理IO请求进行调度。这样,根据预设转发率参数和预设吞吐率参数,能够为待处理IO请求分配相应的时间标签值,进而对批量待处理IO请求实现合理调度,能够实现兼顾转发率性能和吞吐率性能的服务质量控制,从而在多种存储业务场景下均能够提供高质量的存储服务。

附图说明

图1为本申请实施例提供的一种调度控制方法的流程示意图;

图2为本申请实施例提供的另一种调度控制方法的流程示意图;

图3为本申请实施例提供的一种调度控制方法的工作过程示意图;

图4为本申请实施例提供的另一种调度控制方法的工作过程示意图;

图5为本申请实施例提供的又一种调度控制方法的工作过程示意图;

图6为本申请实施例提供的一种服务设备的组成结构示意图;

图7为本申请实施例提供的一种服务设备的硬件结构示意图;

图8为本申请实施例提供的一种分布式存储系统组成结构示意图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。可以理解的是,此处所描述的具体实施例仅仅用于解释相关申请,而非对该申请的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与有关申请相关的部分。

除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本申请实施例的目的,不是旨在限制本申请。

在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。

需要指出,本申请实施例所涉及的术语“第一\第二\第三”仅是用于区别类似的对象,不代表针对对象的特定排序,可以理解地,“第一\第二\第三”在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本申请实施例能够以除了在这里图示或描述的以外的顺序实施。

以下为本申请实施例中涉及到的专业名词:

转发率(Input/Output Operations Per Second,IOPS):存储设备(或称为存储服务器)每秒处理待处理IO请求的数量;

吞吐率:存储设备在处理待处理IO请求时每秒所处理的数据量,单位为千字节/秒(KiloByte/second,KB/s)、兆字节/秒(MegaBytes/second,MB/s)、吉字节/秒(GigaByte/second,GB/s)。

表1给出本申请实施例中涉及到的符号示意,具体详见表1所示。

表1

分布式存储系统的原理是将存储数据(文件、块数据和对象)打散到多台独立的存储设备上,通过网络互联,并且可横向扩展,从而实现利用多台存储设备分担负载的效果。与传统存储系统相比,分布式存储系统的可靠性、可用性和存取效率得到充分提高,并且易于扩展。换句话说,分布式存储系统将这些分散的存储设备构建成一个虚拟的、大的存储资源池来供上层应用来使用。然而,正是由于分布式存储系统存储数据分散特性,同一存储设备会同时被多个存储用户设备访问,这就涉及到存储资源的竞争问题。

在相关技术中,为解决分布式存储的资源竞争问题,分布式存储系统通过服务质量控制来为不同业务的用户设备分配不同的存储资源(例如转发率IOPS),以实现存储资源公平合理的分配。具体来说,对于分布式存储系统,可以通过Dmclock算法来实现不同待处理IO请求的调度,该算法采用时间标签值来调度用户设备的待处理IO请求,具体地,时间标签值通过预留(Reservation tag)、上限(Limit tag)和权重(Proportion tag)三个维度来控制存储用户设备的存储IO性能。其中,预留时间标签值(或称为预留标签值)确保用户设备最低的IOPS性能,上限时间标签值(或称为上限标签值)限制用户设备最高的IOPS性能,权重时间标签值(或称为权重标签值)代表了用户设备请求的调度优先级,在满足所有用户设备的预留性能情况下,根据权重为各用户设备分配剩余IOPS性能。

以下为Dmclock调度算法的代码示意:

基于以上代码,对Dmclock调度算法流程的调度原理进行具体说明。

在这里,调度算法运行于每台存储服务器上,主要分为三个重要部分:(1)标签值分配;(2)标签值调整;(3)请求调度。

(1)标签值分配:为来自用户设备VM v

(2)标签值调整:当非活跃用户设备VM v

其中,minPtag表示当前请求所具有的最小P标签,t表示当前时间。

(3)请求调度:前后分为两个调度阶段,分别是约束调度阶段和权重调度阶段。约束调度阶段根据所有用户设备VM请求的R标签值对请求进行调度,将所有低于当前时间t的R标签值的请求组成有序队列,从最小R标签值的请求开始调度,直至将队列请求调度完毕,完成该阶段调度,保证了所有用户设备VM的请求都满足预留转发率性能。在权重调度阶段,根据所有用户设备VM请求的L和P标签值对请求进行调度,首先将所有低于当前时间t的L标签值的请求按照P标签值组成有序队列,从最小的P标签值的请求开始调度,直至将队列请求调度完毕。为了使来自同一个用户设备VM v

然而,由于Dmclock算法只给出了对IO转发率即IOPS性能的调度算法,而更多的业务场景往往需要同时能够实现对转发率IOPS和吞吐率的性能服务质量控制。例如,对于大量小文件业务存储场景,主要控制其转发率IOPS性能,对于较大文件业务场景,主要控制其吞吐率性能。特别对于公有云的业务场景来说,多个租户共享底层存储集群的性能,由于租户部署的上层业务的不可预测性,往往是混合了多种存储业务场景。因此,对于实现分布式存储系统同时实现对转发率IOPS和吞吐率性能的服务质量控制是非常有必要的。

基于此,本申请实施例提供了一种调度控制方法,该方法的基本思想为:接收用户设备发送的待处理输入输出IO请求,并确定所述待处理IO请求的属性参数;其中,所述属性参数至少包括预设吞吐率参数和预设转发率参数;基于所述预设吞吐率参数和预设转发率参数,对所述待处理IO请求进行标签分配处理,确定所述待处理IO请求的目标时间标签值;基于所述待处理IO请求的目标时间标签值,对所述待处理IO请求进行调度。这样,根据预设转发率参数和预设吞吐率参数,能够为待处理IO请求分配相应的时间标签值,进而对批量待处理IO请求实现合理调度,能够实现兼顾转发率性能和吞吐率性能的服务质量控制,从而在多种存储业务场景下均能够提供高质量的存储服务。

下面将结合附图对本申请各实施例进行详细说明。

在本申请的一实施例中,参见图1,其示出了本申请实施例提供的一种调度控制方法的流程示意图。如图1所示,该方法可以包括:

S101:接收用户设备发送的待处理输入输出IO请求,并确定待处理IO请求的属性参数。

需要说明的是,本申请实施例提供的调度控制方法应用于分布式存储系统中的服务设备(也可称为“存储服务器”或“服务器”)。

具体地,在分布式存储系统中,存储数据(文件、块数据和对象等)被打散到多台独立的服务设备上,即同一服务设备会同时被多个客户端(以下称为用户设备)访问。因此,一个物理的服务设备可能会在短时间内接收到来自于一个或多个用户设备的多个输入/输出(Input/Output,IO)请求,如何合理的调度、完成这些IO请求是实现服务质量控制的重要内容,而本申请实施例所提供的方法正是为了解决这一问题。

对于本申请实施例提供的调度控制方法来说,在接收到用户设备发送的待处理IO请求后,需要确定待处理IO请求的属性参数。在这里,属性参数至少包括预设转发率参数和预设吞吐率参数。

示例性地,根据用户设备重要性、优先性和性能的不同,服务设备会针对每个用户设备设置相应的理论性能参数。也就是说,预设转发率参数和预设吞吐率参数是服务器为针对不同的用户设备预先设置的。

在这里,虽然一个或多个用户设备一般会向服务设备发送连续的多个IO请求,但是服务设备对这些IO请求所进行的初步处理是相同的,例如确定每个IO请求的属性参数、为每个IO请求设定不同的标签等。因此,待处理IO请求可以认为是一个或多个用户设备发送的多个IO请求所组成的整体,或者可以认为是一个或多个用户设备发送的多个IO请求中的具体一个。为了方便说明,在本申请实施例中站在待处理IO请求是具体的一个IO请求的角度描述技术方案,但这并不构成相关限制。

S102:基于预设吞吐率参数和预设转发率参数,对待处理IO请求进行标签分配处理,确定待处理IO请求的目标时间标签值。

需要说明的是,本申请实施例提供的调度控制方法本质是对Dmclock算法的优化,其仍然沿用了Dmclock算法的框架。因此,在确定待处理IO请求对应的预设转发率参数和预设吞吐率参数之后,根据所确定的参数为待处理IO请求分配目标时间标签值。

还需要说明的是,预设转发率参数可以包括预留转发率参数和上限转发率参数,预设吞吐率参数可以包括预留吞吐率参数和上限吞吐率参数。相应地,目标时间标签值可以包括预留时间标签值和上限时间标签值。

在这里,预留时间标签值确保了用户设备最低的存储处理性能,换句话说,当待处理IO请求的预留时间标签值大于当前时间时,说明服务设备为该用户设备分配的对应存储资源已经满足最小值;上限时间标签值确保了用户设备最高的存储处理性能,换句话说,当待处理IO请求的上限时间标签值大于当前时间时,说明服务设备为该用户设备分配的对应存储资源已经满足最大值。

具体地,预设转发率参数可以包括预留转发率参数和上限转发率参数,预设吞吐率参数可以包括预留吞吐率参数和上限吞吐率参数,目标时间标签值包括预留时间标签值和上限时间标签值;因此,在一些实施例中,所述基于预设吞吐率参数和预设转发率参数,对待处理IO请求进行标签分配处理,确定待处理IO请求的目标时间标签值,可以包括:

根据预留转发率参数和预留吞吐率参数,对待处理IO请求进行标签分配处理,得到待处理IO请求的预留时间标签值;

根据上限转发率参数和上限吞吐率参数,对待处理IO请求进行标签分配处理,得到待处理IO请求的上限时间标签值。

需要说明的是,一般来说,服务设备会针对每个用户设备设置两类理论性能参数,即预留性能参数和上限性能参数。在这里,预留性能参数限制了用户设备能够从服务设备获得的最低服务性能,上限性能参数限制了用户设备能够从服务设备获得的最高服务性能。

因此,根据预留转发率参数和预留吞吐率参数,服务设备能够计算出完成待处理IO请求所需要的预留时间,进而根据预留时间为待处理IO请求分配预留时间标签值。

根据上限转发率参数和上限吞吐率参数,存储设备能够计算出完成待处理IO请求所需要的上限时间,进而根据上限时间为待处理IO请求分配上限时间标签值。

具体地,在一些实施例中,属性参数还包括数据长度值;确定预留时间标签值的具体处理过程如下:

确定预留转发率延时和预留吞吐率延时;其中,预留转发率延时是根据预留转发率参数计算得到,预留吞吐率延时是根据数据长度值和预留吞吐率参数计算得到;

确定预留转发率延时和预留吞吐率延时;其中,预留转发率延时是根据预留转发率参数计算得到,预留吞吐率延时是根据数据长度值和预留吞吐率参数计算得到;

将预留吞吐率延时和预留转发率延时中的最小值确定为目标预留延时;

在获取前一预留时间标签值和当前时间标签值后,根据目标预留延时、前一预留时间标签值和当前时间标签值,确定待处理IO请求的预留时间标签值;

其中,前一预留时间标签值是指与待处理IO请求来自于同一用户设备的前一IO请求的预留时间标签值。

需要说明的是,属性参数还可以包括数据长度值,数据长度值是指待处理IO请求对应的目标数据的长度值。示例性地,数据长度值是由用户设备计算出的,并在向服务设备发送待处理IO请求时一并发送给服务设备。

为了方便说明,将服务设备以预留转发率对待处理IO请求进行处理时所需要的时间称为预留转发率延时,将服务设备以预留吞吐率对待处理IO请求进行处理时所需要的时间称为预留吞吐率延时。

由于转发率是指服务设备在单位时间内处理的IO请求的数量,所以预留转发率参数的倒数即为预留转发率延时,例如预留转发率参数可以是100/秒,则预留转发率延时是1/100秒;类似地,由于吞吐率是指服务设备在单位时间内所处理的数据量,所以需要利用数据长度值除以吞吐率来得到预留吞吐率延时。

在同时满足预留转发率和预留吞吐率的基础上,预留时间标签值需要按照服务质量高的要求分配,即预留吞吐率延时和预留转发率延时中的最小值确定为目标预留延时。

在得到目标预留延时后,需要根据目标预留延时、前一预留时间标签值和当前时间标签值,来确定待处理IO请求的预留时间标签值。在这里,前一预留时间标签值是指该用户设备的前一IO请求的预留时间标签值,当前时间标签值是指服务设备的系统当前时间,即在不同的步骤中当前时间标签值的具体数值是不同的。具体说明如下:

服务设备中还有可能存在之前该用户设备发送的且未处理其他IO请求,而这些一个用户设备的所有IO请求应当是顺序且连续进行执行的。因此,需要将该用户设备的前一IO请求的预留时间标签值(即前一预留时间标签值)和目标预留延时进行计算,以确定待处理IO请求的理论预留时间标签值。

在这里,计算理论预留时间标签值时,还会涉及到第一请求数(ρ

特别地,若待处理IO请求是用户设备由非活跃状态转为活跃状态后所发送的第一个IO请求,则可以利用当前时间标签值作为其预留时间标签值,例如服务器接收到待处理IO请求的时间。

因此,需要将理论预留时间标签值和当前时间中的最大值作为待处理IO请求的预留时间标签,具体如式(3)所示。

进一步地,在一些实施例中,确定上限签值的具体处理过程如下:

确定上限转发率延时和上限吞吐率延时;其中,上限转发率延时是根据上限转发率参数计算得到,上限吞吐率延时是根据数据长度值和上限吞吐率参数计算得到;

将上限吞吐率延时和上限转发率延时中的最大值确定为目标上限延时;

在获取前一上限时间标签值和当前时间标签值后,根据目标上限延时、前一上限时间标签值和当前时间标签值,确定待处理IO请求的上限时间标签值;

其中,前一上限时间标签值是指与待处理IO请求来自于同一用户设备的前一IO请求的上限时间标签值。

需要说明的是,与预留转发率延时和预留吞吐率延时的计算方法类似,将上限转发率参数的倒数确定为上限转发率延时,将数据长度值除以上限吞吐率参数,得到上限吞吐率延时。

然而,在对于完成当前IO请求,上限吞吐率所需的时间和上限转发率所需的时间只能满足其中一个,所需时间越长,意味着上限服务质量越低。且上限时间标签值需要按照服务质量低的要求分配,即预留吞吐率延时和预留转发率延时中的最大值确定为目标上限延时。

在得到目标上限延时后,需要根据目标上限延时、前一上限时间标签值和当前时间标签值,来确定待处理IO请求的上限时间标签值。在这里,前一上限时间标签值是指该用户设备的前一IO请求的上限时间标签值。具体说明如下:

类似地,在确定目标上限延时之后,利用用户设备的前一IO请求的上限时间标签值(即前一上限时间标签值)和目标上限延时进行计算,就得到了理论上限时间标签值。

在这里,计算理论上限时间标签值时,还会涉及到第二请求数(δ

特别地,若待处理IO请求是用户设备由非活跃状态转为活跃状态后所发送的第一个IO请求,则可以利用当前时间标签值作为其上限时间标签值。

这样,需要将理论上限时间标签值和当前时间中的最大值作为待处理IO请求的上限时间标签值,具体如式(4)所示。

进一步地,在一些实施例中,属性参数还包括权重参数,目标时间标签值还包括权重时间标签值;

相应地,所述基于预设吞吐率参数和预设转发率参数,对待处理IO请求进行标签分配处理,确定待处理IO请求的目标时间标签值,还可以包括:

根据权重参数对待处理IO请求进行标签分配处理,得到待处理IO请求的权重时间标签值。

需要说明的是,权重参数用于指示服务设备为用户设备设置的优先级,根据权重参数,服务设备为待处理IO请求分配权重时间标签值。

具体地,在一些实施例中,确定权重时间标签值的具体处理过程如下:

确定目标权重延时;其中,目标权重延时是根据权重参数计算得到;

在获取前一权重时间标签值和当前时间标签值后,根据目标权重延时、前一上限时间标签值和当前时间标签值,确定待处理IO请求的权重时间标签值;

其中,前一权重时间标签值是指与待处理IO请求来自于同一用户设备的前一IO请求的权重时间标签值。

需要说明的是,与转发率和吞吐率不同的是,权重参数仅是不同用户设备之间的相对参数,并不具有单位。一般来说,权重参数越高,则该用户设备的处理优先级越高,所以一般将权重参数的倒数确定为目标权重延时。

在得到目标权重延时后,需要根据目标权重延时、前一权重时间标签值和当前时间标签值,来确定待处理IO请求的权重时间标签值。在这里,前一权重时间标签值是指该用户设备的前一IO请求的权重时间标签值。具体说明如下:

类似地,在确定目标权重延时之后,对用户设备的前一IO请求的权重时间标签值(即前一上限时间标签值)和目标权重延时进行计算,得到理论权重限标签值。

在这里,计算理论权重时间标签值时,同样会涉及到第二请求数(δ

特别地,若待处理IO请求是用户设备由非活跃状态转为活跃状态后所发送的第一个IO请求,则可以利用当前时间标签值作为其权重时间标签值。

这样,需要将理论权重时间标签值和当前时间标签值中的最大值作为待处理IO请求的权重时间标签值,具体如式(5)所示。

在这种情况下,待处理IO请求的权重标签和服务设备中已有的其他用户设备的IO请求的权重标签会存在不在同一线性梯队的问题。此时,则需要可以参照前述的公式(2)将服务设备中已有的其他用户设备的IO请求进行调整。

从以上处理可以看出,服务设备仍然需要为每个待处理IO请求分配三类时间标签值:预留时间标签值、上限时间标签值和权重时间标签值,后续仍然通过这三类时间标签值实现对IO请求的调度。然而,相关技术中只是在考虑了转发率和权重的基础上为IO请求分配三类时间标签值,而本申请实施例是在考虑了转发率、吞吐率和权重的基础上为IO请求分配三类时间标签值,所以能够在兼顾转发率、吞吐率和优先级的基础上更好的提供存储服务。

这样,通过以上处理方法,能够确定待处理IO请求的预留时间标签值、上限时间标签值和权重时间标签值,以便后续针对待处理IO请求进行合理调度。

S103:基于所预留时间标签值、上限时间标签值和权重时间标签值,对待处理IO请求进行调度。

需要说明的是,根据预留时间标签值、上限时间标签值和权重时间标签值,能够综合考虑服务设备的性能资源,从而在保证服务质量的情况下对待处理IO请求进行调度。由于在分配预留时间标签值、上限时间标签值和权重标签时,已经考虑了转发率和吞吐率的性能参数,所以能够灵活的根据不同的待处理IO请求来进行标签分配,从而在调度IO请求时同时保证了转发率和吞吐率。

需要说明的是,由于分布式存储系统的特点,服务设备可能会接收到来自于一个或多个用户设备的多个IO请求,以下将服务设备中存在的所有未经处理的IO请求称为待处理请求集合。应理解,待处理请求集合包含了至少一个待处理IO请求。因此,在一些实施例中,所述基于所预留时间标签值、上限时间标签值和权重时间标签值,对待处理IO请求进行调度,可以包括:

确定包含至少一个待处理IO请求的待处理请求集合;

判断待处理请求集合中是否存在至少一个第一IO请求;其中,第一IO请求的预留时间标签值小于当前时间;

在待处理请求集合中存在至少一个第一IO请求的情况下,按照至少一个第一IO请求各自的预留时间标签值,对至少一个第一IO请求进行调度处理。

进一步地,在一些实施例中,在待处理请求集合中不存在第一IO请求的情况下,该方法还可以包括:

判断待处理请求集合中是否存在至少一个第二IO请求;其中,第二IO请求的上限时间标签值小于当前时间。

若判断结果为是,则按照至少一个第二IO请求各自的权重时间标签值,对至少一个第二IO请求进行调度处理。

需要说明的是,对于服务设备来说,需要对系统中所有的IO请求进行统一调度,以下将所有的IO请求称为待处理请求集合,即待处理请求集合包括至少一个待处理IO请求。另外,当前时间标签值是指服务设备的当前时间。

此时,对待处理请求集合进行调度的具体步骤包括:

(1)约束调度阶段:在待处理请求集合中,判断是否存在预留时间标签值小于当前时间标签值的IO请求,即第一IO请求。

如果存在至少一个第一IO请求,则针对至少一个IO请求,按照预留时间标签值从小到大的顺序对至少一个第一IO请求进行调度;如果不存在至少一个第一IO请求,则进入权重调度阶段。

在这里,约束调度阶段能够保证所有用户设备的IO请求都满足预留转发率性能和预留吞吐率性能。

(2)权重调度阶段:在待处理请求集合中,判断是否存在上限时间标签值小于当前时间标签值的IO请求,即第二IO请求;

如果存在至少一个第二IO请求,则针对至少二个IO请求,按照权重时间标签值从小到大的顺序对至少一个第二IO请求进行调度。

具体地,IO请求的调度策略可以如下理解的:针对多个IO请求,查看这些IO请求的预留时间标签值是否存在小于当前时间标签值,如果存在,表示服务设备为第一用户设备(第一IO请求对应的用户设备)分配的存储资源还未达到第一用户设备的理论最低要求,应该优先对第一用户设备的IO请求进行处理。

如果所有IO请求预留时间标签值都是大于当前时间标签值,表示服务设备为所有用户设备分配的存储资源都已经满足每个用户设备各自的理论最低要求。此时,从所有IO请求中选择上限时间标签值小于当前时间标签值的第二IO请求,并从中选择P标签最小的IO请求来应答。

应理解,本发明实施例中所涉及的多个当前时间标签值均是跟随服务设备的系统时间变化的,并非固定的某个时间点,所以具体所指代的时间点可以不同。

进一步地,在一些实施例中,在待处理IO请求被确定为第二IO请求的情况下,该方法还可以包括:

在对待处理IO请求调度完成后,根据待处理IO请求的预留时间标签值和前一预留时间标签值,确定目标时间差值;

基于目标时间差值,对待处理IO请求对应的目标IO请求的预留时间标签值进行更新处理。

在这里,述目标IO请求与待处理IO请求来自于同一用户设备,且目标IO请求的预留时间标签值大于待处理IO请求的预留时间标签值。

需要说明的是,如果待处理IO请求在权重调度阶段被调度,针对预留时间标签值,为了使来自同一个用户设备的IO请求队列(按照预留时间标签值的大小所形成的IO请求队列)保持线性递增,需要将该用户设备对应的请求队列中在待处理IO请求之后的所有IO请求向前顺序移动。

也就是说,在对待处理IO请求调度完成后,将待处理IO请求的预留时间标签值和前一预留时间标签值进行减法运算,得到目标时间差值,即目标时间差值为ρ

综上,本申请实施例提供了一种以优化Dmclock算法来实现服务质量控制的方法,以更好地解决目前在较多业务场景下,特别是公有云的共享存储业务场景下存在的服务质量控制问题。在本申请实施例中,该方法主要包括:

(1)为用户设备VM v

(2)用户设备VM v

(3)存储服务器s

(a)对于上述标签分配优化包括:

对于预留时间标签值计算,分别计算完成当前请求的预留吞吐率延时s

对于上限时间标签值计算,分别计算完成当前请求的上限吞吐率延时s

对于权重时间标签值计算,具体如式(5)所示。

(b)对于上述请求调度优化包括:

在权重调度阶段,为了使来自同一个用户设备VM v

这样,与相关技术相比,本申请实施例对Dmclock算法进行了优化,从而实现分布式存储系统同时实现对转发率IOPS和吞吐率性能的服务质量控制。

本申请实施例提供了一种调度控制方法,通过接收用户设备发送的待处理输入输出IO请求,并确定待处理IO请求的属性参数;其中,属性参数至少包括预设吞吐率参数和预设转发率参数;基于预设吞吐率参数和预设转发率参数,对待处理IO请求进行标签分配处理,确定待处理IO请求的目标时间标签值;基于待处理IO请求的目标时间标签值,对待处理IO请求进行调度。这样,根据预设转发率参数和预设吞吐率参数,能够为待处理IO请求分配相应的时间标签值,进而对批量待处理IO请求实现合理调度,能够实现兼顾转发率性能和吞吐率性能的服务质量控制,从而在多种存储业务场景下均能够提供高质量的存储服务。

在本申请的另一实施例中,以包含用户设备VM v

S201:用户设备VM v

需要说明的是,用户设备VM v

另外,请求长度s

S202:存储服务器s

需要说明的是,在存储服务器s

在图3中,对本申请实施例提供的调度控制算法中预留时间标签值配置进行原理说明。在这里根据标签值分配规则,无论对于预留转发率IOPS还是预留吞吐率,最终都需要反映为预留时间片,即完成该预留转发率和吞吐率所需的延时。

如图3所示,假定为用户设备1设置的预留转发率IOPS为每秒完成100个IO请求,即r

假定为用户设备2设置的预留转发率为每秒完成100个IO请求即r

对于完成待处理IO请求,在同时满足预留吞吐率所需的时间和预留转发率所需的时间的基础上,所需时间越短,意味着预留服务质量越高,因此,预留时间标签值必须按照满足服务质量高的要求进行分配,因此,预留时间标签值的计算模型如式(3)所示。

基于这样的原理,如图3所示,完成用户设备1第r个IO请求预留转发率延时10ms要比预留吞吐率延时20ms低,因此分配预留时间标签值时取预留转发率延时值:

如图4所示,对本申请实施例提供的调度控制算法中上限时间标签值配置进行原理说明。

在图4中,假定为用户设备1设置的上限转发率IOPS为每秒完成1000个IO请求,即l

假定为用户设备2设置的上限转发率为每秒完成400个IO请求即l

对于完成当前IO请求,上限吞吐率所需的时间和上限转发率所需的时间只能满足其中一个,所需时间越长,意味着上限服务质量越低,因此,上限时间标签值必须按照满足服务质量低的要求进行分配。因此,给出以下上限时间标签值的计算模型如式(4)所示。

基于这样的原理,如图4所示,完成用户设备1的第r个IO请求,上限转发率延时1ms要比上限吞吐率延时2ms低,因此分配上限时间标签值时取上限吞吐率延时值,为

关于权重时间标签值的确定和具体的调度流程可参照前述。特别地,针对权重调度阶段:

如图5所示,在权重调度阶段,对于用户设备VM v

综上所述,本申请实施例对于以Dmclock算法为基础实现分布式存储系统服务质量控制而存在的问题而提出的解决方法包括:

(1)为用户设备VM v

(2)用户设备VM v

(3)存储服务器s

具体地,优化Dmclock算法包括标签分配和请求调度;

(a)对于上述标签分配优化包括:

对于预留时间标签值计算,分别计算完成当前IO请求的预留吞吐率延时s

取上述吞吐率延时s

对于上限时间标签值计算,分别计算完成当前IO请求的上限吞吐率延时s

取上述吞吐率延时s

对于权重时间标签值计算,具体计算模型为

(b)对于上述请求调度优化包括:

在权重调度阶段,为了使来自同一个用户设备VM v

这样,与相关技术提供的基于Dmclock算法实现分布式存储服务质量控制技术方案相比,本申请实施例对Dmclock算法进行了优化,以实现分布式存储系统同时基于转发率IOPS和吞吐率性能的服务质量控制。

本申请实施例提供了一种调度控制方法,通过本实施例对前述实施例的具体实施方法进行了详细阐述,从中可以看出,根据预设转发率参数和预设吞吐率参数,能够为待处理IO请求分配相应的时间标签值,进而对批量待处理IO请求实现合理调度,能够实现兼顾转发率性能和吞吐率性能的服务质量控制,从而在多种存储业务场景下均能够提供高质量的存储服务。

在本申请的再一实施例中,参见图6,其示出了本申请实施例提供的一种服务设备30的组成结构示意图。如图6所示,该服务设备30包括确定单元301、标签单元302和调度单元303,其中,

确定单元301,配置为接收用户设备发送的待处理输入输出IO请求,并确定待处理IO请求的属性参数;其中,属性参数至少包括预设吞吐率参数和预设转发率参数;

标签单元302,配置为基于预设吞吐率参数和预设转发率参数,对待处理IO请求进行标签分配处理,确定待处理IO请求的目标时间标签值;

调度单元303,配置为基于待处理IO请求的目标时间标签值,对待处理IO请求进行调度。

在一些实施例中,预设转发率参数包括预留转发率参数和上限转发率参数,预设吞吐率参数包括预留吞吐率参数和上限吞吐率参数;目标时间标签值包括预留时间标签值和上限时间标签值;标签单元302,具体配置为根据预留转发率参数和预留吞吐率参数,对待处理IO请求进行标签分配处理,得到待处理IO请求的预留时间标签值;根据上限转发率参数和上限吞吐率参数,对待处理IO请求进行标签分配处理,得到待处理IO请求的上限时间标签值。

在一些实施例中,属性参数还包括数据长度值;标签单元302,还配置为确定预留转发率延时和预留吞吐率延时;其中,预留转发率延时是根据预留转发率参数计算得到,预留吞吐率延时是根据数据长度值和预留吞吐率参数计算得到;将预留吞吐率延时和预留转发率延时中的最小值确定为目标预留延时;在获取前一预留时间标签值和当前时间标签值后,根据目标预留延时、前一预留时间标签值和当前时间标签值,确定待处理IO请求的预留时间标签值;其中,前一预留时间标签值是指与待处理IO请求来自于同一用户设备的前一IO请求的预留时间标签值。

在一些实施例中,属性参数还包括数据长度值,标签单元302,还配置为确定上限转发率延时和上限吞吐率延时;其中,上限转发率延时是根据上限转发率参数计算得到,上限吞吐率延时是根据数据长度值和上限吞吐率参数计算得到;将上限吞吐率延时和上限转发率延时中的最大值确定为目标上限延时;在获取前一上限时间标签值和当前时间标签值后,根据目标上限延时、前一上限时间标签值和当前时间标签值,确定待处理IO请求的上限时间标签值;其中,前一上限时间标签值是指与待处理IO请求来自于同一用户设备的前一IO请求的上限时间标签值。在一些实施例中,属性参数还包括权重参数,目标时间标签值还包括权重时间标签值;标签单元302,还配置为确定目标权重延时;其中,目标权重延时是根据权重参数计算得到;在获取前一权重时间标签值和当前时间标签值后,根据目标权重延时、前一权重时间标签值和当前时间标签值,确定待处理IO请求的权重时间标签值;其中,前一权重时间标签值是指与待处理IO请求来自于同一用户设备的前一IO请求的权重时间标签值。

在一些实施例中,调度单元303,具体配置为确定包含至少一个待处理IO请求的待处理请求集合和当前时间标签值;判断待处理请求集合中是否存在至少一个第一IO请求;其中,第一IO请求的预留时间标签值小于当前时间标签值;在待处理请求集合中存在至少一个第一IO请求的情况下,按照至少一个第一IO请求各自的预留时间标签值,对至少一个第一IO请求进行调度处理。

在一些实施例中,调度单元303,还配置为在待处理请求集合中不存在第一IO请求的情况下,判断待处理请求集合中是否存在至少一个第二IO请求;其中,第二IO请求的上限时间标签值小于当前时间标签值;在待处理请求集合中存在至少一个第二IO请求的情况下,按照至少一个第二IO请求各自的权重时间标签值,对至少一个第二IO请求进行调度处理。

在一些实施例中,调度单元303,还配置为在对待处理IO请求调度完成后,根据待处理IO请求的预留时间标签值和前一预留时间标签值,确定目标时间差值;基于目标时间差值,对待处理IO请求对应的目标IO请求的预留时间标签值进行更新处理;其中,目标IO请求与待处理IO请求来自于同一用户设备,且目标IO请求的预留时间标签值大于待处理IO请求的预留时间标签值。

可以理解地,在本实施例中,“单元”可以是部分电路、部分处理器、部分程序或软件等等,当然也可以是模块,还可以是非模块化的。而且在本实施例中的各组成部分可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。

集成的单元如果以软件功能模块的形式实现并非作为独立的产品进行销售或使用时,可以存储在一个计算机可读取存储介质中,基于这样的理解,本实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或processor(处理器)执行本实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read OnlyMemory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。

因此,本实施例提供了一种计算机存储介质,该计算机存储介质存储有计算机程序,计算机程序被多个处理器执行时实现前述实施例中任一项的方法的步骤。

基于上述的一种服务设备30的组成以及计算机存储介质,参见图7,其示出了本申请实施例提供的一种服务设备30的硬件结构示意图。如图7所示,服务设备30可以包括:通信接口401、存储器402和处理器403;各个组件通过总线设备404耦合在一起。可理解,总线设备404用于实现这些组件之间的连接通信。总线设备404除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图7中将各种总线都标为总线设备404。其中,通信接口401,用于在与其他外部网元之间进行收发信息过程中,信号的接收和发送;

存储器402,用于存储能够在处理器403上运行的计算机程序;

处理器403,用于在运行计算机程序时,执行:

接收用户设备发送的待处理输入输出IO请求,并确定待处理IO请求的属性参数;其中,属性参数至少包括预设吞吐率参数和预设转发率参数;

基于预设吞吐率参数和预设转发率参数,对待处理IO请求进行标签分配处理,确定待处理IO请求的目标时间标签值;

基于待处理IO请求的目标时间标签值,对待处理IO请求进行调度。

可以理解,本申请实施例中的存储器402可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(Read-Only Memory,ROM)、可编程只读存储器(Programmable ROM,PROM)、可擦除可编程只读存储器(Erasable PROM,EPROM)、电可擦除可编程只读存储器(Electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(Random Access Memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(Static RAM,SRAM)、动态随机存取存储器(Dynamic RAM,DRAM)、同步动态随机存取存储器(Synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(Double Data RateSDRAM,DDRSDRAM)、增强型同步动态随机存取存储器(Enhanced SDRAM,ESDRAM)、同步链动态随机存取存储器(Synchronous link DRAM,SLDRAM)和直接内存总线随机存取存储器(Direct Rambus RAM,DRRAM)。本申请描述的设备和方法的存储器402旨在包括但不限于这些和任意其它适合类型的存储器。

而处理器403可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器403中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器403可以是通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器402,处理器403读取存储器402中的信息,结合其硬件完成上述方法的步骤。

可以理解的是,本申请描述的这些实施例可以用硬件、软件、固件、中间件、微码或其组合来实现。对于硬件实现,处理单元可以实现在一个或多个专用集成电路(Application Specific Integrated Circuits,ASIC)、数字信号处理器(Digital SignalProcessing,DSP)、数字信号处理设备(DSP Device,DSPD)、可编程逻辑设备(ProgrammableLogic Device,PLD)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)、通用处理器、控制器、微控制器、微处理器、用于执行本申请功能的其它电子单元或其组合中。

对于软件实现,可通过执行本申请功能的模块(例如过程、函数等)来实现本申请的技术。软件代码可存储在存储器中并通过处理器执行。存储器可以在处理器中或在处理器外部实现。

可选地,作为另一个实施例,处理器403还配置为在运行计算机程序时,执行前述实施例中任一项的方法的步骤。

在本申请的再一实施例中,参见图8,其示出了本申请实施例提供的另一种分布式存储系统50的组成结构示意图。如图8所示,该分布式存储系统50至少包括服务设备501和用户设备502。其中,服务设备501可以是指前述实施例中任一项的服务设备30,而且服务设备501和用户设备502之间存在通信连接。

对于分布式存储系统备50而言,由于其包括服务设备501和用户设备502,且服务设备501能够接收用户设备502的待处理IO请求,并根据预设转发率参数和预设吞吐率参数为待处理IO请求分配相应的时间标签值,进而对批量待处理IO请求实现合理调度,能够实现兼顾转发率性能和吞吐率性能的服务质量控制,从而在多种存储业务场景下均能够提供高质量的存储服务。

以上,仅为本申请的较佳实施例而已,并非用于限定本申请的保护范围。

需要说明的是,在本申请中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。

上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。

本申请所提供的几个方法实施例中所揭露的方法,在不冲突的情况下可以任意组合,得到新的方法实施例。

本申请所提供的几个产品实施例中所揭露的特征,在不冲突的情况下可以任意组合,得到新的产品实施例。

本申请所提供的几个方法或设备实施例中所揭露的特征,在不冲突的情况下可以任意组合,得到新的方法实施例或设备实施例。

以上,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。

相关技术
  • 一种浴室加热装置和用于控制浴室加热装置的方法、设备、电子设备及计算机可读存储介质
  • 一种数据存储方法、调度装置、系统、设备及存储介质
  • 一种云游戏控制方法、装置、设备和计算机存储介质
  • 一种无人机控制方法、计算机可读存储介质及终端设备
  • 一种外风机转速控制方法、设备和计算机可存储介质
  • 控制程序控制调度方法、装置、计算机设备以及存储介质
  • 控制程序控制调度方法、装置、计算机设备以及存储介质
技术分类

06120115761606