工作线程动态调整方法、装置、设备及存储介质与流程

文档序号:17694679发布日期:2019-05-17 21:22阅读:123来源:国知局
工作线程动态调整方法、装置、设备及存储介质与流程

本发明涉及计算机存储系统技术领域,特别是涉及一种存储系统工作线程动态调整的方法、装置、设备及计算机可读存储介质。



背景技术:

在全闪存储中,为实现数据的随机转顺序的存储方式,一般会采用后分配地址的方式,即写io下发的底层模块时,不附带具体的写入位置,而是当底层模块收到后写io后再以追加写方式分配一个地址,而后将该地址记录到元数据中,建立起逻辑地址与实际地址的映射关系,从而保证以后可以通过元数据正确查询到io的地址。另一方面为保证并发度,会将物理空间切块后,将不同的块挂载到不同的线程上,单个块内实现数据的追加写,而多线程的方式满足数据写入的并发度。

为提高系统性能,对于io的处理都是采用多线程并发处理的方式。但是工作线程数量往往难以选择,如果数量少则处理io的效率较低,影响系统性能,而如果过多,则对io的处理会太分散,而难以快速凑满条带。



技术实现要素:

本发明的目的是提供一种存储系统工作线程动态调整方法、装置、设备以及计算机可读存储介质,解决了目前存储系统中配置的用于处理io业务员的工作线程数量难以设定的问题,提高了存储系统的写性能。

为解决上述技术问题,本发明提供一种存储系统工作线程动态调整方法,包括:

接收并缓存待处理的io业务;

按照预设周期检测缓存的总io业务数量;

判断所述总io业务数量是否在预设业务数量范围内,如果否,则对用于处理所述io业务的配置工作线程数量进行调整;

通过调整后的各个工作线程并行对缓存的所述io业务进行处理。

其中,所述对处理所述io业务的工作线程数量进行调整包括:

当所述总io业务数量大于第一预设业务数量时,则增加工作线程数量;

当所述总io业务数量小于第二预设业务数量时,则减小工作线程数量;

其中所述第一预设业务数量大于所述第二预设业务数量。

其中,所述当所述总io业务数量大于第一预设业务数量时,则增加工作线程数量包括:

当所述总io业务数量大于所述第一预设业务数量,则增加1个工作线程;

检测获取新的总io业务数量;

若所述新的总io业务数量大于所述第一预设业务数量,则再次执行所述增加1个工作线程的操作;

若所述新的总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为本发明实施例提供的存储系统工作线程动态调整装置的结构框图。

具体实施方式

本发明的核心是提供一种存储系统工作线程动态调整方法、装置、设备以及计算机可读存储介质,通过检测需要处理的io业务数量合理配置总的工作线程。相对于常规的采用固定数量的工作线程处理io业务数据而言,本发明中能够在保证io业务处理高效率的情况下,提升系统性能。

为了使本技术领域的人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

如图1所示,图1为本发明实施例提供的一种存储系统工作线程动态调整方法的流程示意图,该方法具体可以包括:

步骤s1:接收并缓存待处理的io业务。

在底层模块的入口处,设置一个io缓存队列,凡是上层下发的写io,都将先插入到队列尾部,等待下一步的处理。工作线程在对io业务进行处理时,将首先从这个全局队列的头部取出一个待处理的io,然后由当前的工作线程对这个io进行分配地址以及凑条带等操作,每个工作线程在处理完一个io后,将再从队列中取出一个新的io进行处理。

步骤s2:按照预设周期检测缓存的总io业务数量。

周期性统计缓存队列中积攒的待处理io的数量,该待处理io业务的数量和io业务下发的频率有关,当io业务下发频率较高,而处理io业务的工作线程数量不足,则会导致io业务数量积攒过多。

步骤s3:判断总io业务数量是否在预设业务数量范围内,若否,则进入步骤s4;若是,则进入步骤s5。

步骤s4:对用于处理io业务配置的工作线程数量进行调整。

可选地,当总io业务数量大于第一预设业务数量时,则增加工作线程数量;

当所述总io业务数量小于第二预设业务数量时,则减小工作线程数量;

当总io业务数量小于第一预设业务数量而大于第二预设业务数量时,则保持当前工作线程数量不变。

其中,第一预设业务数量大于第二预设业务数量。

具体地,可以根据积攒的io业务的数量增加或减少配置的工作线程的数量。并且,该第一预设业务数量和第二预设业务数量可以根据存储系统中可配置的工作线程的数量以及常规情况下io业务下发的数量规律进行设定。

在具体调整工作线程的方式存在很多种,可以根据总io业务数量的多少划分多个数量等级,数量等级越高增加工作线程的数量越多,反之,数量等级越低增加工作线程的数量越少。同理,也可以按照类似的方式减少工作线程。

当然,本实施例中还可以按照其他方式调整工作线程的数量。

可选地,当总io业务数量大于第一预设业务数量,则增加1个工作线程;

检测获取新的总io业务数量;

避免增加的工作线程的数量不足以处理积攒过多数量的io业务。因此,再一次对总的io业务数量进行检测,进而达到动态调整工作线程的目的。

若新的总io业务数量大于第一预设业务数量,则再次执行所述增加1个工作线程的操作;

若所述新的总io业务数量小于所述第一预设业务数量且大于所述第二预设业务数量,则保持所述工作线程数量不变;

若新的总io业务数量小于第二预设业务数量,则减少一个工作线程。

步骤s5:通过目前已配置的各个工作线程并行对缓存的io业务进行处理。

具体地,各个工作线程按照各个io业务缓存的时间顺序逐个处理各个io业务。

需要说明的是,传统的存储系统的io业务处理中,所配备的并发工作的工作线程的数量是固定的。因为工作线程数量过多或过少均会影响存储系统的写性能。如果数量少则处理io的效率较低,影响系统性能,而如果过多,则对io的处理会太分散,而难以快速凑满条带。因此,常规情况下只能根据经验配置合适数量的工作线程,以在最大程度上满足io业务的处理需求。

但是对于上层下发的io业务的数量并非固定不变,是属于一种随机变化的状态。因此,本发明中也将工作线程的数量相应的采用动态配置,进而使得工作线程的数量随着io业务数量的变化而变化,工作线程的数量既不会过多也不会过少,从而在最大程度上提高存储系统中io业务处理的性能。

基于上述任意实施例,在本发明的另一具体实施例中,对于上述步骤s2具体可以包括:

获得多个相邻预设周期检测的总io业务数量的io业务数量平均值。

对应地,上述步骤s3具体可以包括:

判断io业务数量平均值是否在预设业务数量范围内。

考虑到只检测某一时刻的io业务数量,存在一定的偶然性,不足以反应整体的io业务的处理状态。因此可以选取多次(例如三次或更多)检测获得的业务数量取平均值,并以此作为判断io业务处理状态的依据。

当然还可以根据多个预设io业务数量的变化趋势来调整工作线程的数量。例如,当io业务数量呈减小趋势则相应地减少工作线程的数量,反之,当io业务数量呈增加趋势时则相应地增加工作线程的数量。对此,本发明中并不作具体限定。

下面对本发明实施例提供的存储系统工作线程动态调整装置进行介绍,下文描述的存储系统工作线程动态调整装置与上文描述的存储系统工作线程动态调整方法可相互对应参照。

图2为本发明实施例提供的存储系统工作线程动态调整装置的结构框图,参照图2中存储系统工作线程动态调整装置可以包括:

业务缓存模块100,用于接收并缓存待处理的io业务;

检测数量模块200,用于检测缓存的总io业务数量;

判断数量模块300,用于判断所述总io业务数量是否在预设业务数量范围内,如果否,则对处理所述io业务的工作线程数量进行调整;

业务处理模块400,用于通过调整后的各个工作线程并行对缓存的所述io业务进行处理。

可选地,在本发明的另一具体实施例中,所述判断数据模块300具体包括线程调整单元;

所述线程调整单元,用于当所述总io业务数量大于第一预设业务数量时,则增加工作线程数量;当所述总io业务数量小于第二预设业务数量时,则减小工作线程数量;其中所述第一预设业务数量大于所述第二预设业务数量。

可选地,所述检测数量模块200具体用于所述获得多个预设周期检测的总io业务数量的io业务数量平均值;

所述判断数量模块300用于,判断所述io业务数量平均值是否在预设业务数量范围内。

可选地,在本发明的另一具体实施例中,判断数量模块300进一步地包括:

线程调整单元,用于当所述总io业务数量大于第一预设业务数量时,则增加工作线程数量;当所述总io业务数量小于第二预设业务数量时,则减小工作线程数量;其中所述第一预设业务数量大于所述第二预设业务数量。

可选地,线程调整单元具体还可以用于当所述总io业务数量大于所述第一预设业务数量,则增加1个工作线程;再通过检测数量模块200检测获取新的总io业务数量;若所述新的总io业务数量大于所述第一预设业务数量,则再次执行所述增加1个工作线程的操作;若所述新的总io业务数量小于所述第一预设业务数量且大于所述第二预设业务数量,则保持所述工作线程数量不变;若所述新的总io业务数量小于第二预设业务数量,则减少一个工作线程。

本实施例的存储系统工作线程动态调整装置用于实现前述的存储系统工作线程动态调整方法,因此业务缓存模块装置中的具体实施方式可见前文中的存储系统工作线程动态调整方法的实施例部分,例如,业务缓存模块100,用于实现上述存储系统工作线程动态调整方法中步骤s1;检测数量模块200,用于实现上述存储系统工作线程动态调整方法中步骤s2;判断数量模块300,用于实现上述存储系统工作线程动态调整方法中步骤s3和s4;业务处理模块400,用于实现上述存储系统工作线程动态调整方法中步骤s5,所以,其具体实施方式可以参照相应的各个部分实施例的描述,在此不再赘述。

本发明中还提供了一种存储系统工作线程动态调整设备,包括:

存储器,用于存储用于计算机程序;

处理器,用于执行所述计算机程序时实现如上任意实施例所述存储系统工作线程动态调整方法的步骤。

本发明还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上任意实施例所述存储系统工作线程动态调整方法的步骤。

本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或技术领域内所公知的任意其它形式的存储介质中。

以上对本发明所提供的存储系统工作线程动态调整方法、装置设备以及计算机可读存储介质进行了详细介绍。本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1