发明内容
本申请提供一种磁盘流控方法,以解决现有技术存在的问题。本申请同时涉及一种磁盘流控装置,以及一种电子设备。
本申请提供一种磁盘流控方法,包括:
获取磁盘在至少一个读写线程中的读写参数;
判断所述读写参数是否满足流控调整条件,若是,将所述磁盘的磁盘状态设为流控状态;
对与所述磁盘的读写参数对应的流控阈值进行调整。
可选的,所述判断所述读写参数是否满足流控调整条件步骤执行前,执行如下操作:
获取所述磁盘的磁盘状态;
其中,所述磁盘状态包括:流控状态和非流控状态。
可选的,所述流控调整条件,包括下述至少一项:
在所述非流控状态下所述读写线程中的读写参数之和大于第一读写参数阈值,
在所述流控状态下所述读写线程中的读写参数之和大于第二读写参数阈值。
可选的,所述判断所述读写参数是否满足流控调整条件,采用如下方式实现:
判断所述读写线程中的读写参数之和是否大于所述第一读写参数阈值,若是,执行所述将所述磁盘的磁盘状态设为流控状态步骤;若否,判断所述磁盘的磁盘状态是否为所述流控状态,如果是所述流控状态,判断所述读写线程中的读写参数之和是否大于所述第二读写参数阈值,若大于,执行所述将所述磁盘的磁盘状态设为流控状态步骤;
或者,
判断所述读写线程中的读写参数之和是否大于所述第二读写参数阈值,若是,判断所述磁盘的磁盘状态是否为所述流控状态,如果是所述流控状态,执行所述将所述磁盘的磁盘状态设为流控状态步骤;如果不是所述流控状态,判断所述读写线程中的读写参数之和是否大于所述第一读写参数阈值,若大于,执行所述将所述磁盘的磁盘状态设为流控状态步骤。
可选的,所述第一读写参数阈值大于所述第二读写参数阈值;且所述第一读写参数阈值小于所述磁盘的读写参数的上限值。
可选的,所述对与所述磁盘的读写参数对应的流控阈值进行调整,采用如下方式实现:
判断所述读写线程中的读写参数是否大于平均流量阈值,若是,将所述读写线程作为待调整读写线程;
对所述待调整读写线程中的读写参数对应的流控阈值进行调整;
其中,所述流控阈值包括:所述待调整读写线程中的读写参数对应的读写阈值上限。
可选的,所述对所述待调整读写线程中的读写参数对应的流控阈值进行调整子步骤执行后,执行如下操作:
判断调整后所述待调整读写线程中的读写参数是否小于或者等于所述平均流量阈值,若否,返回执行所述对所述待调整读写线程中的读写参数对应的流控阈值进行调整子步骤。
可选的,所述磁盘流控方法,包括:
判断调整后所述磁盘在所述读写线程中的读写参数之和是否小于所述第二读写参数阈值,若是,将所述磁盘的磁盘状态设为所述非流控状态。
可选的,所述平均流量阈值,是指所述读写参数的上限值与所述读写线程的数目二者的比值。
可选的,所述待调整读写线程中读写参数对应的流控阈值,采用如下方式进行调整:
确定所述待调整读写线程中读写参数对应的目标读写阈值;
将所述待调整读写线程中读写参数对应的读写阈值上限调整为所述目标读写阈值。
可选的,所述目标读写阈值,是指所述磁盘的可分配流量值与所述待调整读写线程中的读写参数在所有待调整读写线程中的读写参数之和中所占比例的乘积,与所述平均流量阈值二者之和;其中,所述磁盘的可分配流量值,是指所述磁盘的读写参数的上限值,减去所述待调整读写线程的数目与所述平均流量阈值二者乘积,再减去所述待调整读写线程之外所有读写线程中的读写参数之和。
可选的,所述读写参数,包括下述至少一项:每秒处理读写请求的数目,每秒处理读写数据的字节数。
可选的,所述磁盘包括:虚拟机中至少一块磁盘;并且,所述磁盘对应于分布式存储系统的存储集群。
可选的,所述磁盘流控方法,基于所述分布式存储系统设置的流控模块实现;其中,所述获取磁盘在至少一个读写线程中的读写参数步骤,基于所述流控模块包含的统计子模块实现;以及,所述判断所述读写参数是否满足流控调整条件步骤,所述将所述磁盘的磁盘状态设为流控状态步骤,和/或所述对与所述磁盘的读写参数对应的流控阈值进行调整步骤,基于所述流控模块包含的流控管理子模块实现。
可选的,所述读写线程与所述流控模块包含的统计子模块和/或所述统计子模块一一对应;并且,所述流控调整子模块和/或所述统计子模块在其对应的读写线程中实现。
可选的,所述流控管理子模块基于管理线程实现,所述管理线程独立于所述读写线程。
本申请还提供一种磁盘流控装置,包括:
读写参数获取单元,用于获取磁盘在至少一个读写线程中的读写参数;
流控调整条件判断单元,用于判断所述读写参数是否满足流控调整条件,若是,运行流控状态设置单元和流控调整单元;
所述流控状态设置单元,用于将所述磁盘的磁盘状态设为流控状态;
所述流控调整单元,用于对与所述磁盘的读写参数对应的流控阈值进行调整。
本申请还提供一种电子设备,包括:
存储器和处理器;
所述存储器用于存储计算机可执行指令,所述处理器用于执行所述计算机可执行指令:
获取磁盘在至少一个读写线程中的读写参数;
判断所述读写参数是否满足流控调整条件,若是,将所述磁盘的磁盘状态设为流控状态;
对与所述磁盘的读写参数对应的流控阈值进行调整。
本申请提供的所述磁盘流控方法,获取磁盘在至少一个读写线程中的读写参数;判断所述读写参数是否满足流控调整条件,若是,将所述磁盘的磁盘状态设为流控状态;对与所述磁盘的读写参数对应的流控阈值进行调整。
所述磁盘流控方法在对所述磁盘进行流控调整时,依据获取到的所述磁盘在至少一个读写线程中的读写参数,判断所述磁盘是否触发流控调整条件,如果所述磁盘触发流控调整条件,则将所述磁盘设为流控状态,并在流控状态下对所述磁盘进行流控调整,在流控的同时均衡所述磁盘的各读写线程的读写压力,同时确保所述磁盘的读写线程之间互不干扰,缩短了流控耗时。
具体实施方式
在下面的描述中阐述了很多具体细节以便于充分理解本申请。但是本申请能够以很多不同于在此描述的其他方式来实施,本领域技术人员可以在不违背本申请内涵的情况下做类似推广,因此本申请不受下面公开的具体实施的限制。
本申请提供一种磁盘流控方法,本申请还提供一种磁盘流控装置,以及一种电子设备。以下分别结合本申请提供的实施例的附图逐一进行详细说明,并且对方法的各个步骤进行说明。
本申请提供的一种磁盘流控方法实施例如下:
参照附图1,其示出了本申请提供的一种磁盘流控方法实施例的处理流程图,参照附图2,其示出了本申请提供的一种磁盘流控实施场景的示意图,参照附图3,其示出了本申请提供的一种磁盘流控的示意图。
步骤S101,获取磁盘在至少一个读写线程中的读写参数。
随着硬件水平的高速发展,存储系统能够提供的读写(I/O)能力也开始数量级的增长,高性能、低延迟成为磁盘发展的重要方向,为做到整个I/O链路的超低延时,并且充分利用多核的处理能力,可采用多线程用于对I/O请求的处理,多个I/O线程之间处于对等的关系,I/O请求会分配到这些I/O线程中去处理,从而利用多核的优势实现高速读写。本申请提供的所述磁盘流控方法,旨在解决现有技术提供的流控装置成为整个高性能、低延时存储系统瓶颈这一缺陷,本实施例以虚拟平台中分布式存储系统下,针对虚拟机磁盘的磁盘流控方法为例进行说明,但不限于此,其他存储系统下同样可实现所述磁盘流控方法,实现机制是类似的,参照本实施例提供的所述磁盘流控方法的下述实现方式即可。
本申请提供的所述磁盘流控方法,在对虚拟机的磁盘进行流控调整时,通过在分布式存储系统中设置一个流控模块,该流控模块能够在多线程环境下对磁盘I/O进行有效流控,并且I/O线程之间相互独立,无需加锁等协调操作,最大程度的降低流控模块自身对磁盘I/O链路时延以及磁盘性能产生的影响,从而满足高性能磁盘的需求。如附图2所示,一个虚拟机中可以有多块磁盘,这些磁盘对应分布式存储系统的一块虚拟的卷,一块磁盘的I/O请求最终会通过调用分布式存储系统的客户端接口,发送到分布式存储系统的存储集群中。同时,基于分布式存储系统的客户端设置的流控模块对虚拟机磁盘进行流控,在实现流控的同时使虚拟机磁盘具有高性能、低延时的特性。
本申请实施例以虚拟机的至少一块磁盘为例进行说明,所述磁盘对应于分布式存储系统的存储集群,磁盘的I/O请求最终会通过调用分布式存储系统的客户端接口,发送到后端的存储集群中。在具体实现时,所述磁盘流控方法可以是针对虚拟机的每一块磁盘分别进行流控调整,也可以是针对所述分布式存储系统中的所有磁盘进行流控调整,还可以将多块磁盘整合在一次,通过所述磁盘流控方法对整合后的整体进行流控调整,本实施例对此不作限定。
本申请实施例提供的一种优选实施方式中,所述磁盘流控方法基于所述流控模块实现;优选的,所述流控模块包括:流控管理子模块、统计子模块和流控调整子模块,如附图3所示。
所述统计子模块,用于统计所述磁盘在I/O线程内的读写参数。其中,所述读写参数包括:每秒处理读写请求的数目(IOPS,InputOutput Operations Per Second),每秒处理读写数据的字节数(BPS,Bits Per Second)。所述流控管理子模块,根据所述统计子模块统计获得的所述磁盘在I/O线程内的读写参数,根据所述读写参数对需要流控的磁盘进行动态调控,比如流控管理子模块定时收集磁盘在各线程内的IOPS、BPS信息,并通过一套动态调控算法需要流控的磁盘进行调整,动态调整IOPS、BPS信息对应的流控阈值到每个I/O线程中。优选的,为避免流控管理子模块对I/O线程的影响,所述流控管理子模块需要另起一个管理线程,该管理线程独立于所述I/O线程。所述流控管理子模块,用于根据流控管理子模块确定的流控阈值,利用所述流控阈值对所述磁盘在I/O线程内的I/O请求进行流控调整,比如实现单个磁盘或者多个磁盘在I/O线程内的流控。
优选的,可针对每一个I/O线程分别设置对应的统计子模块和流控调整子模块,建立I/O线程与统计子模块和流控调整子模块三者的一一对应关系,在此基础上,统计子模块和流控调整子模块可以在其对应的I/O线程中实现。基于此,所述磁盘的I/O线程之间互不干扰,每个I/O线程都有一个流控调整子模块,I/O请求能够并行的处理且多个I/O线程之间不需要加锁,能够充分的利用多核的优势。同时,通过管理线程中的流控管理子模块来定时的采集各个I/O线程中磁盘的IOPS、BPS信息,并通过一套调整算法动态的调整各I/O线程中磁盘的流控上限,在流控的同时均衡所述磁盘的各读写线程的读写压力。
本步骤中,获取所述磁盘在至少一个读写线程(I/O线程)中的读写参数,是指由所述统计子模块采集所述磁盘在各I/O线程内的IOPS、BPS信息。比如,参照附图3,在流控管理子模块设置一个定时任务,该定时任务启动时,流控管理子模块通知统计子模块采集一段时间内(如100ms)磁盘在各I/O线程内的IOPS、BPS信息,由统计子模块将采集到的各I/O线程内的IOPS、BPS信息返回给流控管理子模块。
步骤S102,判断所述读写参数是否满足流控调整条件。
上述步骤S101获取到所述磁盘在至少一个读写线程中的读写参数之后,本步骤根据获取到的所述读写参数,判断所述读写参数是否满足流控调整条件,即判断所述磁盘是否触发流控调整条件,若是,执行下述步骤S103,则需对所述磁盘进行流控调整,将所述磁盘的磁盘状态设为流控状态;若否,不作处理即可,或者返回执行上述步骤S101中所述的定时任务,待下一次定时任务来临时采集下一段时间内(如100ms)磁盘在各I/O线程内的IOPS、BPS信息。
本申请实施例提供的一种优选实施方式中,在本步骤判断所述读写参数是否满足流控调整条件执行前,获取所述磁盘的磁盘状态,其中,所述磁盘状态包括流控状态和非流控状态(比如,初始化状态)。优选的,所述流控调整条件包括:在所述非流控状态下所述读写线程中的读写参数之和大于第一读写参数阈值,在所述流控状态下所述读写线程中的读写参数之和大于第二读写参数阈值。进一步,还可将所述第一读写参数阈值设置为大于所述第二读写参数阈值;并将所述第一读写参数阈值设置为小于所述磁盘的读写参数的上限值。
以IOPS为例,如果磁盘的IOPS上限值为Limit,磁盘启动后处于初始化状态,此时磁盘的IOPS上限值设置为Limit。流控调整条件为:(1)在初始化状态下,磁盘在各I/O线程内IOPS之和大于第一读写参数阈值(例如,90%*Limit);(2)在流控状态下,磁盘在各I/O线程内IOPS之和大于第二读写参数阈值(例如,70%*Limit)。
基于上述所述磁盘状态,优选的,本步骤判断所述读写参数是否满足流控调整条件,采用如下方式实现:判断所述读写线程中的读写参数之和是否大于所述第一读写参数阈值,若是,执行下述步骤S103,将所述磁盘的磁盘状态设为流控状态,对所述磁盘进行流控调整;若否,判断所述磁盘的磁盘状态是否为所述流控状态,如果是所述流控状态,判断所述读写线程中的读写参数之和是否大于所述第二读写参数阈值,若大于,执行下述步骤S103,将所述磁盘的磁盘状态设为流控状态,对所述磁盘进行流控调整。
除上述提供的实施方式,还可以通过其他方式对所述磁盘的流控调整条件进行判断,比如,判断所述读写线程中的读写参数之和是否大于所述第二读写参数阈值,若是,判断所述磁盘的磁盘状态是否为所述流控状态,如果是所述流控状态,执行下述步骤S103,将所述磁盘的磁盘状态设为流控状态,对所述磁盘进行流控调整;如果不是所述流控状态,判断所述读写线程中的读写参数之和是否大于所述第一读写参数阈值,若大于执行下述步骤S103,将所述磁盘的磁盘状态设为流控状态,对所述磁盘进行流控调整。
步骤S103,将所述磁盘的磁盘状态设为流控状态。
本步骤和下述步骤S104得以实施的前提是上述步骤S102中判断所述读写参数是否满足流控调整条件的判断结果为是,如上所述,所述磁盘的磁盘状态分为流控状态和初始化状态,而只有在流控状态下所述磁盘才允许被流控调整,在此,本步骤将所述磁盘的磁盘状态设为流控状态,从而能够对所述磁盘进行调整。
步骤S104,对与所述磁盘的读写参数对应的流控阈值进行调整。
本申请实施例提供的一种优选实施方式中,对所述磁盘进行流控调整,具体是通过对与所述磁盘在各I/O线程内读写参数对应的流控阈值进行调整来实现,具体采用如下方式实现:
判断所述读写线程中的读写参数是否大于平均流量阈值,若是,将所述读写线程作为待调整读写线程;对所述待调整读写线程中的读写参数对应的流控阈值进行调整;其中,所述流控阈值包括:所述待调整读写线程中的读写参数对应的读写阈值上限。优选的,所述平均流量阈值,是指所述读写参数的上限值与所述读写线程的数目二者的比值。
在具体实施时,所述待调整读写线程中读写参数对应的流控阈值,可采用如下方式进行调整:
确定所述待调整读写线程中读写参数对应的目标读写阈值;
将所述待调整读写线程中读写参数对应的读写阈值上限调整为所述目标读写阈值。
优选的,所述目标读写阈值,是指所述磁盘的可分配流量值与所述待调整读写线程中的读写参数在所有待调整读写线程中的读写参数之和中所占比例的乘积,与所述平均流量阈值二者之和;
其中,所述磁盘的可分配流量值,是指所述磁盘的读写参数的上限值,减去所述待调整读写线程的数目与所述平均流量阈值二者乘积,再减去所述待调整读写线程之外所有读写线程中的读写参数之和。
下述以磁盘在各I/O线程内的IOPS为例进行说明:
如上所述,磁盘的IOPS上限值为Limit,I/O线程的数目为N,磁盘在每个I/O线程中的平均流量阈值Avg=1/N*Limit。随着业务提交的I/O请求的流量不断增大,当检测到磁盘的IOPS触发流控调整条件,将磁盘的状态设为流控状态,则需针对磁盘在各I/O线程中IOPS对应的读写阈值上限(IOPS上限值)进行调整。在调整时,判断每个I/O线程中的IOPS是否大于平均流量阈值Avg,对于IOPS小于或者等于平均流量阈值Avg的I/O线程,无需对这类I/O线程进行流控调整,如果这类I/O线程的数目为n1,这类I/O线程内的IOPS总和为s1。对于IOPS大于平均流量阈值Avg的I/O线程,这类I/O线程为待调整读写线程(待调整I/O线程),则需对待调整I/O线程进行流控调整,如果待调整I/O线程的数目为n2,待调整I/O线程中的IOPS总和为s2,待调整I/O线程最少需要分配的IOPS数目为s3=n2*Avg。
上述磁盘IOPS上限值为Limit,无需进行流控调整的I/O线程已经用掉Limit当中s1的IOPS,待调整I/O线程已经用掉Limit当中s3的IOPS,则剩余的可分配流量值(可分配IOPS)R=Limit-s1-s3。对于可分配流量值R,在分配给数目为n2个待调整I/O线程时,按照待调整I/O线程中各自IOPS所占的比例进行分配。比如n2个待调整I/O线程当中的任意一个待调整I/O线程x,待调整I/O线程x的IOPS为ix,则分配给该待调整I/O线程x的IOPS为:R*ix/s2;由此可知,待调整I/O线程x在流控调整后的IOPS上限值,即待调整I/O线程x的IOPS的目标读写阈值Ix=Avg+R*ix/s2。
例如,磁盘的IOPS上限值Limit为4000,流控模块包含4个I/O线程和1个管理线程,I/O请求被随机分配到了4个I/O线程中,管理线程中的流控管理子模块检测到4个I/O线程中IOPS分别为500、100、2000、1200,可见,这4个I/O线程中IOPS之和3800大于第一读写参数阈值90%*Limit=90%*4000=3600,则触发流控调整条件。
磁盘被设为流控状态,I/O线程1、I/O线程2、I/O线程3和I/O线程4初始设置的IOPS上限值均为2000,平均流量阈值Avg=1/N*Limit=1/4*4000=1000,I/O线程1和I/O线程2的IOPS小于平均流量阈值Avg,因此无需对I/O线程1和I/O线程2的IOPS上限值进行调整,其IOPS上限值依旧为2000。I/O线程3和I/O线程4中的IOPS大于平均流量阈值Avg,则需对I/O线程3和I/O线程4中的IOPS上限值进行动态调整,直至调整后I/O线程3和I/O线程4中的IOPS小于或者等于平均流量阈值Avg。对I/O线程3和I/O线程4中的IOPS上限值的动态调整过程具体如下:
(1)第一次调整:
I/O线程1和I/O线程2中的IOPS之和s1=500+100=600,I/O线程3和I/O线程4中的IOPS之和s2=2000+1200=3200,I/O线程3和I/O线程4最少需要分配的IOPS为:s3=2*Avg=2000,磁盘的可分配流量值R=Limit-s1-s3=4000-600-2000=1400。因此,I/O线程3中IOPS对应的目标读写阈值I3=Avg+R*i3/s2=1000+1400*2000/3200=1875;I/O线程4中IOPS对应的目标读写阈值I4=Avg+R*i4/s2=1000+1400*1200/3200=1525。
(2)第二次调整:
I/O线程1和I/O线程2中的IOPS之和s1=500+100=600,I/O线程3和I/O线程4中的IOPS之和s2=1875+1200=3025,I/O线程3和I/O线程4最少需要分配的IOPS为s3=2*Avg=2000,实际中I/O线程3的IOPS上限值调低会导致其上无法承载的I/O请求被随机分配到其他三个I/O线程上,因此剩余的可分配流量值R=Limit-s1-s3-(2000-1875)=4000-600-2000-125=1275。由此可得,I/O线程3中IOPS对应的目标读写阈值=Avg+R*i3/s2=1000+1275*1875/3025=1790,I/O线程4中IOPS对应的目标读写阈值I4=Avg+R*i4/s2=1000+1275*1200/3025=1505。
重复上述调整过程,直至某次调整后I/O线程4和I/O线程3的IOPS小于或者等于平均流量阈值Avg。
本申请实施例提供的另一种优选实施方式中,在上述提供的优选实施方式的基础上,在上述对所述待调整读写线程内读写参数对应的流控阈值进行调整子步骤执行后,还可执行如下操作:判断调整后所述待调整读写线程中的读写参数是否小于或者等于所述平均流量阈值,若是,不作处理即可;若否,返回执行所述对所述待调整读写线程中读写参数对应的流控阈值进行调整子步骤。
除此之外,在上述提供的优选实施方式的基础上,还可以在上述对所述待调整读写线程内读写参数对应的流控阈值进行调整子步骤执行后,判断调整后所述磁盘在所述读写线程中的读写参数之和是否小于所述第二读写参数阈值,若是,将所述磁盘的磁盘状态设为所述非流控状态;若否,继续上述动态调整过程的执行即可。比如磁盘在流控状态下进行流控调整后,磁盘在各线程中IOPS之和小于第二读写参数阈值70%*Limit,则将磁盘置为初始化状态。
综上所述,所述磁盘流控方法,在对所述磁盘进行流控调整时,依据获取到的所述磁盘在至少一个读写线程中的读写参数,判断所述磁盘是否触发流控调整条件,如果所述磁盘触发流控调整条件,则将所述磁盘设为流控状态,并在流控状态下对所述磁盘进行流控调整,在流控的同时均衡所述磁盘的各读写线程的读写压力,同时确保所述磁盘的读写线程之间互不干扰,缩短了流控耗时。
本申请提供的一种磁盘流控装置实施例如下:
在上述的实施例中,提供了一种磁盘流控方法,与之相对应的,本申请还提供了一种磁盘流控装置,下面结合附图进行说明。
参照附图4,其示出了本申请提供的一种磁盘流控装置实施例的示意图。
由于装置实施例基本相似于方法实施例,所以描述得比较简单,相关的部分请参见上述提供的方法实施例的对应说明即可。下述描述的装置实施例仅仅是示意性的。
本申请提供一种磁盘流控装置,包括:
读写参数获取单元401,用于获取磁盘在至少一个读写线程中的读写参数;
流控调整条件判断单元402,用于判断所述读写参数是否满足流控调整条件,若是,运行流控状态设置单元403和流控调整单元403;
所述流控状态设置单元403,用于将所述磁盘的磁盘状态设为流控状态;
所述流控调整单元404,用于对与所述磁盘的读写参数对应的流控阈值进行调整。
所述磁盘流控装置,包括:
磁盘状态获取单元,用于获取所述磁盘的磁盘状态;其中,所述磁盘状态包括:流控状态和非流控状态。
可选的,所述流控调整条件,包括下述至少一项:
在所述非流控状态下所述读写线程中的读写参数之和大于第一读写参数阈值,
在所述流控状态下所述读写线程中的读写参数之和大于第二读写参数阈值。
可选的,所述流控调整条件判断单元402,包括:
第一读写参数阈值判断子单元,用于判断所述读写线程中的读写参数之和是否大于所述第一读写参数阈值,若是,运行所述流控状态设置单元403和所述流控调整单元403;若否,运行第一流控状态判断子单元;
所述第一流控状态判断子单元,用于判断所述磁盘的磁盘状态是否为所述流控状态,如果是所述流控状态,判断所述读写线程中的读写参数之和是否大于所述第二读写参数阈值,若大于,运行所述流控状态设置单元403和所述流控调整单元403;
第二读写参数阈值判断子单元,用于判断所述读写线程中的读写参数之和是否大于所述第二读写参数阈值,若是,运行第二流控状态判断子单元;
所述第二流控状态判断子单元,用于判断所述磁盘的磁盘状态是否为所述流控状态,如果是所述流控状态,运行所述流控状态设置单元403和所述流控调整单元403;如果不是所述流控状态,判断所述读写线程中的读写参数之和是否大于所述第一读写参数阈值,若大于,运行所述流控状态设置单元403和所述流控调整单元403。
可选的,所述第一读写参数阈值大于所述第二读写参数阈值;且所述第一读写参数阈值小于所述磁盘的读写参数的上限值。
可选的,所述流控调整单元404,包括:
平均流量阈值判断子单元,用于判断所述读写线程中的读写参数是否大于平均流量阈值,若是,将所述读写线程作为待调整读写线程;
流控阈值调整子单元,用于对所述待调整读写线程中的读写参数对应的流控阈值进行调整;
其中,所述流控阈值包括:所述待调整读写线程中的读写参数对应的读写阈值上限。
可选的,所述流控调整单元404,包括:
平均流量阈值二次判断子单元,用于判断调整后所述待调整读写线程中的读写参数是否小于或者等于所述平均流量阈值,若否,运行所述流控阈值调整子单元。
可选的,所述流控调整单元404,包括:
读写参数判断子单元,用于判断调整后所述磁盘在所述读写线程中的读写参数之和是否小于所述第二读写参数阈值,若是,将所述磁盘的磁盘状态设为所述非流控状态。
可选的,所述平均流量阈值,是指所述读写参数的上限值与所述读写线程的数目二者的比值。
可选的,所述待调整读写线程中读写参数对应的流控阈值,采用如下方式进行调整:
确定所述待调整读写线程中读写参数对应的目标读写阈值;
将所述待调整读写线程中读写参数对应的读写阈值上限调整为所述目标读写阈值。
可选的,所述目标读写阈值,是指所述磁盘的可分配流量值与所述待调整读写线程中的读写参数在所有待调整读写线程中的读写参数之和中所占比例的乘积,与所述平均流量阈值二者之和;其中,所述磁盘的可分配流量值,是指所述磁盘的读写参数的上限值,减去所述待调整读写线程的数目与所述平均流量阈值二者乘积,再减去所述待调整读写线程之外所有读写线程中的读写参数之和。
可选的,所述读写参数,包括下述至少一项:每秒处理读写请求的数目,每秒处理读写数据的字节数。
可选的,所述磁盘包括:虚拟机中至少一块磁盘;并且,所述磁盘对应于分布式存储系统的存储集群。
可选的,所述磁盘流控装置,基于所述分布式存储系统设置的流控模块实现;其中,所述读写参数获取单元401基于所述流控模块包含的统计子模块运行;以及,所述流控调整条件判断单元402、所述流控状态设置单元403和/或所述流控调整单元404基于所述流控模块包含的流控管理子模块运行。
可选的,所述读写线程与所述流控模块包含的统计子模块和/或所述统计子模块一一对应;并且,所述流控调整子模块和/或所述统计子模块在其对应的读写线程中实现。
可选的,所述流控管理子模块基于管理线程实现,所述管理线程独立于所述读写线程。
本申请提供的一种电子设备实施例如下:
在上述的实施例中,提供了一种磁盘流控方法,此外,本申请还提供了一种用于实现所述磁盘流控方法的电子设备,下面结合附图进行说明。
参照附图5,其示出了本实施例提供的一种电子设备的示意图。
本申请提供的所述电子设备实施例描述得比较简单,相关的部分请参见上述提供的所述磁盘流控方法实施例的对应说明即可。下述描述的实施例仅仅是示意性的。
本申请提供一种电子设备,包括:
存储器501和处理器502;
所述存储器501用于存储计算机可执行指令,所述处理器502用于执行如下计算机可执行指令:
获取磁盘在至少一个读写线程中的读写参数;
判断所述读写参数是否满足流控调整条件,若是,将所述磁盘的磁盘状态设为流控状态;
对与所述磁盘的读写参数对应的流控阈值进行调整。
可选的,所述判断所述读写参数是否满足流控调整条件指令执行前,所述处理器502还用于执行如下计算机可执行指令:
获取所述磁盘的磁盘状态;其中,所述磁盘状态包括:流控状态和非流控状态。
可选的,所述流控调整条件,包括下述至少一项:
在所述非流控状态下所述读写线程中的读写参数之和大于第一读写参数阈值,
在所述流控状态下所述读写线程中的读写参数之和大于第二读写参数阈值。
可选的,所述判断所述读写参数是否满足流控调整条件,采用如下方式实现:
判断所述读写线程中的读写参数之和是否大于所述第一读写参数阈值,若是,执行所述将所述磁盘的磁盘状态设为流控状态指令;若否,判断所述磁盘的磁盘状态是否为所述流控状态,如果是所述流控状态,判断所述读写线程中的读写参数之和是否大于所述第二读写参数阈值,若大于,执行所述将所述磁盘的磁盘状态设为流控状态指令;
或者,
判断所述读写线程中的读写参数之和是否大于所述第二读写参数阈值,若是,判断所述磁盘的磁盘状态是否为所述流控状态,如果是所述流控状态,执行所述将所述磁盘的磁盘状态设为流控状态指令;如果不是所述流控状态,判断所述读写线程中的读写参数之和是否大于所述第一读写参数阈值,若大于,执行所述将所述磁盘的磁盘状态设为流控状态指令。
可选的,所述第一读写参数阈值大于所述第二读写参数阈值;且所述第一读写参数阈值小于所述磁盘的读写参数的上限值。
可选的,所述对与所述磁盘的读写参数对应的流控阈值进行调整,采用如下方式实现:
判断所述读写线程中的读写参数是否大于平均流量阈值,若是,将所述读写线程作为待调整读写线程;
对所述待调整读写线程中的读写参数对应的流控阈值进行调整;
其中,所述流控阈值包括:所述待调整读写线程中的读写参数对应的读写阈值上限。
可选的,所述对所述待调整读写线程中的读写参数对应的流控阈值进行调整指令执行后,所述处理器502还用于执行如下计算机可执行指令:
判断调整后所述待调整读写线程中的读写参数是否小于或者等于所述平均流量阈值,若否,返回执行所述对所述待调整读写线程中的读写参数对应的流控阈值进行调整指令。
可选的,所述处理器502还用于执行如下计算机可执行指令:
判断调整后所述磁盘在所述读写线程中的读写参数之和是否小于所述第二读写参数阈值,若是,将所述磁盘的磁盘状态设为所述非流控状态。
可选的,所述平均流量阈值,是指所述读写参数的上限值与所述读写线程的数目二者的比值。
可选的,所述待调整读写线程中读写参数对应的流控阈值,采用如下方式进行调整:
确定所述待调整读写线程中读写参数对应的目标读写阈值;
将所述待调整读写线程中读写参数对应的读写阈值上限调整为所述目标读写阈值。
可选的,所述目标读写阈值,是指所述磁盘的可分配流量值与所述待调整读写线程中的读写参数在所有待调整读写线程中的读写参数之和中所占比例的乘积,与所述平均流量阈值二者之和;其中,所述磁盘的可分配流量值,是指所述磁盘的读写参数的上限值,减去所述待调整读写线程的数目与所述平均流量阈值二者乘积,再减去所述待调整读写线程之外所有读写线程中的读写参数之和。
可选的,所述读写参数,包括下述至少一项:每秒处理读写请求的数目,每秒处理读写数据的字节数。
可选的,所述磁盘包括:虚拟机中至少一块磁盘;并且,所述磁盘对应于分布式存储系统的存储集群。
可选的,所述电子设备基于所述分布式存储系统设置的流控模块执行所述计算机可执行指令;其中,所述获取磁盘在至少一个读写线程中的读写参数指令,基于所述流控模块包含的统计子模块执行;以及,所述判断所述读写参数是否满足流控调整条件指令,所述将所述磁盘的磁盘状态设为流控状态指令,和/或所述对与所述磁盘的读写参数对应的流控阈值进行调整指令,基于所述流控模块包含的流控管理子模块执行。
可选的,所述读写线程与所述流控模块包含的统计子模块和/或所述统计子模块一一对应;并且,所述流控调整子模块和/或所述统计子模块在其对应的读写线程中实现。
可选的,所述流控管理子模块基于管理线程实现,所述管理线程独立于所述读写线程。
本申请虽然以较佳实施例公开如上,但其并不是用来限定本申请,任何本领域技术人员在不脱离本申请的精神和范围内,都可以做出可能的变动和修改,因此本申请的保护范围应当以本申请权利要求所界定的范围为准。
在一个典型的配置中,计算设备包括一个或多个处理器、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。