对存储器的输入带宽进行调整的方法及存储系统与流程

文档序号:31318354发布日期:2022-08-31 01:18阅读:56来源:国知局
对存储器的输入带宽进行调整的方法及存储系统与流程

1.本技术涉及存储领域,尤其涉及一种对存储器的输入带宽进行调整的方法及存储系统。


背景技术:

2.在存储系统中,一般都包括多级存储,例如用于缓存数据的内存和用于持久性存储数据的存储池。由于内存的读写速度比较快,所以会将热数据存储在内存中。但是内存的空间有限,当内存的水位线超过一定阈值的时候,根据预设的内存淘汰策略,会将内存中相对冷的数据淘汰至存储池。内存的水位线为内存中的数据占内存存储空间的比率,也可称为内存占有率。但是,在数据写入内存的带宽大于数据淘汰出内存的带宽时,则容易导致内存写满,内存写满会导致写入内存的数据重发,影响数据写入效率。相关技术中,可以将内存的水位线划分若干个等级,针对不同的等级对内存的输入带宽进行不同程度的调整,这样,可以降低内存写满的几率。但是采用这种方式,在一些场景中,还是会使内存写满。


技术实现要素:

3.本发明提供一种对内存的输入带宽调整方法及存储系统,通过根据内存水位线和单位时间内内存中存储的数据量的变化,对内存的输入带宽进行调整,从而在一定程度上降低所述内存被写满的概率。
4.本技术第一方面提供一种存储系统,该存储系统包括处理器和第一存储器。所述处理器用于获取与所述第一存储器相关的至少两个参数:第一参数和第二参数。其中,第一参数是指第一存储器的水位线,水位线用于指示所述第一存储器存储的数据的数据量。所述第二参数用于指示单位时间内所述第一存储器中存储的数据量的变化。在获取所述至少两个参数后,所述处理器根据所述至少两个参数调整所述第一存储器的输入带宽。
5.所谓第一存储器中存储的数据量的变化可以是输入所述第一存储器中的数据量与从所述第一存储器中输出的数据量的差值,或者所述差值与所述输入所述第一存储器中的数据量之间的比值,或者所述差值与从所述第一存储器中输出的数据量之间的比值。单位时间内第一存储器中存储的数据量的变化可以反映出所述第一存储器处理数据的效率。决定所述第一存储器是否会被写满的因素不仅包含该存储器的水位线,还取决于该存储器处理数据的效率。举个例子,即使第一存储器在某一个时间点的水位线已相对较高,但该存储器处理数据的效率也较高导致第一存储器中数据量的变化较小,此时,第一存储器被写满的概率也比较小。。
6.由此,在第一方面提供的存储系统中,处理器根据上述两个参数来调整所述第一存储器的输入带宽,可以更加准确地判断出是不是需要对第一存储器的输入带宽进行调整以及调整到什么程度,从而在一定程度上降低了第一存储器被写满的概率。
7.所述第一存储器中存储的数据量的变化是由输入至所述第一存储器的数据以及从所述第一存储器输出至所述第二存储器的数据引起的。输入至所述第一存储器的数据通
常包括:从主机接收的数据,或者从第二存储器读取至所述第一存储器的数据。可选的,如果第一存储器和第二存储器位于具有双控或者多控的集中式存储系统中,那么输入至所述第一存储器的数据还可以包括从其他控制器接收而存储至所述第一存储器的数据。而当第一存储器中的数据量达到一定阈值时,处理器通常会使用内存淘汰算法将第一存储器中的部分数据淘汰至第二存储器;或者,当第一存储器中的数据的访问频率下降变成冷数据时,即使数据量还没有达到所述阈值,处理器也可以将所述冷数据淘汰至所述第二存储器。因此所述第一存储器中存储的数据量的变化是由输入所述第一存储器的数据以及从所述第一存储器输出至所述第二存储器的数据引起的。按照业界常用的说法,本实施例将从第一存储器输出至第二存储器中的数据称为从第一存储器淘汰至所述第二存储器中的数据,或者从第一存储器写入或者刷入第二存储器中的数据。
8.本实施例不对第一存储器以及第二存储器的数量进行限制,可以是一个也可以是多个。在实际应用中,第二存储器的数量往往是多个,并且第二存储器的读写性能可能低于第一存储器的读写性能。具体的,第一存储器可以是图1a或图1b所示的内存124,示例性的,第二存储器可以是图1a或图1b中存储池135中硬盘134。或者,第一存储器可以是图1c中所示的内存202,第二存储器可以是存储池204中硬盘203。或者,第一存储器可以是图11中的一级内存124,第二存储器可以是二级内存125。
9.可选的,第一方面提供的至少两个参数还可以包含第三参数,第三参数也就是实施例中所称的刷盘拥塞度。刷盘拥塞度用于指示将第一存储器的数据输出至第二存储器时的通道的拥塞程度,例如是轻载、过载、还是满载,轻载表示当前的通道还有很好的传输能力,过载当前的通道还有比较少的传输能力,而满载表示当前的通道已经没有多余的传输能力。
10.除了第一存储器的水位线和第一存储器处理数据的效率,刷盘的拥塞度也会影响第一存储器是否被写满,例如,当第一存储器的水位比较比较高,处理效率也比较高时,则如果只考虑这两个参数,则可以适当的提高输入带宽或者维持当前的输入带宽,但数据输出至第二存储器的通道已经处于满载的情况,则如果提高或维持当前的输入带宽,仍然容易使第一存储器写满。所以在调整第一存储器的输入带宽时,考虑第一存储器的水位线和第一存储器处理数据的效率同时,考虑刷盘的拥塞度,可以进一步提升输入带宽调整的准确度。
11.可选的,所述刷盘拥塞度是根据所述第一存储器中的数据被输出至所述第二存储器时的带宽时延积获得的。所述带宽时延积与单位时间内所述第一存储器中的数据被输出至所述第二存储器的带宽成正比,并且与该数据从所述第一存储器输入至所述第二存储器的平均时延成正比。在一种实现方式中,所述带宽时延积为单位时间内所述第一存储器中的数据被输出至所述第二存储器的带宽乘以该数据从所述第一存储器输入至所述第二存储器的平均时延。在另一种实现方式中,所述带宽时延积为单位时间内所述第一存储器中的数据被输出至所述第二存储器的带宽与该数据从所述第一存储器输入至所述第二存储器的平均时延,以及一个或多个系数的乘积。
12.通过同时考虑第一存储器中的数据输出到第二存储器的带宽时延,并通过计算带宽时延积可以更准确的反映将第一存储器中的数据输出到第二存储器的拥塞度,例如为轻载、过载、还是满载,在调整第一存储器的输入带宽时能给予更加精确的参考,从而提升第
一存储器的输入带宽的
13.可选的,在以上任意一种实现方式中,处理器具体用于根据所述至少两个参数的参数值和调整模型确定调整策略,并根据所述调整策略调整所述第一存储器的输入带宽。这里的调整模型是指预先通过对大量数据进行训练从而获得的调整模型。
14.通过调整模型对第一存储的输入带宽进行调整时,可以学习之前的好的调整经验,从而达到最优的调整效果。
15.训练调整模型可以由存储系统中的处理器完成,这样,操作简单,不用额外增加硬件组件的开销。训练模型也可以由一个或多个计算单元来完成。所述计算单元是ai芯片,它可以部署在存储系统内部,也可以部署在一个独立的物理设备上。当计算单元完成训练获得调整模型之后,将所述调整模型发送给处理器,由处理器根据所述调整模型完成输入带宽的调整。此时,由于训练模型的任务是由计算单元来完成的,处理器的负担被减轻了,可以集中资源处理其他业务,从而提高了处理器的处理其他业务的效率。
16.在对所述调整模型进行训练时所需的大量数据,主要是指第一参数、第二参数所对应的参数值,可选的,也可以包含第三参数所对应的参数值。换言之,所述调整模型是根据第一存储器的水位线、单位时间内所述第一存储器中存储的数据量的变化以及刷盘拥塞度训练出来的。当这些参数所对应的数值被输入所述调整模型之后,可以输出调整策略,例如将输入带宽提高20%,或者降低15%等等。
17.可选的,处理器可以直接将上述第一参数、第二参数、第三参数对应的参数值输入所述调整模型,由所述调整模型将这些参数值进行离散化处理,从而获得每个参数值所对应的状态值。处理器也可以将上述第一参数、第二参数、第三参数离散化处理后,获得每个参数值所对应的状态值,然后将状态值输入所述调整模型。当所述调整模型为计算单元执行时,则所述计算单元也可以对这些参数值进行离散化处理。
18.例如,对于第一参数机第一内存的水位线,经过离散化处理的状态值为a≦20%、20%《a《80%、及a≧80%,对于第二参数对应的状态值,例如可以为高、中、低,对于第三参数即刷盘拥塞度,例如可以为轻载、过载及满载。其中,轻载表示当前的通道还有很好的传输能力,过载当前的通道还有比较少的传输能力,而满载表示当前的通道已经没有多余的传输能力。通过将参数离散会为多个状态值,可以使调整模型针对每个参数的状态值形成的状态组,设置调整策略,相对于不做离散化处理,更加容易实现。也可
19.可选地,在通过所述调整模型输出的调整策略对所述第一存储器的输入带宽调整后,所述处理器还用于在调整所述第一存储器的输入带宽后,侦测所述第一存储器的状态,并根据所述第一存储器的状态为所述调整策略生成激励值,所述激励值用于指示所述调整策略的调整效果。所述第一存储器的状态根据第一参数、第二参数、及第三参数确定的,根据所述第一参数、第二参数、及第三参数可以确定第一存储器的状态是好状态还是坏状态,例如对于第一参数的状态值为20%《a《80%,第二参数的状态值为高,第三参数的状态值为轻载,则即可确定内存的状态为好状态,而对于第一参数的状态值为a≦20%或者a≧80%,或者第二参数的状态值为低,或者第三参数的状态值为过载,则可确定内存的状态为坏状态,并为好状态和坏状态设备不同的激励值,通过侦测第一存储器的输入带宽调整后的状态,通过激励值的方式将调整效果反馈给调整模型,可以使调整模型对好的调整策略进行加强,输出的几率增加,而不好的调整策略减弱,降低输出的几率。
20.可选地,所述处理器还用于根据第一存储器的输入带宽被调整后第一存储器的状态,调整所述输入带宽的上边界及下边界,所述上边界为所述输入带宽的最大值,所述下边界为所述输入带宽的最小值,这样可以使输入带宽上边界及下边界根据第一存储器的状态及负载的变化而调整,从而避免固定的上边界及下边界对输入带宽的调整的限制。
21.可选地,所述处理器还用于根据所述至少两个参数和状态机确定调整策略,并根据所述调整策略调整所述第一存储器的输入带宽。所述状态机为所述至少两个参数对应的状态值形成的状态组设定固定的调整策略,这样,在处理器输入至少两个参数的状态值后,根据输入的状态值对应的状态组,可以直接确定出调整策略,实现简单。
22.可选地,所述调整模型还用于在接收到处理器输入的状态值后,产生一个随机值,当该随机值符合预设的条件时,在所述状态值对应的调整策略中随机选择一个调整策略,以为该状态值探索新的调整策略,避免该状态值对应的调整策略固定为一种策略,而无法尝试其他的调整策略。
23.可选地,在根据所述调整策略得到的输入带宽大于所述输入带宽的上边界或者下边界时,所述处理器以所述上边界或者下边界作为所述第一存储器的输入带宽。这样,避免过大的输入带宽对系统产生较大的波动。
24.本技术第二方面提供一种对存储器的输入带宽进行调整的方法,所述方法用于实现第一方面任意一种实现方式提供的存储系统的功能。
25.本技术第三方面提供一种对存储器的输入带宽进行调整的装置,所述装置包括多个模块,所述装置的多个模块用于实现第一方面任意一种实现方式提供的存储系统的功能。
26.本技术第四方面提供一种计算机可读存储介质,所述存储介质用于存储计算机可读指令,当所述计算机可读指令在计算机上运行时,使得所述计算机执行本技术第二方面提供的任意一种方法。
27.本技术第五方面提供一种计算机程序产品,所述计算机程序产品包括计算机可读指令,当所述计算机可读指令在计算机上运行时,使得所述计算机执行本技术第二方面提供的任意一种方法。
28.本技术第六方面提供一种芯片,所述芯片用于接收与存储系统的第一存储器相关的至少两个参数,所述至少两个参数包括第一参数和第二参数,其中,所述第一参数是指所述第一存储器的水位线,所述第一存储器的水位线用于指示所述第一存储器存储的数据的数据量,所述第二参数用于指示单位时间内所述第一存储器中存储的数据量的变化;所述芯片还用于根据所述至少两个参数输出调整策略,所述调整策略用于调整所述第一存储器的输入带宽。
29.可选的,第一方面提供的至少两个参数还可以包含第三参数,第三参数也就是实施例中所称的刷盘拥塞度。刷盘拥塞度用于指示将存储系统的第一存储器的数据输出至存储系统的第二存储器时的通道的拥塞程度,例如是轻载、过载、还是满载,轻载表示当前的通道还有很好的传输能力,过载当前的通道还有比较少的传输能力,而满载表示当前的通道已经没有多余的传输能力。
30.关于使用第三参数的计算方式及有益效果,请参考第一方面的相关描述,在此不再赘述。
31.可选地,所述芯片包括调整模型,所述调整模型为所述芯片根据所述至少两个参数所对应的数据通过训练获得的。通过调整模型可以学习之前的好的调整经验,从而可以使芯片输出最优的调整策略。
32.可选地,所述芯片还用于接收激励值,并将所述激励值输入调整模型,所述激励值指示所述调整策略的调整效果。所述激励值使调整模型对好的调整策略进行加强,输出的几率增加,而不好的调整策略减弱,降低输出的几率。
附图说明
33.为了更清楚地说明本技术实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍。
34.图1a为本技术实施例所提供的存算一体结构的集中式存储系统的架构图。
35.图1b为本技术实施例所提供的存算分离结构的集中式存储系统的架构图。
36.图1c为本技术实施例所提供的分布式存储系统的架构图。
37.图2为本技术实施例提供的存储系统中的内存中的数据交换的示意图。
38.图3为状态机通过内存的水位线对内存的输入带宽进行调整的示意图。
39.图4为本技术实施例提供的存储系统的状态机通过三个参数对内存的输入带宽进行调整的示意图。
40.图5为图4中的状态机中的调整表的示意图。
41.图6为本技术实施例提供的通过状态机对内存的输入带宽进行调整的方法的流程图。
42.图7为本技术实施例提供的调整模型中的训练表的示意图。
43.图8为本技术实施例提供的包括计算单元的控制器的结构图。
44.图9为本技术实施例提供的通过调整模型对内存的输入带宽进行调整的方法的流程图。
45.图10为本技术实施例提供的通过调整模型对内存的输入带宽进行调整示意图。
46.图11为本技术实施例提供的对输入带宽的边界进行调整的示意图。
47.图12为本技术实施例提供的存储系统中包括两级内存的控制器的结构图。
48.图13为本技术实施例提供的对内存的输入带宽进行调整的第一装置的功能模块图。
49.图14为本技术实施例提供的对内存的输入带宽进行调整的第二装置的功能模块图。
具体实施方式
50.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。
51.如图1a所示,为本技术实施例所应用的一种存储系统120的结构图。在第一种实施例中,所述存储系统120为集中式的存储系统。主机100通过交换机110连接至所述存储系统以存取数据。所述主机100可以是物理机,也可以是虚拟机。物理机包括但不限于桌面电脑、服务器、笔记本电脑以及移动设备。交换机110是一个可选设备,主机100也可以直接通过网
络与存储系统120通信。
52.所述存储系统120包括机头121,从所述存储系统120之外的设备来的数据都要经过机头121进入存储系统120。机头121中有一个或多个控制器,图1a以机头121包含两个控制器为例予以说明。控制器0与控制器1之间具有镜像通道,那么当控制器0将一份数据写入其内存124后,可以通过所述镜像通道将所述数据的副本发送给控制器1,控制器1将所述副本存储在自己本地的内存124中。由此,控制器0和控制器1互为备份,当控制器0发生故障时,控制器1可以接管控制器0的业务,当控制器1发生故障时,控制器0可以接管控制器1的业务,从而避免硬件故障导致整个存储系统的不可用。
53.控制器0与控制器1的结构类似,下面以控制器0为例介绍控制器的具体结构,控制器0包括处理器123、内存124、前端接口125、及后端接口126,其中前端接口125用于与主机100通信,从而使存储系统120为主机100提供存储服务。而后端接口126用于与硬盘134通信,以扩充存储系统120的容量。通过控制器0的后端接口126,机头121可以连接更多的硬盘134。硬盘134可以是任何类型,例如固态硬盘或者机械硬盘。硬盘134所提供的存储空间物理地址并不直接暴露给主机100使用,多个硬盘134会构成一个存储池135,存储池135向上提供统一的存储空间。基于存储池135提供的存储空间,控制器0/1可以创建一个或多个虚拟卷供主机100使用。每个虚拟卷具有虚拟地址,虚拟地址空间映射至一个或多个硬盘134的物理地址。由此,主机100通过虚拟地址可将数据持久性存储在构成存储池135的硬盘134中。
54.处理器123是一个中央处理器(central processing unit,cpu),用于处理来自主机100的数据访问请求,也用于处理存储系统120内部生成的请求。示例性的,处理器123通过前端端口125接收主机100发送的写数据请求时,会将这些写数据请求中的数据暂时保存在内存124中。当内存124中的水位线达到一定阈值时,处理器123通过后端端口126将内存124中存储的数据发送给由硬盘134形成的存储池进行持久性存储。
55.内存124是指与处理器123直接交换数据的内部存储器,速度很快,作为操作系统或其他正在运行中的程序的临时数据存储器。内存包括至少两种存储器,例如内存既可以是随机存取存储器,也可以是只读存储器(read only memory,rom)。举例来说,随机存取存储器是动态随机存取存储器(dynamic random access memory,dram),或者存储级存储器(storage class memory,scm)。dram是一种半导体存储器,与大部分随机存取存储器(random access memory,ram)一样,属于一种易失性存储器(volatile memory)设备。scm是一种同时结合传统储存装置与存储器特性的复合型储存技术,存储级存储器能够提供比硬盘更快速的读写速度,但运算速度上比dram慢,在成本上也比dram更为便宜。然而,dram和scm在本实施例中只是示例性的说明,内存还可以包括其他随机存取存储器,例如静态随机存取存储器(static random access memory,sram)等。而对于只读存储器,举例来说,可以是可编程只读存储器(programmable read only memory,prom)、可抹除可编程只读存储器(erasable programmable read only memory,eprom)等。另外,内存124还可以是双列直插式存储器模块或双线存储器模块(dual in-line memory module,简称dimm),即由动态随机存取存储器(dram)组成的模块,还可以是固态硬盘(solid state disk,ssd)。实际应用中,控制器中可配置多个内存124,以及不同介质类型的内存124。本实施例不对内存124的数量和类型进行限定。内存124中存储有软件程序,处理器126运行内存124中的软件程序
可实现对硬盘的管理。例如创建存储池135,在存储池135中分配存储空间给虚拟卷以供主机100使用等。当然,一些集中式存储系统本身也是文件服务器,可以为主机100提供共享文件服务。
56.图1a所示的是一种盘控一体的集中式存储系统。在该系统中,机头121的每个控制器都具有硬盘槽位,硬盘134可直接部署在机头121中,后端接口126属于可选配置,当系统的存储空间不足时,可通过后端接口126连接更多的硬盘或硬盘框。
57.图1b所示的是一种盘控分离的集中式存储系统。与图1a的不同之处在于,图1b中的机头121可以不具有硬盘槽位,硬盘134需要放置在硬盘框130中,后端接口126与硬盘框130通信。硬盘框130包括控制单元131和若干个硬盘134。控制单元131可具有多种形态。一种情况下,硬盘框130属于智能盘框,控制单元131包括cpu和内存(图未示)。cpu用于执行地址转换以及读写数据等操作。内存用于临时存储将要写入硬盘134的数据,或者从硬盘134读取出来将要发送给控制器0或者控制器0的数据。另一种情况下,控制单元131是一个可编程的电子部件,例如数据处理单元(data processing unit,dpu)。dpu具有cpu的通用性和可编程性,但更具有专用性,可以在网络数据包,存储请求或分析请求上高效运行。dpu通过较大程度的并行性(需要处理大量请求)与cpu区别开来。可选的,这里的dpu也可以替换成图形处理单元(graphics processing unit,gpu)、嵌入式神经网络处理器(neural-network processing units,npu)等处理芯片。通常情况下,控制单元131的数量可以是一个,也可以是两个或两个以上。
58.按照机头121与硬盘框130之间通信协议的类型,硬盘框130可能是sas硬盘框,也可能是nvme硬盘框以及其他类型的硬盘框。sas硬盘框,采用sas3.0协议,每个框支持25块sas硬盘。机头121通过板载sas接口或者sas接口模块与硬盘框130连接。nvme硬盘框,更像一个完整的计算机系统,nvme硬盘插在nvme硬盘框内。nvme硬盘框再通过rdma端口与机头121连接。
59.在图1a和图1b所示的存储系统中,当内存124的水位线达到阈值时,内存124中的数据会被写入存储池135中进行持久化存储。。
60.图1c所示是本技术实施例所应用的另一种存储系统的架构图。如图1c所示,该系统是一个分布式存储系统,所述分布式系统包括主机集群和存储节点集群。其中,主机集群包括一个或多个主机200(图1中示出了两个主机200,但不限于两个主机200)。存储节点集群包括一个或多个存储节点20(图1中示出了三个存储节点20a、20b及20c,但不限于三个存储节点),各个存储节点20之间可以相互通信。每个主机200连接至多个存储节点20,可与多个存储节点20进行数据交互。示例性的,在该分布式系统中,可以将数据以及数据的副本分散地存储在多个存储节点20中,从而保证数据的可靠性3。每个存储节点20至少包括处理器201、内存202、及硬盘203。其中,处理器201、内存202及硬盘203与图1a中的处理器123、内存124及硬盘134的结构及功能相同,具体请参看图1a中的相关描述,在此不再赘述。在图1c中,多个存储节点20中的硬盘203可以构成存储池。与图1a及图1b中的存储池不同的是,图1c中是将不同存储节点20中的硬盘134组建成存储池,图1a及图1b中的存储池是由一个设备内硬盘构成的。
61.在图1a、图1b及图1c任意所示的存储系统中,由于内存的访问速度比较快,且存储空间有限,所以通常优先将热数据存储在内存中。热数据是指一段时间内访问频率比较高
的数据。以主机从存储系统中读取数据为例,待读取数据如果未在内存中命中,则存储系统会从存储池中读取该数据。另外,所述从存储池中读取的数据也会临时存储在内存中,以便主机再次访问。为了提高内存的命中率,存储系统也可以将部分数据从存储池预取至内存中。另一方面,由于内存的存储空间有限,为了确保内存有足够的空间容纳更多的热数据,处理器会根据一定的内存淘汰算法,例如最近最少使用(least recently used,lru)算法,将内存中最近一段时间内访问频率比较低的数据淘汰至存储池,而保留访问频率比较高的数据。内存中的数据交换过程如图2所示。其中,进入内存的数据包括主机写io中携带的待写数据,以及读io未从内存中命中(未命中读io),而从存储池中读取的数据。在图1a及图1b所示的集中式存储系统中,由于控制器0和控制器1互为备份,所以进入所述内存中的数据还包括镜像io中携带的数据。控制器0作为控制器1的备份控制器,控制器1在将主机写io中携带的将数据写入本地内存的同时,还会生成镜像io,将该数据的副本写入控制器0的内存中,以保证数据的可靠性。当然,在只包括一个控制器的集中式存储系统中,则进入内存的数据不会包含镜像io中的数据。在图1c所示的分布式存储系统中,也不存在镜像io。
62.内存的输入带宽为流入内存的数据的速率,主要由主机写io的速率、镜像io的速率、以及读io未从内存中命中,而从存储池中读取数据至内存的速率决定。在内存的水位线达到阈值时,就需要将内存比较冷的数据(最近一段时间内比较少访问的数据)作为淘汰io淘汰至存储池,所述内存的输出带宽即为内存的数据流出内存的速率,主要由淘汰io被写入存储池的速度决定。如果要使内存能够正常运转,内存的输入带宽及输出带宽需要达到一种平衡,使内存尽量不被占满,因为如果内存占满,数据无法正常写入内存,影响数据的访问效率。在一些应用场景中输入带宽可以不包括从存储池中读取未命中读io对应的数据至内存的速率,对内存的输入带宽进行调整时,只要考虑主机io及镜像io的速率即可。对于不存在镜像io的场景,则只要考虑主机io的速率即可。
63.虽然图1a、图1b、图1c所示的存储系统的架构不同,但各个存储系统中对内存的输入带宽的调整方法基本相同,下面将以图1a中的存储系统中的控制器0为例介绍对内存124的输入带宽的调整方法。其他存储系统中的对内存的输入带宽的调整方法请参考对图1a中对控制器0中的内存124的输入带宽的调整方法,在此不再赘述。
64.如图3所示为对内存124进行输入带宽调整的示意图,通过为内存124设置的多档水位线,并为不同档水位线设置不同的调整策略,从而实现根据内存水位线对内存124的输入带宽进行调整。具体地,控制器0会预先定义内存124的多个档位的水位线。水位线是指内存中存储的数据量占内存存储空间的比率,也可以称为占有率。档位的数量可以根据实际场景进行设定,在此不做限定,为了方便描述,本实施例以高、中、低三挡水位线为例进行说明。例如,高档水位线为内存124中的数据大于或者等于内存容量的80%;中档水位线为内存124中的数据小于内存容量的80%大于内存容量的20%;低档水位线为内存124中的数据小于等于内存容量的20%。另外,在内存124中可以设置状态机301。所述状态机301用于定义每档水位线对应的对所述内存124的输入带宽的调整策略。例如,在内存水位线为高档水位线80%~100%时,对应的调整策略为将输入带宽降低a%,在内存水位线为中档水位线20%~80%时,对应的调整策略为保持不变,在内存水位线为低档水位线0%~20%时,对应的调整策略为增加b%,a%及b%为表示对输入带宽的调整幅度,a和b为大于等于0的自然数。处理器123定期采集内存124的水位线,并将所采集的水位线输入状态机301,状态机
301确定所采集的水位线所落入的档位,如果落入高档水位线,则输出高档水位线对应的调整策略:带宽降低a%,处理器123根据状态机301输出的动作对所述内存124的输入带宽进行调整。如果落入低档水位线,状态机301输出低档水位线对应的调整策略:带宽增加b%,处理器123根据状态机301输出的动作对所述内存124的输入带宽进行调整。如果落入低档水位线,则状态机301输出维持水位线不变的动作,则处理器123不对内存124的输入带宽进行调整。
65.处理器123可以通过调整令牌桶的速率的方式调整所述内存124的输入带宽。令牌桶中的每一个令牌都代表一个字节,如果令牌桶中存在令牌,则允许将数据写入内存124,而如果令牌桶中不存在令牌,则不允许往内存124中写入数据。当有数据写入内存124时,则处理器123从令牌桶中为待写数据的每个字节分配一个令牌,当待写数据成功写入内存124后,则处理器123从令牌桶中移除为所述待写数据分配的令牌,所以为了保证数据能够源源不断的写入所述内存124,就需要不停地往桶里加令牌,往令牌桶里加令牌的速度,就决定了内存124的输入带宽,因此,可以通过控制往令牌桶里加令牌的速度控制内存124的输入带宽。例如,当前令牌桶的发送速率是a时,则状态机301输出的调整策略为带宽降低20%,则调整后的令牌桶的发送速率变为a*(1-20%)。本实施例还可以通过其他方式调节内存124的输入带宽,例如通过调节内存124中的队列的深度。对于对内存的输入带宽的具体调节方式,在此不做限定。
66.所述状态机301可以为一个由处理器123运行的通过程序指令实现的功能模块,也可以是与处理器123的进行通信的硬件模块。
67.上述技术虽然可以地对内存124的输入带宽进行根据内存124的水位线的动态变化进行调整,在一定程度上降低了内存124写满的概率,但是在实际应用中,内存124的水位线并不是影响内存124是否写满的唯一因素,因为水位线只能反映内存124中当前存储的数据量。如果不考虑其他内存相关参数,则可能不能准确地控制输入带宽。例如在内存124的水位线已经比较高,如果内存124中的数据输出至存储池的性能降低的话,则也可能导致内存124写满。举个具体的例子,如果构成存储池的硬盘为固态硬盘,固态硬盘会定期进行垃圾回收。在进行垃圾回收时,固态硬盘的控制器需要将待擦除的存储块中的有效数据集中搬到一个新的存储块上去,搬移完成后,再对待擦除的存储块进行数据擦除。由于在垃圾回收时,固态硬盘的控制器需要执行数据搬移,会占用ssd的控制器的计算资源,所以固态硬盘的控制器没有足够的计算资源去处理下输出至ssd的数据,从而使内存124的数据输出至存储池的性能降低,这样在内存124的水位线已经比较高的情况下,即使还没有达到所述阈值,也容易导致内存124写满。
68.基于上述问题,本技术实施例提供的技术方案在调整内存的输入带宽时,不仅考虑了内存的水位线,还考虑了其他与内存124相关的参数,例如与将内存124中的数据输出至存储池的性能有关的参数,这样可以同时根据内存124中现有的数据量及数据输出至存储池的性能相关的参数对内存124的输入带宽进行更加精确调整,从而进一步减少内存写满的概率。
69.本技术实施例中,与内存124中相关的参数主要包括内存的处理效率,内存124的处理效率用于指示单位时间内内存124中数据量的变化率。内存124中数据量的变化率是由数据输入内存124的的速度和数据从内存124中输出的速度共同决定的。这里的输出的数据
主要是指从内存124中淘汰至存储池135的数据,即从内存124输出至存储池的数据。示例性的,所述内存124中数据量的变化率为单位时间内输入内存124的数据量与输出内存124的数据量的差值除以所述单位时间内输入内存124的数据量,或者,单位时间内输入内存124的数据量与输出内存124的数据量的差值除以单位时间内输出内存124的数据量。
70.内存124的水位线体现的是内存124中当前所存储的数据量,内存124的处理效率体现了单位时间内内存124中的数据量的变化情况,在对内存124的输入带宽进行调整时,同时考虑这两个参数,可以使调整更加精确,而减少内存124写满的概率。
71.除了内存的水位线、内存的处理效率外,在对内存124的输入带宽进行调整时,还可进一步考虑刷盘拥塞度,所述刷盘拥塞度用于指示将内存124的数据输出至存储池135的通道的拥塞情况。示例性的,刷盘拥塞度可通过将内存124的数据写入存储池时的带宽时延积来计算,带宽时延积指的是单位时间内从内存124输出至存储池135中的数据的带宽值乘以这些数据从内存124输出至存储池135的平均时延。
72.在实际应用中,可以仅根据内存的水位线、内存的处理效率对内存124的输入带宽进行调整,也可以根据内存的水位线、内存的处理效率、及刷盘拥塞度对内存124的输入带宽进行调整,或者根据内存的水位线、内存的处理效率、及其他内存相关参数对内存的输入带宽进行调整,在此不做限定。
73.为了方便描述,本技术实施例以根据内存的水位线、内存的处理效率、及刷盘拥塞度对内存的输入带宽进行调整为例进行说明。
74.在本技术提供的第一实施例中,如图4所示,利用状态机401对内存124的输入带宽进行调整。在本技术实施例中,处理器123会根据用户的设置操作预先将三个性能参数值进行离散化处理,即为每个参数设置多个状态值,状态值的数量可以根据实际情况进行设置。在本技术实施例中,为了方便描述,以每个参数设置三个状态值为例进行说明。例如,(1)将内存水位线划分为三个范围,每个范围即为一个状态值,分别为小于等于20%,大于20%小于80%,以及大于80%。(2)为内存处理效率设置三个状态值,例如,高、中、低,每个状态值对应一个预设的数值范围,例如高状态值对应的数值范围为小于等于0,中状态值对应的数值范围为大于0小于等于10%,低状态值对应的数值范围为大于10%。(3)刷盘拥塞度也可以划分为过载、满载、及轻载三个状态,每个状态对应一个设定的数值范围,例如,过载对应的数值范围为[0,10]、满载对应的数值范围为[10,正无穷]、而轻载对应的数据范围为[负无穷,0]。这三个参数的各种状态的组合可以形成27个状态值,在状态机401中会为每个状态值设置一个调整策略。示例性的,如图5所示的调整表所示,a代表内存水位线、b代表内存处理能力、c代表刷盘拥塞,则为状态组a≦20%,b=低,c=轻载设置增加a%的调整策略,为状态组为a≦20%,b=低,c=超载,设置增加b%的调整策略
……
。在具体实现中,可通过预设的字符串表示调整策略,例如用字符“0”表示增加,用字符“1”1降低,用字符“a1”表示内存水位线≦20%,用字符“a2”表示内存水位线大于20%小于《80%,用字符“a3”标识内存水位线a≧80%。同理,内存处理效率及刷盘拥塞度的不同的状态值都可以用不同的字符表示。与图3所示状态机301类似,所述状态机401可以为一个由处理器123运行的通过程序指令实现的软件模块,也可以是与处理器123的进行通信的硬件模块。
[0075]
在状态机401定义好后,即可根据状态机401对内存124的输入带宽进行调整,具体调整方法请参考图6的流程图。图6所示的调整方法可应用于图1a、图1b或图1c所示的任意
一种架构中,下面还是以图1a的结构为例进行说明。
[0076]
在步骤s501中,处理器123监测系统的性能,从而获得内存相关参数。
[0077]
由于内存相关参数是时刻变化的,因此处理器123会周期性的侦测内存相关参数。如上文所述,本技术实施例主要考虑的是内存水位线、内存处理效率、刷盘拥塞度三个参数,则处理器123主要针对这三个参数进行侦测。
[0078]
在步骤s502中,处理器123根据侦测的内存相关参数,确定各个参数的状态值。
[0079]
处理器123根据预先定义的每个参数的各个状态值的数据范围,确定每个参数的状态值。这里的状态值的定义与上文描述的状态机中的调整表的状态值的定义一致,请参考上文的描述,在此不再赘述。例如,若侦测的内存的水位线的值为70%,则确定内存的状态值为20%~80%,若侦测的内存的处理效率的值为-10%,则确定内存124的处理效率为高状态,若侦测刷盘拥塞度的值为-100时,则确定所述内存124为轻载状态。
[0080]
在步骤s503中,处理器123将所侦测的内存相关参数的状态值输入状态机401。
[0081]
在处理器123确定了各个参数的状态值后,即可以将各个参数的状态值输入状态机401。在所述状态机401为软件模块时,则处理器123调用运行所述状态机的进程或者线程,将各个参数的状态值输入运行所述状态机。当在所述状态机401为硬件模块时,所述处理器123与所述硬件模块通信,将各个参数的状态值输入所述硬件模块。
[0082]
在步骤s504中,状态机401根据各内存相关参数的状态值输出调整策略。
[0083]
具体地,状态机401在接收到各个参数的状态值后,根据图4所示的调整表中找到输入的状态值组对应的调整策略,例如,若状态组为a≦20%,b=低,c=轻载,则确定对应的动作为增加a%,状态组为a≦20%,b=低,c=超载,则确定增加b%的调整策略,然后输出代表该动作的字符串至处理器123。
[0084]
在本发明另一实现方式中,处理器123在步骤s501获取内存相关参数后,还可以直接将所获取内存相关参数输入状态机401,而不需要执行步骤s502,状态机401中定义了每个参数的各个状态值的数据范围,所以可以由状态机401并确定各个参数的状态值。状态机401中状态值的定义与状态机401中的调整表的状态值的定义一致,在此不再赘述。
[0085]
在步骤s505中,处理器123根据输出的调整策略对内存的输入带宽进行调整。
[0086]
处理器123对内存124的输入带宽的调整方式与图3所述的调整方式相同,在此不再赘述。
[0087]
通过图5所示的对内存的输入带宽进行调节的方法,会根据内存水位线和与数据从内存输出至存储池的性能相关的参数(例如处理器处理效率)对内存的输入带宽进行调节,不仅考虑了内存124中当前的数据量,而且还考虑了将数据从内存输出至存储池的性能,从而实现对内存输入带宽更加精确的调整。
[0088]
图5提供的实施方式虽然可以实现对内存124输入带宽的精确调整,但是却无法学习之前的调整经验,只能按照预先设定调整规则对内存124的输入带宽进行调整,这样,对于负载变化无常的存储系统来说,不能达到最优的调整效果。
[0089]
在另一种实施方式中,采用调整模型对内存124的输入带宽进行调整。所述调整模型为一种人工智能(artificial intelligence,ai)模型,可以通过给所述调整模型反复输入各个内存相关参数的状态值进行训练,使调整模型能够输出更加准确的调整策略。在这种实施方式所使用的内存相关参数及各参数的状态与第一实施例相同,即内存相关参数包
括内存水位线、内存处理效率、刷盘拥塞度,各个参数的状态值即状态的数量可以根据实际的应用场景进行定义。所以这里仍以前面所定义的各个参数的状态为例进行说明。所述调整模型中定义了如图7所示的训练表,其中以a代表内存水位线、以b代表内存处理能力、以c代表刷盘拥塞。在a、b、c各有三种状态的情况下,则总共有27种状态组合,图7只示例性的列举了7种状态组合。图7所示训练表的行表示的三个性能参数的各种状态组合形成的状态组,列表示的是调整模型1001可能输出的调整策略,表中只示例性的列举了几种动作,但在实际应用中动作的个数及调节的幅度均不受此限制,用户可以根据实际需要进行设置。如表所示,每个状态组都对应多个动作,其中每个状态组对应的每个动作都对应一个q值,所述q值为一个标量,q值越大,代表在当前状态组下执行该动作可以获得的收益越大。
[0090]
在调整模型使用前,首先需要对其进行训练,当输入足够多的训练参数使该调整模型数据输出的调整策略相对比较准确的时候,即可使用该调整模型对内存的输入带宽进行调整。在该调整模型的训练阶段,可以直接将调整模型加载至内存124,由处理器123对模型进行训练。但是由于模型训练需要耗费比较多的计算资源,所以也可以在控制器0中设置独立的计算单元123对所述调整模型进行训练。如图8所示,为控制器0在加入计算单元后的结构图。计算单元是一个可编程的电子部件,用于对数据进行计算处理等,本实施例以数据处理单元(dataprocessing unit,dpu)为例予以说明。dpu具有cpu的通用性和可编程性,但更具有专用性,可以在网络数据包,存储请求或分析请求上高效运行。dpu通过较大程度的并行性(需要处理大量请求)与cpu区别开来。可选的,这里的dpu也可以替换成图形处理单元(graphics processing unit,gpu)、嵌入式神经网络处理器(neural-network processing units,npu)等处理芯片。所述调整模型1001也可以是在控制器0之外的设备中进行训练,训练好之后再加载至内存124或者计算单元进行使用。
[0091]
在训练调整模型时,在三个参数的各状态值输入所述调整模型后,所述调整模型根据所输入的状态值确定对应的状态组,然后根据状态组对应的各个调整策略对应的q值选择调整策略,一般选择q值最大的调整策略进行输出,例如对于a≦20%,b=低,c=低,这个状态组,如图7所示,对应5个调整策略,每个动作对应有一个q值,即这个状态组对应5个q值,而调整模型1001会选择其中最大的q值,例如400对应的调整策略,即带宽降低20%。在输出调整策略后,对内存的输入带宽进行调整后,则可以进一步对调整后系统的运行状态的进行评估,如果系统的运行状态变好,则针对所述调整策略输入一个正向的激励值,即使该调整策略的q值变大,从而后面被选中的概率也变大,如果系统的运行状态变坏,则针对所述调整策略输入一个负向的激励值,使该调整策略的q值变小,从而后面被选中的概率也变小。经过这样通过大量的输入状态值反复训练后,即会使训练模型的调整的准确度也越来越高。关于激励值的具体算法,将在下文做详细描述。
[0092]
在调整模型训练好后,即可利用该调整模型对内存124的输入带宽进行调整。下面将结合图9及图10说明如何利用调整模型对内存124的输入带宽进行调整。其中,图9为利用调整模型对内存124的输入带宽进行调整的方法的流程图,该方法可应用于图1a、图1b或者图1c任意一种架构中,本实施例仍然以图1a所示的架构为例进行说明。图10为存储系统120利用调整模型1001对内存124的输入带宽进行调整的示意图。调整模型1001使用的过程,也是对调整模型1001进一步训练的过程,调整模型1001在训练阶段和使用阶段的工作原理基本相同,也一并参考图9及图10的描述。
[0093]
图9中的步骤s901~s903与图5中的步骤s501~s503的步骤基本相同,具体请参考图5的相同描述,在此不再赘述。步骤s503与步骤s903的不同之处仅在于,三个参数的状态值被输入了调整模型1001,而不是状态机401。
[0094]
在执行步骤s903后,内存相关参数的状态值被输入了调整模型1001,则在步骤s904,所述调整模型1001根据所输入的内存相关参数输出针对所述内存的输入带宽的调整策略。
[0095]
如前面所述,调整模型1001中包括图7所示的一个训练表,以系统运行包括三个参数,各个参数包括三个状态值为例,所述训练表包括27个状态,则在输入三个参数的状态值后,例如输入a≦20%,b=低,c=低,这组状态,则调整模型1001选择最大q值即400对应的动作,即带宽降低20%。与第一实施例相同,这里的调整策略也将以预设的字符串表示。
[0096]
步骤s905,处理器123根据调整模型1001输出的调整策略对内存124的输入带宽进行调整。
[0097]
处理器123对内存124的输入带宽进行调整的方式与步骤s505相同,在此不再赘述。
[0098]
步骤s906,处理器123侦测调整后内存状态,并根据内存状态生成激励值。
[0099]
在处理器123对内存的输入带宽进行调整后,则系统的运行状态将发生变化,本发明实施例中,为系统运行的状态定义了两种状态,即好状态及坏状态,主要还是通过内存水位线、内存处理效率、及刷盘拥塞度三个参数来衡量系统运行的状态为好状态还是坏状态。在其他实施例中,也可以仅以其中的至少一项参数来衡量系统运行的状态。以上三个状态仅以举例说明,实际应用中,也可以通过其他参数来衡量系统的运行状态。
[0100]
在衡量系统的运行状态时,可根据以上三个参数的各状态值构成的27种状态组预先定义每个状态组为好状态还是坏状态。例如,对于水位线为20%《a《80%,缓存处理效率为高,刷盘拥塞度为满载的状态组定义为好状态,而对于水位线a≦20%或者a≧80%,或者缓存处理效率为低,或者刷盘拥塞度为过载的状态组,则定义为坏状态。
[0101]
在确定了系统的运行状态后,则可以根据的状态生成一个激励值,如果是好状态,则生成一个较高的激励值,如果是坏状态,则生成一个较低的激励值,总之好状态的激励值大于坏状态的激励值。当调整模型1001输出的动作为维持不变,即不对内存124的输入带宽进行调整时,则不对该调整策略产生激励值,即维持该调整策略的q值不变。
[0102]
所述激励值可以是预先设定的固定值,也可以根据激励函数进行计算的值。在计算时,会针对每个参数的状态值,获取一个激励值,一般每个参数的不同状态会设置不同的激励值,好的状态值对应的激励值会大一些,例如,对于内存水位线,状态值20%《a《80%对应的激励值会高于状态值a≦20%或者a≧80%对应的激励值,激励函数再综合三个参数的状态值给出一个总的激励值,因此可以利用所述激励函数根据内存的状态生成不同的激励值。具体地,所述激励函数的计算公式如下:
[0103][0104]
其中,s∈s=(w,p,b),w、p、b分别是内存的水位线、内存的处理效率、刷盘拥塞度
三个参数中各状态的激励值,在本技术实施例中,|s|是每个参数的状态值的数量,如果该参数的状态为三个状态值,例如内存水位线有三个状态值,则对应的|s|表示为|w|,对应的值为3,内存处理效率也有三个状态,则公式中的|s|表示为〡p〡,其对应的值为3,同理,刷盘拥塞度也有三个状态,则公式中的|s|表示为〡b〡,其对应的值为3。这样,内存水位线的激励值向量就可以简单定义为w=[|w|-1,|w|,|w|-2],其中|w|表示三个状态值中最好的状态值对应的激励值,|w|-1为次好的状态值对应的激励值,而|w|-2为最差状态值对应的激励值。其他两个参数也做相同的定义,例如内存的处理效率的激励值向量就可以定义为p=[〡p〡-1,〡p〡,〡p〡-2],刷盘的拥塞度的激励值可以定义为b=[〡b〡-1,〡b〡,〡b〡-2]。这样,当当前侦测到的三个参数的状态值分别为内存水位线≦20%,内存处理效率为中,刷盘的拥塞度为高时,则由各个参数的激励值向量可以确定内存水位线的激励值为w=|w|-2=1,内存处理能力激励值为p=〡p〡-1=2,刷盘的拥塞度的激励值为b=〡b〡-2=1。另外,我们在激励函数上为每个参数值分配了一个相应的权值f(s),其中f(w)+f(p)+f(b)=1,根据重要程度确定权值大小,在本技术实施例中,权值f(w)大于f(p)大于f(b)。这样,w、p、b及f(w),f(p),f(b)的值代入上述公式,即可算出当前参数对应的激励值。
[0105]
s907,所述处理器123将激励值反馈给所述调整模型1001。
[0106]
在调整模型1001输出调整策略时,会同时输出该调整策略的标识,在本技术实施例中,该调整策略的标识为该调整策略在训练表中的位置,例如,表中的行号及列号。这样,在处理器123将激励值反馈给调整模型1001时,同时将调整策略的标识输入调整模型1001,则调整模型1001即可根据调整策略的标识在所述训练表中找到所述调整策略,并用所述激励值更新所述调整策略对应的q值。
[0107]
如此即可完成通过调整模型1001对内存的输入带宽的调整,通过调整模型1001对内存的输入带宽进行调整时,可以学习之前的好的调整经验,从而达到最优的调整效果。
[0108]
在本技术的另一实现方式中,处理器123在步骤s901获取内存相关参数后,还可以直接将所获取内存相关参数输入调整模型1001,而不需要执行步骤s902,调整模型1001中定义了每个参数的各个状态值的数据范围,所以可以由调整模型1001确定各个参数的状态值。调整模型1001401中状态值的定义与调整模型1001中的训练表的状态值的定义一致,在此不再赘述。
[0109]
图7所示的调整模型1001中的调整表只设定了有限的调整策略,对内存的输入带宽的调整的精确度仍然有限。所以可选地,为了进一步提高调整精确度,调整模型1001会设定在随机小概率的情况下,使调整模型1001不是按照图7中的训练表输出调整策略,而是会随机从训练表中选择一个调整策略进行输出,这种方式可以让调整模型1001以一个很小的概率探索之前从来没有尝试的调整策略,从而从一定程度上减小模型陷入局部最优的可能性。具体实现可以为:在将状态值输入调整模型1001后,调整模型1001会随机生成一个0~1的小数(例如0.05),当该小数小于预设值(例如0.1),会在所述状态值对应的调整策略中随机选择一个调整策略,而不是选择最大的q值对应的调整动作。而当该随机小数(例如0.8)大于等于所述预设值(例如0.1)时,才会选择最大q值对应的调整策略。调整模型1001调整策略
[0110]
虽然探索可以提高调整模型1001训练的性能,但是如果探索到一个不合适的调整策略,则会对系统的性能造成极大的影响,例如如果探索到的调整策略对应的带宽调整值
非常大,则很容易将内存124写满;如果探索到的调整策略对应一个极小的带宽调整值,使内存124的输入带宽得不到有效的调整。因此本技术实施例还提供了一种安全带宽边界策略来保证安全高效的探索操作。
[0111]
所述安全带宽边界策略定义了调整策略对应的内存124的输入带宽的上边界及下边界,上边界为内存124的输入带宽的最大值,下边界为内存124的输入带宽的最小值,如果根据调整模型1001输出的调整策略调整后的输入带宽超过了上边界或者下边界,则将上边界或者下边界作为调整后的输入带宽。另外,所述上边界和下边界是可以进行更新的,以下提供两种情况下对内存124的输入带宽的上边界及下边界的调整。
[0112]
第一种情况为在内存状态为好状态时对输入带宽的上边界及下边界的调整。
[0113]
在内存状态为经过多次调整均为好状态时,则可对内存124的输入带宽的上边界及下边界进行调整,并根据多次调整后的输入带宽的平均值对内存124的输入带宽的上边界及下边界进行调整,这样可以根据系统的负载的变化实时对内存124的输入带宽进行调整,从而达到更好的调整效果,具体调整方式如图11的上半部分(系统好状态下的边界更新)所示,在输入带宽调整了i次(i为大于等于1的自然数),从s
t
调整到s
t+i
,且所调整的i次中,系统的运行状态都处于好状态,则可对输入带宽的上边界及下边界进行调整。在调整时,首先计算这i次调整模型1001所调节的输入带宽的平均值m
avg
,然后将上边界及下边界重新设置为[m
avg
*(1-a),m
avg
*(1+a)],a是每次更新的幅度,为0到1之间的值。如图11的上半部分所述,调整后上边界和下边界分别为b
u(t+i+1)
,及b
d(t+i+1)
。当第i+1次内存还是好状态时,则继续对上边界及下边界进行调整,调整后的上边界及下边界范围b
u(t+i+2)
,及b
d(t+i+2)
,当第i+2次还是内存还是好状态时,则继续对上边界及下边界进行调整,调整后的上下边界的范围分别为b
u(t+i+3)
,及b
d(t+i+3)
,调整完成后,则继续根据内存相关参数对内存124的输入带宽进行调整。然而,在第i+3次调整后,内存124的状态变为坏状态,则将b
u(t+i+4)
,及b
d(t+i+4)
调整为与b
u(t+i+2)
,及b
d(t+i+2)
相同,之后,暂停对上边界及下边界的调整,直到内存124的状态连续为i次好状态时,再次启动对输入带宽的上边界及下边界的调整。
[0114]
第二种情况为在内存124状态为坏状态时对内存124的输入带宽的上边界及下边界的调整。
[0115]
在内存124处于坏状态,且在多次根据调整策略得到的输入带宽值大于上边界或者小于下边界时,则可以启动对输入带宽的边界的调整,这样,可以参考历史情况对输入带宽的上边界及下边界的调整,即能适应当前负载对输入带宽的需求,,又避免了频繁对边界调整,影响系统的稳定性。具体的调整策略如图11的下半部分(系统坏状态下的边界更新)所示,当根据调整模型1001输出的调整策略得到的输入带宽大于当前的上边界,则将内存124的输入带宽调整为上边界的值,或者当根据调整模型1001输出的调整策略得到的输入带宽输入带宽小于下边界时,则将内存124的输入带宽调整为下边界的值,并将当前的时间t的标记值l
t
记录成1,否则记录成0。然后利用指数平滑计算v
t
=v
t-1
*b+(1-b)*l
t
,其中b是平滑因子,其值大于1小于0,该值越大代表该值越关注短期动作的影响,该值小越小代表越关注长期动作的影响。例如,当根据调整模型1001输出的调整策略得到的输入带宽多次大于上边界时,在st+j处,v
t
大于一定的阈值,将处理器123更新边界值。这种方法不仅仅只考虑当前输入带宽对系统的影响,而且考虑了历史调整策略对当前调整策略的影响,因此不会因为一次探索导致系统的平衡被打破从而造成不必要的边界更新。
[0116]
另外,由于调整模型1001的学习需要大量的学习样本,所以需要很长时间才能生效,但是在一些场景下,是不需要通过调整模型1001训练来找到最优的调整策略,例如,当内存124处于非常差的状态时,例如内存124的水位线已经达到了95%~100%,这时处理器123可以直接执行降低输入带宽的操作,而不需要将内存相关参数的状态值输入调整模型1001,根据调整模型1001输出调整策略,这不但提高了带宽的调节效率,而且避免了调整模型1001可能输出增加带宽的动作,对系统的性能造成影响,相似的,当缓存的占有率非常低(0%-10%)时,处理器可以直接执行增加带宽的动作,而不需要将状态值输入调整模型1001。另外就是当系统处于好状态时,由于存储系统的刷盘的性能会随时发生变化,从而一定程度上很难使得内存124长期稳定在好状态。因此,当内存124处于好状态时,处理器123可以根据内存水位线的变化趋势对当前的输入带宽进行微调(微调比例可以设置为0.1%),具体来说就是当内存124的水位线在轻微下降时,可以适当增加内存124的输入带宽,当内存124的水位线在轻微增加时,可以适当减小内存124的输入带宽。
[0117]
以上实施例仅描述了控制器0只包括一层内存的场景,但在实际应用中,一个控制器往往包括多层内存。每层内存可以是不同类型的存储器,每个层级的内存的性能与其他层级的内存的性能不同。本技术中的不同内存性能主要从运算速度和/或访问时延等方面进行考量。本技术实施例仅以控制器0包括dram和scm两种内存为例进行说明。当内存还可以是其他随机存取存储器,例如静态随机存取存储器(static random access memory,sram)等。另外,内存还可以是双列直插式存储器模块或双线存储器模块(dual in-line memory module,简称dimm),即由dram组成的模块。如图12所示,控制器0除了作为一级内存的内存124,还包括二级内存125。其中一级内存124为dram,二级内存为scm。dram的性能高于scm的性能。虽然图3中只示出了两种类型的内存,但是按照前面的描述,在产品实践中控制器0内部可部署多种不同类型的内存,本技术实施例不对控制器0所包含的内存的类型,以及层级的数量做任何限定。内存的层级只是内部的划分,对上层应用来说是不感知的。在控制器接收到主机io后,会首先将主机io存储至一级内存124中,在一级内存124的内存水位线达到阈值后,则处理器123会将一级内存124中的数据淘汰至二级内存125,在二级内存125的水位线达到阈值后,则处理器123会将二级内存125中的数据淘汰至存储池135。在本技术实施例中可以同时对一级内存124及二级内存125的输入带宽进行调整。在对一级内存124的输入带宽进行调整时,二级内存相当于第一实施例及第二实施例中的存储池,第一实施例及第二实施提提供的内存输入带宽的调整方法都可用于对一级内存124的输入带宽的调整。这样,当应用图6提供的调整方法时,需要在一级内存124及二级内存125之间提供状态机,当应用图9提供的调整方法时,需要在一级内存124及二级内存125之间提供调整模型1001。具体调整方法请参考图6及第图9的相关描述,在此不再赘述。在对二级内存125的输入带宽进行调整时,二级内存125相当于图1a及图1b中的内存124,不同的是二级内存125中的数据主要来自于从一级内存124中淘汰的数据以及在二级内存中没有命中,从存储池中读取的数据。图6级图9提供的内存输入带宽的调整方法都可用于对二级内存125的输入带宽的调整。这样,当应用图6提供的调整方法时,需要在二级内存125及存储池135之间提供状态机,当应用图9提供的调整方法时,需要在二级内存125及存储池135之间提供调整模型1001。具体调整方法请参考图6及图9的相关描述,在此不再赘述。
[0118]
图12所示的控制器0的结构不只适用于图1a所示的存算一体的集中式存储系统,
同样适用于图1b中的存算分离的集中式存储系统及图1c中的分布式存储系统。对于图1b中的控制器0和控制器1,也可以使用图12所示的结构,即包括多层内存,对于图1c中的每个存储节点,也可以采用图12所示的结构。
[0119]
本技术实施例还提供如图13所示的对内存的输入带宽进行调整的第一装置1300。所述第一装置1300用于执行图5所示的调整方法。所述第一装置包括:获取模块1301、及调整模块1304,所述调整模块1304包括策略确定子模块1302、及调整子模块1303。
[0120]
获取模块1301用于监测系统的性能,从而获得内存相关参数,并根据侦测的内存相关参数,确定各个参数的状态值,获取模块1301所执行的功能与图6中的步骤s501,502相同,具体请参考图6中的步骤s501,502的相关描述,在此不再赘述。
[0121]
策略确定子模块1302用于将所侦测的内存相关参数的状态值输入状态机401,在所述状态机401为功能模块时,所述状态机401作为所述策略确定子模块的一部分,即根据各内存相关参数的状态值输出调整策略,关于输出调整策略的具体方式请参阅图6中的步骤s502及s503的描述。在所述状态机401为硬件模块时,则所述策略确定子模块1302仅用于将所侦测的内存相关参数的状态值输入状态机401,由状态机401根据内存相关参数的状态值输出调整策略。在其他一些实现方式中,获取模块1301在获取内存相关参数后,不需要确定各个参数的状态值,策略确定子模块1302会将内存相关参数直接输入状态机,状态机根据预设的状态值对应的数值范围确定各个参数的状态值,并进一步确定调整策略。
[0122]
调整子模块1303用于根据输出的调整策略对内存124的输入带宽进行调整,该调整子模块1303执行的功能与图6中的步骤s505对应,具体请参考相关描述,在此不再赘述。
[0123]
本技术实施例还提供如图14所示的对内存的输入带宽进行调整的第二装置1400。所述第二装置1400用于执行图5所示的调整方法。所述第二装置包括:获取模块1401、调整模块1406、激励模块1404、及边界调节模块1405,所述调整模块1406包括策略确定子模块1402、调整子模块1403。
[0124]
所述获取模块1401用于监测系统的性能,从而获得内存相关参数,并根据侦测的内存相关参数,确定各个参数的状态值,获取模块1401所执行的功能与图9中的步骤s901,s902相同,具体请参考图9中的步骤s901及s902的相关描述,在此不再赘述。所述策略确定子模块1402用于将所侦测的内存相关参数的状态值输入调整模型1001,在所述调整模型1001为所述策略确定子模块1302运行时,所述策略确定子模块1302通过执行所述调整模型1001,根据各内存相关参数的状态值输出调整策略,所述策略确定子模块1302执行的功能具体请参阅图9中的步骤s902及s903的描述。在所述调整模型1001为独立的计算单元运行时,所述策略确定子模块1302用于将所侦测的内存相关参数的状态值输入计算单元运行的调整模型1001,然后由计算单元输出调整策略。
[0125]
所述调整子模块1403用于根据输出的调整策略对内存124的输入带宽进行调整,该调整子模块1403执行的功能与图9中的步骤s905对应,具体请参考相关描述,在此不再赘述。
[0126]
所述激励模块1404用于侦测调整后内存状态,并根据内存状态生成激励值,并将激励值反馈给所述调整模型1001,具体请参考图9中的步骤s906及s907的描述,在此不再赘述。
[0127]
所述边界调节模块1405用于在系统运行过程中,输入带宽调整后的系统状态对内
存输入带宽的上边界及下边界进行调整,具体的调整方法请参考图11的相关描述,在此不再赘述。
[0128]
图13提供的第一装置1300及图14提供的第二装置1400的各种实现方式的有益效果也可以参考图6中的方法及图9中方法的有益效果,在此不再赘述。
[0129]
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1