一种对存储阵列进行刷盘的方法和装置与流程

文档序号:14623340发布日期:2018-06-08 03:29阅读:195来源:国知局
本发明涉及计算机
技术领域
:,特别涉及一种对存储阵列进行刷盘的方法和装置。
背景技术
::目前,存储系统通常包括存储控制器和存储阵列。其中,存储控制器用于接收前台IO数据,并将接收到的前台IO数据临时存储到本地的缓存中(此处理过程可称为前台IO处理),然后再按照预设的刷盘机制,将本地缓存中的数据下刷到存储阵列中(此处理过程可称为刷盘处理),从而可以确保前台IO数据在存储控制器中停留时间不会过长,使得存储控制器有相应的空间可以接收服务器的写入数据。存储控制器的刷盘机制可以基于缓存的数据量,以及缓存中的数据增长速率来确定刷盘速率,刷盘速率可以是单次下刷的数据量。缓存的数据量越多,刷盘速率越快,这样,存储控制器的最大刷盘速率可以接近存储阵列的最大存储能力,从而提高数据存储的效率。在实现本发明的过程中,发明人发现现有技术至少存在以下问题:在分布式存储系统中,一个存储阵列连接多个存储控制器,因此存储阵列的负载受到多个存储控制器的影响。这样,当存储阵列负载较大时,存储控制器仍基于上述刷盘机制下刷数据,会导致下刷的数据无法得到及时的处理,容易导致存储控制器循环超时重发,使得刷盘的效率较低。技术实现要素:为了解决现有技术的问题,本发明实施例提供了一种对存储阵列进行刷盘的方法和装置。所述技术方案如下:第一方面,提供了一种对存储阵列进行刷盘的方法,所述方法包括:获取目标存储阵列对应的第一历史刷盘周期内的刷盘时延和超时读写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是本发明实施例提供的一种对存储阵列进行刷盘的装置结构示意图。具体实施方式为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。本发明实施例提供了一种对存储阵列进行刷盘的方法,该方法的执行主体为存储控制器,也可以是存储控制器中的安装的某应用程序。其中,存储控制器可以是分布式存储系统中的存储控制器,或者,也可以是其他存储系统中的存储控制器,本实施例以执行主体为分布式存储系统中的存储控制器为例进行说明,其他情况与之类似。如图1所示,为本发明实施例提供的系统框架图,包括存储控制器、前台IO服务器和存储阵列。其中,存储控制器可以分别与多个前台IO服务器和多个存储阵列建立数据连接。当某用户需要存储数据时,用户可以通过终端等设备向前台IO服务器发送存储请求,该存储请求中可以携带有需要存储的数据,前台IO服务器则可以接收到该存储请求,然后可以获取需要进行存储的数据,进而可以将该数据发送给存储控制器。存储控制器接收到前台IO服务器发送的数据后,可以将该数据存到本地的存储部件(可称为缓存)中,然后可以将缓存中的数据存储到与其建立数据连接的存储阵列中。其中,前台IO服务器将数据存储到存储控制器中的过程,可以称为前台IO处理;存储控制器将本地缓存中的数据存储到存储阵列中的过程可以称为刷盘处理。对于与该存储控制器建立连接的任一存储阵列,存储控制器可以周期性的对该存储阵列进行刷盘处理,刷盘周期的时长可以由技术人员进行设置,另外,技术人员可以预先设置刷盘周期内的刷盘频率、刷盘速率和刷盘周期内的刷盘量上限等参数。其中,刷盘频率可以是单位时间内的刷盘次数,如1s内10次;刷盘速率可以是每次下刷的数据量,如1次下刷1mb的数据;存储控制器可以以数据包的形式向存储阵列下刷数据,可以一次下刷一个或多个数据包,存储控制器在一个刷盘周期内下刷的数据包的数目,可以称为该刷盘周期内的下刷IO数目;刷盘周期内的刷盘量上限可以是每个刷盘周期内对该存储阵列下刷数据的上限,如下刷的数据量的上限或数据包的数目上限。参见图2,其示出了本发明示例性实施例提供的一种存储控制器,该存储控制器可以是上述发送端或者接收端,该存储控制器10包括收发器1011和存储器1012,该存储控制器还可以包括处理器1013和网络接口1014。其中,存储器1012和网络接口1014分别与处理器1013连接;存储器1012用于存储程序代码,程序代码包括计算机操作指令,处理器1013和收发器1011用于执行存储器1012中存储的程序代码,用于实现对存储阵列进行刷盘的相关处理,并可以通过网络接口1014与基站或其他存储控制器进行交互。处理器1013包括一个或者一个以上处理核心。处理器1013通过运行软件程序以及单元,从而执行下述对存储阵列进行刷盘的方法。在一个可能的设计中,该存储控制器还可以包括总线1015等部件。其中,存储器1012与网络接口1014分别通过总线1015与处理器1013和收发器1011相连。存储器1012可用于存储软件程序以及单元。具体的,存储器1012可存储操作系统10121、至少一个功能所需的应用程序单元10122。操作系统10121可以是实时操作系统(RealTimeexecutive,RTX)、LINUX、UNIX、WINDOWS或OSX之类的操作系统。图3是本发明一示例性实施例提供的一种对存储阵列进行刷盘的方法流程图,该方法可以用于如图1所示的系统框架中。通过该方法,可以对刷盘速率和刷盘量上限进行调整,解决分布式存储系统中,底层存储负载较大时,缓存刷盘速率过大导致大量无效刷盘的问题。并可以通过对刷盘周期内的刷盘量上限进行调控,解决缓存刷盘前台业务资源,影响前台IO性能的问题,从而可以有效的提高刷盘效率,并可以提高后台刷盘业务繁忙时的前台客户体验。如图3所示,该对存储阵列进行刷盘的方法可以包括:步骤301,获取目标存储阵列对应的第一历史刷盘周期内的刷盘时延和超时读写IO数目。在实施中,存储控制器在对某个存储阵列(即目标存储阵列)进行刷盘处理时,可以向目标存储阵列发送数据存储指令,数据存储指令中可以携带有需要进行存储的数据。目标存储阵列接收到该数据存储指令后,可以对该数据存指令中的数据进行存储,存储成功后,可以向存储控制器返回对应的刷盘成功通知,以使存储控制器获知该数据已存储成功。存储控制器向目标存储阵列发送数据存储指令后,可以开始计时,当接收到对应该数据存储指令对应的刷盘成功通知后,可以停止计时,得到刷盘时延。这样,存储控制器可以得到该刷盘周期内的多个刷盘时延。存储控制器还可以统计该刷盘周期内的接收到刷盘成功通知的数目(可称为成功IO数目),服务器确定该刷盘周期内的多个刷盘时延之后,可以求取多个刷盘时延之和与该刷盘周期内的成功IO数目的比值,得到该刷盘周期内的刷盘时延。存储控制器还可以统计该刷盘周期内的超时读写IO数目,超时读写IO数目是指超过预设时长后仍没有接收到刷盘成功通知的数据存储指令的数目。预设时长可以是存储系统中预先设置的超时时长,比如可以设置为5S,服务器可以从该IO下刷后(即发送数据存储指令后)开始计时,以判断是否超时。当刷盘时延较大或者超时IO数目较多时,说明该存储阵列的负载较高,相应的处理能力较低,而当刷盘时延较小或者超时IO数目较少时,则说明该存储阵列的负载较低,相应的处理能力较高。基于上述处理,存储控制器可以在对目标存储阵列进行刷盘的过程中,确定每个刷盘周期对应的刷盘时延和超时读写IO数目,并进行对应的存储。存储控制器可以在达到预设刷盘计算时间,或者预设刷盘计算条件时,获取目标存储阵列对应的第一历史刷盘周期内的刷盘时延和超时读写IO数目,以便进行后续处理。其中,第一历史刷盘周期可以是与当前时间最接近的一个历史刷盘周期,也可以是与当前时间最接近的多个历史刷盘周期。在实际中,可以在上一周期结束之前,计算本周期的刷盘速率(即执行步骤301),以提高计算刷盘速率的及时性,如图4所示,其中包括刷盘周期t-2、刷盘周期t-1和刷盘周期t。可选的,第一历史刷盘周期可以包括多个历史刷盘周期,相应的,确定第一历史刷盘周期内的刷盘时延的处理过程可以如下:根据目标存储阵列对应的至少一个历史刷盘周期中的每个历史刷盘周期的刷盘时延,以及每个历史刷盘周期对应的权值,确定加权平均时延,将加权平均时延作为第一历史刷盘周期内的刷盘时延。在实施中,对于第一历史刷盘周期包括多个历史刷盘周期的情况,存储控制器可以分别获取每个历史刷盘周期的刷盘时延,根据预设的每个历史刷盘周期对应的权值,分别确定每个刷盘时延与对应的权值的乘积,再计算各乘积的和值,得到加权平均时延。其中,与当前时间越接近的历史刷盘周期,对应的权值越大,这样,可以有效的防止单个历史周期的刷盘时延跳变,而影响刷盘速率的调节,提高调节刷盘速率的准确度。例如,第一历史刷盘周期包括三个历史刷盘周期,各个历史刷盘周期的刷盘时延分别0.2s、0.3s和0.1s,各个历史刷盘周期的权值可以分别为0.2、0.2和0.6,加权平均时延为0.2*0.2+0.3*0.2+0.1*0.6=0.16s。可选的,第一历史刷盘周期可以包括多个历史刷盘周期,相应的,确定第一历史刷盘周期内的超时IO数目的处理过程可以如下:根据目标存储阵列对应的至少一个历史刷盘周期中的每个历史刷盘周期的超时IO数目,以及每个历史刷盘周期对应的权值,确定加权平均数目,将加权平均数目作为第一历史刷盘周期内的超时IO数目。在实施中,对于第一历史刷盘周期包括多个历史刷盘周期的情况,存储控制器可以分别获取每个历史刷盘周期的超时IO数目,以及每个历史刷盘周期对应的权值,然后分别确定每个超时IO数目与对应的权值的乘积,再计各乘积的和值,得到加权平均数目。其中,与当前时间越接近的历史刷盘周期,对应的权值越大,这样,可以有效的防止单个历史周期的超时IO数目跳变,而影响刷盘速率的调节,提高调解刷盘速率的准确度。例如,第一历史刷盘周期包括三个历史刷盘周期,各个历史刷盘周期的超时IO数目分别100、150和90,各个历史刷盘周期的权值可以分别为0.2、0.2和0.6,加权平均数目为100*0.2+150*0.2+90*0.6=104。步骤302,根据预先存储的刷盘时延、超时IO数目和调整系数的对应关系,以及第一历史刷盘周期内的刷盘时延和超时IO数目,确定对应的第一调整系数。在实施中,存储控制器可以预先存储刷盘时延、超时IO数目和调整系数的对应关系,该对应关系可以由技术人员设置。其中,调整系数可以是刷盘速率乘以的调整值,也可以是刷盘速率增加的百分比。存储控制器获取到第一历史刷盘周期内的刷盘时延和超时IO数目后,可以在该对应关系中,查找该刷盘时延和该超时IO数目对应的调整系数,以便进行后续处理。可选的,确定第一调整系数的具体的处理过程可以如下:获取刷盘时延阈值和超时IO数目阈值,确定第一历史刷盘周期内的刷盘时延与刷盘时延阈值的第一刷盘时延比值;如果第一历史刷盘周期内的超时IO数目小于超时IO数目阈值,则根据预先存储的调整系数与刷盘时延比值的第一对应关系中,确定第一刷盘时延比值对应的第一调整系数,刷盘时延比值为刷盘时延与刷盘时延阈值的比值;如果第一历史刷盘周期内的超时IO数目大于超时IO数目阈值,则根据预先存储的调整系数与刷盘时延比值的第二对应关系中,确定第一刷盘时延比值对应的第一调整系数,刷盘时延比值为刷盘时延与刷盘时延阈值的比值。在实施中,存储阵列中可以存储刷盘时延阈值和超时IO数目阈值,刷盘时延阈值和超时IO数目阈值可以是预先设置的,也可以是计算得到的,后续会进行详细说明。存储阵列获取到刷盘时延阈值和超时IO数目阈值后,可以计算第一历史刷盘周期内的刷盘时延与刷盘时延阈值的比值(可称为第一刷盘时延比值),存储控制器还可以将第一历史刷盘周期内的超时IO数目与超时IO数目阈值进行比较,如果第一历史刷盘周期内的超时IO数目小于超时IO数目阈值,则根据预先存储的调整系数与刷盘时延比值的第一对应关系,确定第一刷盘时延比值对应的第一调整系数;如果第一历史刷盘周期内的超时IO数目大于超时IO数目阈值,则根据预先存储的调整系数与刷盘时延比值的第二对应关系,确定第一刷盘时延比值对应的第一调整系数。在实际中,如果第一历史刷盘周期内的超时IO数目小于超时IO数目阈值,则说明存储阵列的负载较低,可以适当的增大刷盘速率;如果第一历史刷盘周期内的超时IO数目大于超时IO数目阈值,则说明存储阵列的负载较高,可以适当的降低刷盘速率。刷盘时延、超时IO数目和调整系数的对应关系可以如表一所示。表一时延及超时统计ηt(γ≤γthre)ηt(γ>γthre)latt<τ×40%ηt=1.05-ηt=0.5τ×40%≤latt<τ×90%ηt=1-ηt=0.5τ×90%≤latt<τηt=1-ηt=0.5τ≤latt<τ×110%ηt=1-ηt=0.5τ×110%≤latt<timeoutηt=0.95-ηt=0.5latt≥timeout-ηt=0.90-ηt=0.5其中,lat为刷盘时延,latt表示第一历史刷盘周期内的刷盘时延;τ为刷盘时延阈值;γ为第一历史刷盘周期内的超时IO数目;γthre为超时IO数目阈值;ηt为调整系数。例如:当第一历史刷盘周期内的超时IO数目小于等于超时IO数目阈值时,如果第一刷盘时延/刷盘时延阈值<40%,则第一调整系数为1.05,如果90%<第一刷盘时延/刷盘时延阈值<1,则第一调整系数为1;当第一历史刷盘周期内的超时IO数目大于超时IO数目阈值时,如果第一刷盘时延/刷盘时延阈值<40%,则第一调整系数为-0.5。对于存储阵列通过计算得到的刷盘时延阈值的情况,相应的处理过程可以如下:根据连续的预设数目个统计周期中的每个统计周期的成功IO数目与IO总数目,分别确定每个统计周期的IO成功率,统计周期的时长包括至少一个刷盘周期的时长;如果每个统计周期的IO成功率均大于第一预设阈值,则根据历史刷盘时延阈值和预设的时延增加算法,确定当前的刷盘时延阈值;如果每个统计周期的IO成功率均小于第二预设阈值,则根据历史刷盘时延阈值和预设的时延减小算法,确定当前的刷盘时延阈值。其中,历史刷盘时延阈值可以为与当前统计周期最接近的前一个刷盘周期内的刷盘时延阈值。在实施中,存储控制器中还可以设置有统计周期,统计周期的时长可以为至少一个个刷盘周期的时长。存储控制器可以确定每个统计周期内的IO总数目,以及成功IO数目。其中,成功IO数目可以为存储控制器在统计周期内向存储阵列发送数据存储指令后接收到对应的刷盘成功通知的IO数目。存储控制器可以获取预设数目个统计周期中的成功IO数目与IO总数目,根据每个统计周期的成功IO数目和IO总数目,分别计算每个统计周期的成功IO数目与IO总数目的比值,得到每个统计周期的IO成功率。统计周期内的成功IO数目与IO总数目的数目比值越大,说明存储阵列的负载较小;统计周期内的成功IO数目与IO总数目的数目比值越小,则说明存储阵列的负载较大。相应的计算公式可以如下:其中,period_flush_cnt为刷盘周期内IO总数目,period_flush_response-cnt为刷盘周期内下刷并且在本刷盘周期内返回刷盘成功通知的IO个数,period-flush-response-rate是刷盘周期内的IO成功率。存储控制器可以将计算出的预设数目个IO成功率分别与第一预设阈值进行比较,如果每个统计周期的IO成功率均大于第一预设阈值,则可以根据历史刷盘时延阈值和预设的时延增加算法,确定当前的刷盘时延阈值。例如,可以将历史刷盘时延阈值增加预设数值。或者,存储控制器中可以预先存储多个刷盘时延阈值(可称为多个档位的刷盘时延阈值),存储控制器可以将多个刷盘时延阈值中,选择大于历史刷盘时延阈值的刷盘时延阈值,作为当前的刷盘时延阈值,存储控制器可以将大于历史刷盘时延阈值一个档位的刷盘时延阈值,作为当前的刷盘时延阈值,也可以将大于历史刷盘时延阈值多个档位的刷盘时延阈值,作为当前的刷盘时延阈值。如果每个统计周期的IO成功率均小于第二预设阈值,则可以根据历史刷盘时延阈值和预设的时延减小算法,确定当前的刷盘时延阈值。例如,可以将历史刷盘时延阈值减小预设数值。或者,存储控制器中可以预先存储多个刷盘时延阈值(可称为多个档位的刷盘时延阈值),存储控制器可以将多个刷盘时延阈值中,选择小于历史刷盘时延阈值的刷盘时延阈值,作为当前的刷盘时延阈值,存储控制器可以将小于历史刷盘时延阈值一个档位的刷盘时延阈值,作为当前的刷盘时延阈值,也可以将小于历史刷盘时延阈值多个档位的刷盘时延阈值,作为当前的刷盘时延阈值。第一阈值可以大于等于第二预设阈值。如图5所示,为刷盘时延阈值的档位调整的示意图,其中包括N个刷盘时延阈值的档位。如果每个统计周期的IO成功率不都小于第二预设阈值,或者不都大于第一预设阈值,则可以不进行调整,将历史刷盘时延阈值作为当前的刷盘时延阈值。如表二所示,为刷盘时延阈值的调整规则,其中,本申请以选择3个统计周期为例:表二本周期下放IO回复比例Response_rateT-3>90%35%≤Response_rateT-3≤90%<35%TargetLantencyChangeIncreaseStableDecrease其中,Response_rateT-3可以为与当前统计周期最接近的3个历史统计周期对应的IO成功率;90%为第一预设阈值;35%为第二预设阈值;TargetLantencyChange为调整策略。步骤303,根据确定出的第一调整系数,以及第二历史刷盘周期内的刷盘速率,确定目标刷盘速率。在实施中,存储控制器还可以获取第二历史刷盘周期内的刷盘速率。第二历史刷盘周期可以为与当前刷盘周期最接近的前一个刷盘周期;或者,第二历史刷盘周期可以包括多个历史刷盘周期。存储控制器可以用第二历史刷盘周期内的刷盘速率,乘以第一调整系数,得到目标刷盘速率。可选的,对于第二历史刷盘周期可以包括多个历史刷盘周期的情况,相应的,存储控制器确定第二历史刷盘周期内的刷盘速率的方法可以如下:根据多个历史刷盘周期中的每个历史刷盘周期的刷盘速率,以及每个历史刷盘周期对应的权值,确定加权平均速率,将加权平均速率作为第二历史刷盘周期内的刷盘速率。在实施中,存储控制器可以分别获取每个历史刷盘周期的刷盘速率,以及每个历史刷盘周期对应的权值,然后分别确定每个刷盘速率与对应的权值的乘积,再计算各乘积的和值,得到加权平均速率。其中,与当前时间越接近的历史刷盘周期,对应的权值越大。例如,第二历史刷盘周期包括3个历史刷盘周期,各个历史刷盘周期的刷盘速率分别1MB、1.5MB和0.9MB,各个历史刷盘周期的权值可以分别为0.2、0.2和0.6,加权平均速率为1*0.2+1.5*0.2+0.9*0.6=1.04。步骤304,基于目标刷盘速率,对目标存储阵列进行刷盘处理。在实施中,存储控制器确定目标刷盘速率后,可以基于目标刷盘速率,对目标存储阵列进行刷盘处理。另外,还可以对各刷盘周期的刷盘量上限进行调整,相应的处理过程可以如下:获取目标存储阵列对应的第三历史刷盘周期内的刷盘量上限,以及用于调整刷盘量上限的第二调整系数;根据第三历史刷盘周期内的刷盘量上限和第二调整系数,确定目标刷盘量上限;基于目标刷盘速率和目标刷盘量上限,对目标存储阵列进行刷盘处理。其中,第三历史刷盘周期可以是与当前时间最接近的一个历史刷盘周期,也可以是与当前时间最接近的多个历史刷盘周期。在实施中,第三历史刷盘周期可以包括多个历史刷盘周期,存储控制器可以根据每个历史刷盘周期中的刷盘量上限,以及每个历史刷盘周期对应的权值,确定第三历史刷盘周期内的加权平均刷盘量上限,具体的过程与上述类似,不再赘述。存储控制器还可以获取用于调整刷盘量上限的第二调整系数,第二调整系数可以是预设的,也可以是通过计算得到的,后续会进行详细说明。存储控制器可以用第三历史刷盘周期内的刷盘量上限,乘以第二调整系数,得到目标刷盘量上限,然后可以根据目标刷盘速率进行刷盘,如果刷盘量超过目标刷盘量上限,则停止刷盘,等待刷盘周期结束,反之,则继续进行刷盘。相应的计算公式可以如下:BWback=BWfront*Ratiot其中,BWfront为第三历史刷盘周期内的刷盘量上限,Ratiot为第二调整系数。BWBACK为目标刷盘量上限。可选的,存储控制器确定第二调整系数的过程可以如下:获取历史缓存周期内无前台IO处理的总时长;根据预先存储的调整系数与时长比值的对应关系,以及无前台IO处理的总时长与历史缓存周期的总时长的时长比值,确定对应的第二调整系数。在实施中,刷盘量上限可以由存储控制器的繁忙程度决定,当存储控制器的无前台IO处理的总时长与历史缓存周期的总时长的时长比值较大时,说明存储控制器负载较小,此时可以增加存储控制器的刷盘量上限,当存储控制器的无前台IO处理的总时长与历史缓存周期的总时长的时长比值较小时,说明存储控制器负载较大,此时可以减小存储控制器的刷盘量上限。如图6所示,为一个缓存周期的示意图,其中,Tidle1为该缓存周期内第一个无前台IO处理的时间段,Tidle2为缓存周期内第二个无前台IO处理的时间段,Tidle3为缓存周期内第三个无前台IO处理的时间段。相应的计算公式可以如下:其中,TidleN为缓存周期内无前台IO处理的时间段,T为缓存周期的总时长。存储控制器可以预先设置缓存周期的时长,缓存周期的时长可以包括至少一个刷盘周期的时长。存储服务器还可以统计每个缓存周期内无前台IO处理的总时长,并进行存储。存储控制器可以获取某历史缓存周期内无前台IO处理的总时长,该历史缓存周期可以是与当前时间最接近的历史缓存周期。存储服务器可以计算该历史缓存周期内无前台IO处理的总时长与历史缓存周期的总时长的比值(可称为时长比值),然后可以根据预先存储的调整系数与时长比值的对应关系,确定对应的第二调整系数。该对应关系可以以对应关系表的形式进行存储,如表三所示:表三其中,Pidle可以为无前台IO处理的总时长与历史缓存周期的总时长的比值;ηt可以为调整系数。另外,存储控制器还可以对第二调整系数进一步调整,相应的处理过程可以如下:将确定出的第二调整系数与预设调整系数进行对比,如果确定出的第二调整系数大于或等于预设调整系数,则根据第二调整系数和第三历史刷盘周期内的刷盘量上限,确定目标刷盘量上限;否则,根据预设调整系数和第三历史刷盘周期内的刷盘量上限,确定目标刷盘量上限。这样,可以防止本周期刷盘量上限计算比例系数过小,而导致计算得出缓存刷盘量过小。相应的公式可以如下:Ratiot=max(Ratiot-1*ηt,Ratiodefault)其中ηt为第二调整系数,Rattodefrgault为预设调整系数。需要说明的是,进行刷盘处理之前,存储控制器可以先根据缓存水位(即当前缓存的使用量)和底层负载情况,确定第一个刷盘周期内的刷盘速率。第一个刷盘周期内的刷盘量上限可以是预设的。基于相同的技术构思,本发明实施例还提供了一种对存储阵列进行刷盘的方法,如图7所示,该方法可以包括以下步骤:步骤701,刷盘处理开始。步骤702,确定目标刷盘周期的目标刷盘速率,以及目标刷盘量上限。该步骤的具体处理过程可以参照上述步骤301~304,不再赘述。步骤703,当目标刷盘周期开始时,根据目标刷盘速率进行刷盘处理。步骤704,判定是否达到目标刷盘量上限,如果是,则执行步骤705,如果否,则执行步骤706。步骤705,停止刷盘。步骤706,判定目标刷盘周期是否结束,如果是,则执行步骤707,如果否,则执行步骤704。步骤707,目标刷盘周期结束。本发明实施例中,在对存储阵列进行刷盘时,可以根据预先存储的刷盘时延、超时IO数目和调整系数的对应关系,以及第一历史刷盘周期内的刷盘时延和超时IO数目,确定对应的第一调整系数,然后根据第一调整系数,以及第二历史刷盘周期内的刷盘速率,确定目标刷盘速率,进而基于目标刷盘速率,对目标存储阵列进行刷盘处理,这样,可以对刷盘速率进行调整,避免出现因存储阵列负载较大,而导致下发的刷盘数据无法得到及时的处理的情况,从而可以提高刷盘的效率。图8是本发明实施例提供的一种存储阵列进行刷盘的装置的结构方框图,该装置可以通过软件、硬件或者两者的结合实现成为终端的部分或者全部。该装置包括:获取单元801、确定单元802和刷盘单元804。获取单元801,用于执行上述实施例中的步骤301及其可选方案。确定单元802,用于执行上述实施例中的步骤302~步骤303及其可选方案。刷盘单元804,用于执行上述实施例中的步骤304及其可选方案。本发明实施例中,在对存储阵列进行刷盘时,可以根据预先存储的刷盘时延、超时IO数目和调整系数的对应关系,以及第一历史刷盘周期内的刷盘时延和超时IO数目,确定对应的第一调整系数,然后根据第一调整系数,以及第二历史刷盘周期内的刷盘速率,确定目标刷盘速率,进而基于目标刷盘速率,对目标存储阵列进行刷盘处理,这样,可以对刷盘速率进行调整,避免出现因存储阵列负载较大,而导致下发的刷盘数据无法得到及时的处理的情况,从而可以提高刷盘的效率。需要说明的是:上述实施例提供的对存储阵列进行刷盘的装置在对存储阵列进行刷盘时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的对存储阵列进行刷盘的装置与对存储阵列进行刷盘的方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。当前第1页1 2 3 当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1