后台写盘流控方法、装置、电子设备及存储介质与流程

文档序号:15850864发布日期:2018-11-07 09:53阅读:180来源:国知局
后台写盘流控方法、装置、电子设备及存储介质与流程

本发明涉及计算机技术领域,具体涉及一种后台写盘流控方法、装置、电子设备及存储介质。

背景技术

缓存就是数据交换的缓冲区(也称作“cache”),硬盘接到写入数据的指令之后,并不会马上将数据写入到盘片上,而是先暂时存储在缓存里,然后发送一个“数据已写入”的信号给系统,这时系统就会认为数据已经写入,并继续执行下面的工作。而缓存往往使用的是ram(断电即掉的非永久储存),所以在缓存中的数据用完后还是会将数据存储到硬盘等存储器里永久存储,这种操作称为后台写盘。

然而,在将缓存中的数据存储到硬盘等存储器的过程中,会产生大量的用户应用的输入输出(input/output,io),如果此时正好是用户应用的io高峰期,则会影响用户应用的响应时间,给用户带来不好的体验。传统的解决方法是采取错峰操作,即白天用户应用比较繁忙时,系统io负载重,此时不进行将缓存中的数据存储到硬盘中的操作,而选择夜晚用户应用较少的时间段执行;但即使是夜晚用户应用的io也很繁忙,因此错峰操作可能并不适用。

另外,在将缓存数据写入硬盘时,会将一些不需要写入硬盘中的缓存数据写入硬盘,浪费写入时间,挤占了应当被写入硬盘中的缓存数据的时间。



技术实现要素:

鉴于以上内容,有必要提出一种后台写盘流控方法、装置、电子设备及存储介质,能够在提高将缓存中的数据写入到硬盘中的效率、降低数据丢失风险的同时,避免对正常输入输出业务性能造成明显冲击,具有很好的流控效果写入。

本发明的第一方面提供一种后台写盘流控方法,所述方法包括:

当接收到用户数据的存储命令时,将所述用户数据写入到配置的缓存中;

当侦测到所述缓存中的缓存信息满足第一预设条件时,获取写入周期内的当前统计周期对应的流控阈值;

基于所述当前统计周期对应的流控阈值,将所述缓存中数据标识为第一标识对应的用户数据写入到硬盘中;

当侦测到所述缓存中的缓存信息没有满足所述第一预设条件但满足第二预设条件时,对所述缓存中数据标识为第二标识对应的用户数据进行清除。

优选的,所述获取写入周期内的当前统计周期对应的流控阈值包括:

判断当前统计周期是否为第一个统计周期;

当确定所述当前统计周期为第一个统计周期时,将预设流控阈值确定为所述当前统计周期对应的流控阈值;

当确定所述当前统计周期不为第一个统计周期时,获取上一个统计周期内用户应用的io负载,根据所述上一个统计周期内用户应用的io负载,确定所述当前统计周期对应的流控阈值。

优选的,根据所述上一个统计周期内用户应用的io负载,确定所述当前统计周期对应的流控阈值包括:

获取上一个统计周期内用户应用的每一个io的数据块大小,计算所述上一个统计周期内的io的平均数据块大小;

获取所述上一个统计周期内的每个数据块的传输时延,计算所述上一个统计周期内的io的平均数据块时延;

获取预先设置的io的数据块大小的基准值及对应的数据块时延的基准值;

根据所述上一个统计周期内的所述io的平均数据块大小、平均数据块时延、数据块大小的基准值、对应的数据块时延的基准值,计算所述上一个统计周期内的io负载强度;

根据所述上一个统计周期内的io负载强度,利用预先训练好的负载分类模型确定所述上一个统计周期内的io负载类别;

根据上一个统计周期内的io负载类别计算当前统计周期对应的流控阈值。

优选的,所述根据所述上一个统计周期内的所述io的平均数据块大小、平均数据块时延、数据块大小的基准值、对应的数据块时延的基准值,计算所述上一个统计周期内的io负载强度的计算公式为:其中,x为上述上一个统计周期内的所述io的平均数据块大小,y为所述平均数据块时延,m为所述数据块大小的基准值,n为所述对应的数据块时延的基准值。

优选的,所述根据上一个统计周期内的io负载类别计算当前统计周期对应的流控阈值包括:

当所述上一个统计周期内的io负载类别为高负载类别时,将所述上一个统计周期对应的流控阈值降低第一预设幅度,得到当前统计周期对应的流控阈值;

当所述上一个统计周期内的io负载类别为低负载类别时,将所述上一个统计周期对应的流控阈值提高第二预设幅度,得到下一个统计周期对应的流控阈值;

当所述上一个统计周期内的io负载类别为正常负载类别时,将所述上一个统计周期对应的流控阈值作为当前统计周期对应的流控阈值。

优选的,所述侦测所述缓存中的缓存信息是否满足第一预设条件包括以下一种或多种的组合:

侦测所述缓存中的剩余存储空间是否小于预设空间阈值;

侦测所述缓存中的用户数据的总量是否大于预设限制阈值。

优选的,所述侦测所述缓存中的缓存信息是否满足第二预设条件为:侦测所述缓存中的用户数据的缓存时间是否早于预设时间阈值。

本发明的第二方面提供一种后台写盘流控装置,所述装置包括:

缓存写入模块,用于当接收到用户数据的存储命令时,将所述用户数据写入到配置的缓存中;

第一侦测模块,用于侦测所述缓存中的缓存信息是否满足第一预设条件;

流控获取模块,用于当所述第一侦测模块侦测到所述缓存中的缓存信息满足第一预设条件时,获取写入周期内的当前统计周期对应的流控阈值;

硬盘写入模块,用于基于所述当前统计周期对应的流控阈值,将所述缓存中数据标识为第一标识对应的用户数据写入到硬盘中;

第二侦测模块,用于当所述第一侦测模块侦测到所述缓存中的缓存信息没有满足第一预设条件时,侦测所述缓存中的缓存信息是否满足第二预设条件;

缓存清除模块,用于当所述第二侦测模块侦测到所述缓存中的缓存信息满足所述第二预设条件时,对所述缓存中数据标识为第二标识对应的用户数据进行清除。

本发明的第三方面提供一种电子设备,所述电子设备包括处理器和存储器,所述处理器用于执行所述存储器中存储的计算机程序时实现所述后台写盘流控方法。

本发明的第四方面提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现所述后台写盘流控方法。

本发明所述的后台写盘流控方法、装置、电子设备及存储介质,将用户数据写入到配置的缓存中,通过侦测所述缓存中的缓存信息满足第一预设条件时,能够根据不同的流控阈值对当前统计周期内的所述缓存中数据标识为第一标识对应的用户数据写入到所指向的硬盘中,在提高用户数据写入硬盘的效率、降低数据丢失风险的同时,能够避免对正常输入输出业务性能造成明显冲击,具有很好的流控效果;另外,在侦测到所述缓存中的缓存信息不满足第一预设条件但满足第二预设条件时,将用户数据从缓存中清除,可以节省缓存的存储空间,提高用户数据写入缓存中的效率。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。

图1是本发明实施例一提供的后台写盘流控方法的流程图。

图2是本发明实施例二提供的根据上一个统计周期内用户应用的io负载确定当前统计周期对应的流控阈值的方法的流程图。

图3是本发明实施例三提供的后台写盘流控装置的功能模块图。

图4是本发明实施例四提供的电子设备的示意图。

如下具体实施方式将结合上述附图进一步说明本发明。

具体实施方式

为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实施例对本发明进行详细描述。需要说明的是,在不冲突的情况下,本发明的实施例及实施例中的特征可以相互组合。

在下面的描述中阐述了很多具体细节以便于充分理解本发明,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

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

本发明实施例的后台写盘流控方法应用在一个或者多个电子设备中。所述后台写盘流控方法也可以应用于由电子设备和通过网络与所述电子设备进行连接的服务器所构成的硬件环境中。网络包括但不限于:广域网、城域网或局域网。本发明实施例的后台写盘流控方法可以由服务器来执行,也可以由电子设备来执行;还可以是由服务器和电子设备共同执行。

对于需要进行后台写盘流控方法的电子设备,可以直接在电子设备上集成本发明的方法所提供的后台写盘流控功能,或者安装用于实现本发明的方法的客户端。再如,本发明所提供的方法还可以以软件开发工具包(softwaredevelopmentkit,sdk)的形式运行在服务器等设备上,以sdk的形式提供后台写盘流控功能的接口,电子设备或其他设备通过提供的接口即可实现对后台写盘进行流控的功能。

实施例一

图1是本发明实施例一提供的后台写盘流控方法的流程图。根据不同的需求,该流程图中的执行顺序可以改变,某些步骤可以省略。

s11、当接收到用户数据的存储命令时,将所述用户数据写入到配置的缓存中。

电子设备接收到用户数据的存储指令时,生成一个写数据指令,并配置一个缓存内存,将用户数据写入到所配置的缓存内存中。

所述用户数据包括:数据内容、地址信息以及数据标识。所述地址信息包括所述用户数据的源地址、目的地址等信息。

所述数据标识用以指示所述用户数据是否需要写入到硬盘中,在本实施例中,所述数据标识可以是第一标识,也可以是第二标识。当所述数据标识是第一标识时,指示所述用户数据需要写入到硬盘中;当所述数据标识是第二标识时,指示所述用户数据不需要写入到硬盘中。例如,若所述数据标识为“1”时,则表明所述用户数据需要写入到硬盘中,若所述数据标识为“0”时,则表明所述用户数据不需要写入到硬盘中,可以在用完之后直接丢弃。

s12、侦测所述缓存中的缓存信息是否满足第一预设条件。

本发明较佳实施例中,所述缓存信息包括:缓存中的剩余存储空间、缓存中的用户数据的总量、缓存中的用户数据的缓存时间及用户数据。所述用户数据的总量是指所述存储在缓存中的用户数据的总大小。

所述侦测所述缓存中的缓存信息是否满足第一预设条件包括以下一种或多种的组合:

1)侦测所述缓存中的剩余存储空间是否小于预设空间阈值;

当侦测到所述缓存中的剩余存储空间小于所述预设空间阈值时,则确定所述缓存中的缓存信息满足了第一预设条件;当侦测到所述缓存中的剩余存储空间大于或者等于所述预设空间阈值时,则确定所述缓存中的缓存信息没有满足第一预设条件。

2)侦测所述缓存中的用户数据的总量是否大于预设限制阈值。

当侦测到所述缓存中的用户数据的总量大于所述预设限制阈值时,则确定所述缓存中的缓存信息满足了第一预设条件;当侦测到所述缓存中的用户数据的总量小于或者等于所述预设限制阈值时,则确定所述缓存中的缓存信息没有满足第一预设条件。

当侦测到所述缓存中的缓存信息满足所述第一预设条件时,执行步骤s13;否则,当侦测到所述缓存中的缓存信息没有满足所述第一预设条件时,执行步骤s15。

s13、获取写入周期内的当前统计周期对应的流控阈值。

将所述缓存中的用户数据从开始写入硬盘到完成写入的整个过程称之为一个写入周期。一个写入周期可以划分为多个统计周期,一个统计周期可以为一个预设时间段,例如,一个统计周期设置为1秒钟。

所述流控是指流量控制。流控的实现方法包括以下两种:一种是通过路由器、交换机的qos模块实现基于源地址、目的地址、源端口、目的端口以及协议类型的流量控制;另一种是通过专业的流控设备实现基于应用层的流量控制。

本较佳实施例中,所述获取写入周期内的当前统计周期对应的流控阈值具体可以包括:

1)判断当前统计周期是否为第一个统计周期。

可以通过判断当前时间是否为第1秒来判断当前写入周期是否为第一个统计周期。

2)当确定所述当前统计周期为第一个统计周期时,将预设流控阈值确定为所述当前统计周期对应的流控阈值;

本发明的写入周期内的第一个统计周期对应的流控阈值为预先设置的流控阈值,可以由系统的管理者根据经验预先设置。即,采用一个预设的流控阈值作为写入周期内的第一个统计周期的流控阈值。

3)当确定所述当前统计周期不为第一个统计周期时,获取上一个统计周期内用户应用的io负载,根据所述上一个统计周期内用户应用的io负载,确定所述当前统计周期对应的流控阈值。

写入周期内的除第一个统计周期外的剩余每一个统计周期可以对应一个流控阈值。剩余每一个统计周期对应的流控阈值是动态调整的,当前统计周期对应的流控阈值可以根据上一个统计周期内的io负载计算得到,下一个统计周期对应的流控阈值可以根据当前统计周期内的io负载计算得到。具体而言,根据第一个统计同期内的io负载计算第二个统计周期对应的流控阈值;根据第二个统计同期内的io负载计算第三个统计周期对应的流控阈值;以此类推。

所述根据所述上一个统计周期内用户应用的io负载,确定所述当前统计周期对应的流控阈值的具体过程可以参见图2及其相应描述。

s14、基于所述当前统计周期对应的流控阈值,将所述缓存中数据标识为第一标识对应的用户数据写入到硬盘中。

所述缓存中数据标识为第一标识对应的用户数据为需要写入到硬盘中的数据,基于当前统计周期对应的流控阈值将需要写入硬盘中的数据写入到硬盘中。若当前统计周期对应的流控阈值较大时,以较大的流控阈值控制所述缓存中数据标识为第一标识对应的用户数据写入到硬盘中的速度,能够提高写入硬盘中的速度,缓解所述缓存中的存储压力,且能避免因系统断电或其他非正常情况发生时导致的所述缓存中的用户数据丢失的问题。若当前统计周期对应的流控阈值较小时,使得所述缓存中数据标识为第一标识对应的用户数据写入到硬盘中的速度不至于过快,避免对正常输入输出业务性能造成明显冲击。

s15、侦测所述缓存中的缓存信息是否满足第二预设条件。

所述侦测所述缓存中的缓存信息是否满足第二预设条件为:侦测所述缓存中的用户数据的缓存时间是否早于预设时间阈值。

当侦测到所述缓存中的用户数据的缓存时间早于所述预设时间阈值时,则确定所述缓存中的缓存信息满足了第二预设条件;当侦测到所述缓存中的用户数据的缓存时间不早于所述预设时间阈值时,则确定所述缓存中的缓存信息没有满足第二预设条件。

当侦测到所述缓存中的缓存信息满足所述第二预设条件时,执行步骤s16;否则,当侦测到所述缓存中的缓存信息没有满足所述第二预设条件时,可以返回执行步骤s12。

s16、对所述缓存中数据标识为第二标识对应的用户数据进行清除。

所述缓存中数据标识为第二标识对应的用户数据为不需要写入到硬盘中的数据,将数据标识为第二标识对应的用户数据不写入到硬盘中且在确定第二标识对应的用户数据早于预设时间阈值时,将其从所述缓存中清除,能够节省缓存中的存储空间,为需要写入硬盘中的用户数据提供更多的存储空间,提高用户数据写入缓存中的速度,能够进一步减少对用户应用的io数据的冲击,提高用户体验。

实施例二

图2是本发明实施例二提供的根据上一个统计周期内用户应用的io负载确定当前统计周期对应的流控阈值的方法的流程图。

s21、获取上一个统计周期内用户应用的每一个io的数据块大小,计算所述上一个统计周期内的io的平均数据块大小。

所述上一个统计周期内的io的平均数据块大小可以采用算术平均值算法、几何平均数算法,或者均方根平均数算法来计算。

举例而言,假设检测到上一个统计周期内,用户应用共有十次io,十次io的数据块大小分别为:2m,1m,3m,0.5m,10m,4m,0.1m,1.2m,5m以及8m。利用所述算术平均值算法计算所述上一个统计周期内的io的平均数据块大小为:

s22、获取所述上一个统计周期内的每个数据块的传输时延,计算所述上一个统计周期内的io的平均数据块时延。

所述传输时延(简称为时延)是指结点在发送数据时使数据块从结点进入到传输媒体所需的时间,即一个发送站点从开始发送数据帧到数据帧发送完毕所需要的全部时间,或者一个接收站点从开始接收数据帧到数据帧接收完毕所需要的全部时间。

在本发明较佳实施例中,所述数据块的传输时延可以从每个存储节点中安装的一个负载量测工具或者性能监控工具中获取得到。

如上所述,所述上一个统计周期内的io的平均数据块时延也可以采用算术平均值算法、几何平均数算法,或者均方根平均数算法来计算。假设,假设检测到上一个统计周期内,十次io的传输时延分别为:1s、0.8s、1.5s、0.4s、5s、2s、0.02s、0.6s、3s及4.5s,则所述上一个统计周期内的io平均数据块时延采用算术平均值算法来计算时,其结果为:

(1s+0.8s+1.5s+0.4s+5s+2s+0.1s+0.6s+3s+4.4s)=1.88s。

应当理解的是,若上一个统计周期内的io的平均数据块大小采用算术平均值算法来计算,则上一个统计周期内的io的平均数据块时延也采用算术平均值算法来计算;若上一个统计周期内的io的平均数据块大小采用几何平均数算法来计算,则上一个统计周期内的io的平均数据块时延也采用几何平均数算法来计算;或者若上一个统计周期内的io的平均数据块大小采用均方根平均数算法来计算,则上一个统计周期内的io的平均数据块时延也采用均方根平均数算法来计算。

s23、获取预先设置的io的数据块大小的基准值及对应的数据块时延的基准值。

在本发明较佳实施例中,所述io数据块大小的基准值以及对应的数据块时延的基准值可以由存储系统的管理员根据经验预先设置。例如,根据经验,4k的数据块在传输时,时延最小,理想状态下可以达到50ms,则所述io数据块大小的基准值可以设置为4k,对应的数据块时延的基准值可以设置为50ms。

s24、根据所述上一个统计周期内的所述io的平均数据块大小、平均数据块时延、数据块大小的基准值、对应的数据块时延的基准值,计算所述上一个统计周期内的io负载强度。

举例而言,假设上一个统计周期内的所述io的平均数据块大小为x、平均数据块时延为y、数据块大小的基准值为m、对应的数据块时延的基准值为n,则所述上一个统计周期内的io负载强度的计算公式为:

s25、根据所述上一个统计周期内的io负载强度,利用预先训练好的负载分类模型确定所述上一个统计周期内的io负载类别。

在本发明较佳实施例中,所述io负载类别包括:高负载类别、正常负载类别、低负载类别。

优选地,所述负载分类模型包括,但不限于:支持向量机(supportvectormachine,svm)模型。将所述上一个统计周期内的io的平均数据块大小、所述上一个统计周期内的io的平均数据块时延、所述上一个统计周期内的io负载强度作为所述负载分类模型的输入,经过所述负载分类模型计算后,输出上一个统计周期内的io负载类别。

在本发明的优选实施例中,所述负载分类模型的训练过程包括:

1)获取正样本的io负载数据及负样本的io负载数据,并将正样本的io负载数据标注负载类别,以使正样本的io负载数据携带io负载类别标签。

例如,分别选取500个高负载类别、正常负载类别、低负载类别对应的io负载数据,并对每个io负载数据标注类别,可以以“1”作为高负载的io数据标签,以“2”作为正常负载的io数据标签,以“3”作为低负载的io数据标签。

2)将所述正样本的io负载数据及所述负样本的io负载数据随机分成第一预设比例的训练集和第二预设比例的验证集,利用所述训练集训练所述负载分类模型,并利用所述验证集验证训练后的所述负载分类模型的准确率。

先将不同负载类别的训练集中的训练样本分发到不同的文件夹里。例如,将高负载类别的训练样本分发到第一文件夹里、正常负载类别的训练样本分发到第二文件夹里、低负载类别的训练样本分发到第三文件夹里。然后从不同的文件夹里分别提取第一预设比例(例如,70%)的训练样本作为总的训练样本进行负载分类模型的训练,从不同的文件夹里分别取剩余第二预设比例(例如,30%)的训练样本作为总的测试样本对训练完成的所述负载分类模型进行准确性验证。

3)若所述准确率大于或者等于预设准确率时,则结束训练,以训练后的所述负载分类模型作为分类器识别所述当前统计周期内的io负载类别;若所述准确率小于预设准确率时,则增加正样本数量及负样本数量以重新训练所述负载分类模型直至所述准确率大于或者等于预设准确率。

s26、根据上一个统计周期内的io负载类别计算当前统计周期对应的流控阈值。

具体的,所述根据上一个统计周期内的io负载类别计算当前统计周期对应的流控阈值可以包括:

1)当所述上一个统计周期内的io负载类别为高负载类别时,将所述上一个统计周期对应的流控阈值降低第一预设幅度,得到当前统计周期对应的流控阈值。

在上一个统计周期内的io负载为高负载时,按照所述第一预设幅度降低流控阈值,以在当前统计周期内以低流控阈值对所述缓存中的数据执行写入操作,通过降低数据写入的速度来保证用户应用的高效访问。

在本发明的优选实施例中,所述第一预设幅度可以是上一个统计周期对应的流控阈值的1/2。即当前统计周期对应的流控阈值为上一个统计周期对应的流控阈值的1/2,下一个统计周期对应的流控阈值为当前统计周期对应的流控阈值的1/2。

2)当所述上一个统计周期内的io负载类别为低负载类别时,将所述上一个统计周期对应的流控阈值提高第二预设幅度,得到下一个统计周期对应的流控阈值。

在上一个统计周期内的io负载为低负载时,按照所述第二预设幅度提高流控阈值,以在当前统计周期内以高流控阈值对所述缓存中的数据执行写入操作,在保证用户应用的访问质量的基础上,提高数据写入的速度。

在本发明的优选实施例中,所述第二预设幅度可以是上一个统计周期对应的流控阈值的1.5倍。即当前统计周期对应的流控阈值为上一个统计周期对应的流控阈值的1.5倍,下一个统计周期对应的流控阈值为当前统计周期对应的流控阈值的1.5倍。

3)当所述上一个统计周期内的io负载类别为正常负载类别时,将所述上一个统计周期对应的流控阈值作为当前统计周期对应的流控阈值。

综上所述,本发明所述的后台写盘流控方法,将用户数据写入到配置的缓存中,通过侦测所述缓存中的缓存信息满足第一预设条件并且在当前写入周期为第一个统计周期时,以预设流控阈值将所述缓存中数据标识为第一标识对应的用户数据写入到所指向的硬盘中;而在侦测所述缓存中的缓存信息满足第一预设条件并且在当前写入周期不为第一个统计周期时,能够根据上一个统计周期内用户应用的io负载动态调整当前统计周期对应的流控阈值,根据不同的流控阈值对当前统计周期内的所述缓存中数据标识为第一标识对应的用户数据写入到所指向的硬盘中。在提高用户数据写入硬盘的效率、降低数据丢失风险的同时,能够避免对正常输入输出业务性能造成明显冲击,具有很好的流控效果。

其次,当前统计周期对应的流控阈值是根据上一个统计周期内用户应用的io负载自动进行动态调整,不需管理者手动调节,减少了管理者的工作量,避免了因管理者的主观因素导致的调整不精准的问题。

另外,在侦测到所述缓存中的缓存信息不满足第一预设条件但满足第二预设条件时,将用户数据从缓存中清除,可以节省缓存的存储空间,提高用户数据写入缓存中的效率。

以上所述,仅是本发明的具体实施方式,但本发明的保护范围并不局限于此,对于本领域的普通技术人员来说,在不脱离本发明创造构思的前提下,还可以做出改进,但这些均属于本发明的保护范围。

下面结合第3至4图,分别对实现上述后台写盘流控方法的电子设备的功能模块及硬件结构进行介绍。

实施例三

图3为本发明后台写盘流控装置较佳实施例中的功能模块图。

在一些实施例中,所述后台写盘流控装置30运行于电子设备中。所述后台写盘流控装置30可以包括多个由程序代码段所组成的功能模块。所述后台写盘流控装置30中的各个程序段的程序代码可以存储于存储器中,并由至少一个处理器所执行,以执行(详见图1-2及其相关描述)后台写盘流控方法。

本实施例中,所述后台写盘流控装置30根据其所执行的功能,可以被划分为多个功能模块。所述功能模块可以包括:缓存写入模块301、第一侦测模块302、流控获取模块303、硬盘写入模块304、第二侦测模块305、缓存清除模块306、流控计算模块307及模型训练模块308。本发明所称的模块是指一种能够被至少一个处理器所执行并且能够完成固定功能的一系列计算机程序段,其存储在存储器中。在一些实施例中,关于各模块的功能将在后续的实施例中详述。

缓存写入模块301,用于当接收到用户数据的存储命令时,将所述用户数据写入到配置的缓存中。

电子设备接收到用户数据的存储指令时,生成一个写数据指令,并配置一个缓存内存,将用户数据写入到所配置的缓存内存中。

所述用户数据包括:数据内容、地址信息以及数据标识。所述地址信息包括所述用户数据的源地址、目的地址等信息。

所述数据标识用以指示所述用户数据是否需要写入到硬盘中,在本实施例中,所述数据标识可以是第一标识,也可以是第二标识。当所述数据标识是第一标识时,指示所述用户数据需要写入到硬盘中;当所述数据标识是第二标识时,指示所述用户数据不需要写入到硬盘中。例如,若所述数据标识为“1”时,则表明所述用户数据需要写入到硬盘中,若所述数据标识为“0”时,则表明所述用户数据不需要写入到硬盘中,可以在用完之后直接丢弃。

第一侦测模块302,用于侦测所述缓存中的缓存信息是否满足第一预设条件。

本发明较佳实施例中,所述缓存信息包括:缓存中的剩余存储空间、缓存中的用户数据的总量、缓存中的用户数据的缓存时间及用户数据。所述用户数据的总量是指所述存储在缓存中的用户数据的总大小。

所述第一侦测模块302侦测所述缓存中的缓存信息是否满足第一预设条件包括以下一种或多种的组合:

1)侦测所述缓存中的剩余存储空间是否小于预设空间阈值;

当侦测到所述缓存中的剩余存储空间小于所述预设空间阈值时,则确定所述缓存中的缓存信息满足了第一预设条件;当侦测到所述缓存中的剩余存储空间大于或者等于所述预设空间阈值时,则确定所述缓存中的缓存信息没有满足第一预设条件。

2)侦测所述缓存中的用户数据的总量是否大于预设限制阈值。

当侦测到所述缓存中的用户数据的总量大于所述预设限制阈值时,则确定所述缓存中的缓存信息满足了第一预设条件;当侦测到所述缓存中的用户数据的总量小于或者等于所述预设限制阈值时,则确定所述缓存中的缓存信息没有满足第一预设条件。

流控获取模块303,用于当第一侦测模块302侦测到所述缓存中的缓存信息满足所述第一预设条件时,获取写入周期内的当前统计周期对应的流控阈值。

将所述缓存中的用户数据从开始写入硬盘到完成写入的整个过程称之为一个写入周期。一个写入周期可以划分为多个统计周期,一个统计周期可以为一个预设时间段,例如,一个统计周期设置为1秒钟。

所述流控是指流量控制。流控的实现方法包括以下两种:一种是通过路由器、交换机的qos模块实现基于源地址、目的地址、源端口、目的端口以及协议类型的流量控制;另一种是通过专业的流控设备实现基于应用层的流量控制。

本较佳实施例中,所述流控获取模块303获取写入周期内的当前统计周期对应的流控阈值具体可以包括:

1)判断当前统计周期是否为第一个统计周期。

可以通过判断当前时间是否为第1秒来判断当前写入周期是否为第一个统计周期。

2)当确定所述当前统计周期为第一个统计周期时,将预设流控阈值确定为所述当前统计周期对应的流控阈值;

本发明的写入周期内的第一个统计周期对应的流控阈值为预先设置的流控阈值,可以由系统的管理者根据经验预先设置。即,采用一个预设的流控阈值作为写入周期内的第一个统计周期的流控阈值。

3)当确定所述当前统计周期不为第一个统计周期时,获取上一个统计周期内用户应用的io负载,根据所述上一个统计周期内用户应用的io负载,确定所述当前统计周期对应的流控阈值。

写入周期内的除第一个统计周期外的剩余每一个统计周期可以对应一个流控阈值。剩余每一个统计周期对应的流控阈值是动态调整的,当前统计周期对应的流控阈值可以根据上一个统计周期内的io负载计算得到,下一个统计周期对应的流控阈值可以根据当前统计周期内的io负载计算得到。具体而言,根据第一个统计同期内的io负载计算第二个统计周期对应的流控阈值;根据第二个统计同期内的io负载计算第三个统计周期对应的流控阈值;以此类推。

硬盘写入模块304,用于基于所述当前统计周期对应的流控阈值,将所述缓存中数据标识为第一标识对应的用户数据写入到硬盘中。

所述缓存中数据标识为第一标识对应的用户数据为需要写入到硬盘中的数据,基于当前统计周期对应的流控阈值将需要写入硬盘中的数据写入到硬盘中。若当前统计周期对应的流控阈值较大时,以较大的流控阈值控制所述缓存中数据标识为第一标识对应的用户数据写入到硬盘中的速度,能够提高写入硬盘中的速度,缓解所述缓存中的存储压力,且能避免因系统断电或其他非正常情况发生时导致的所述缓存中的用户数据丢失的问题。若当前统计周期对应的流控阈值较小时,使得所述缓存中数据标识为第一标识对应的用户数据写入到硬盘中的速度不至于过快,避免对正常输入输出业务性能造成明显冲击。

第二侦测模块305,用于当第一侦测模块302侦测到所述缓存中的缓存信息没有满足所述第一预设条件时,侦测所述缓存中的缓存信息是否满足第二预设条件。

所述第二侦测模块305侦测所述缓存中的缓存信息是否满足第二预设条件为:侦测所述缓存中的用户数据的缓存时间是否早于预设时间阈值。

当侦测到所述缓存中的用户数据的缓存时间早于所述预设时间阈值时,则确定所述缓存中的缓存信息满足了第二预设条件;当侦测到所述缓存中的用户数据的缓存时间不早于所述预设时间阈值时,则确定所述缓存中的缓存信息没有满足第二预设条件。

缓存清除模块306,用于当第二侦测模块305侦测到所述缓存中的缓存信息满足所述第二预设条件时,对所述缓存中数据标识为第二标识对应的用户数据进行清除。

所述缓存中数据标识为第二标识对应的用户数据为不需要写入到硬盘中的数据,将数据标识为第二标识对应的用户数据不写入到硬盘中且在确定第二标识对应的用户数据早于预设时间阈值时,将其从所述缓存中清除,能够节省缓存中的存储空间,为需要写入硬盘中的用户数据提供更多的存储空间,提高用户数据写入缓存中的速度,能够进一步减少对用户应用的io数据的冲击,提高用户体验。

流控获取模块303具体还用于获取上一个统计周期内用户应用的每一个io的数据块大小,计算所述上一个统计周期内的io的平均数据块大小。

所述上一个统计周期内的io的平均数据块大小可以采用算术平均值算法、几何平均数算法,或者均方根平均数算法来计算。

举例而言,假设检测到上一个统计周期内,用户应用共有十次io,十次io的数据块大小分别为:2m,1m,3m,0.5m,10m,4m,0.1m,1.2m,5m以及8m。利用所述算术平均值算法计算所述上一个统计周期内的io的平均数据块大小为:s=(2m+1m+3m+0.5m+10m+4m+0.1m+1.2m+5m+8m)/10=3.48m。

流控获取模块303具体还用于获取所述上一个统计周期内的每个数据块的传输时延,计算所述上一个统计周期内的io的平均数据块时延。

所述传输时延(简称为时延)是指结点在发送数据时使数据块从结点进入到传输媒体所需的时间,即一个发送站点从开始发送数据帧到数据帧发送完毕所需要的全部时间,或者一个接收站点从开始接收数据帧到数据帧接收完毕所需要的全部时间。

在本发明较佳实施例中,所述数据块的传输时延可以从每个存储节点中安装的一个负载量测工具或者性能监控工具中获取得到。

如上所述,所述上一个统计周期内的io的平均数据块时延也可以采用算术平均值算法、几何平均数算法,或者均方根平均数算法来计算。假设,假设检测到上一个统计周期内,十次io的传输时延分别为:1s、0.8s、1.5s、0.4s、5s、2s、0.02s、0.6s、3s及4.5s,则所述上一个统计周期内的io平均数据块时延采用算术平均值算法来计算时,其结果为:

(1s+0.8s+1.5s+0.4s+5s+2s+0.1s+0.6s+3s+4.4s)=1.88s。

应当理解的是,若上一个统计周期内的io的平均数据块大小采用算术平均值算法来计算,则上一个统计周期内的io的平均数据块时延也采用算术平均值算法来计算;若上一个统计周期内的io的平均数据块大小采用几何平均数算法来计算,则上一个统计周期内的io的平均数据块时延也采用几何平均数算法来计算;或者若上一个统计周期内的io的平均数据块大小采用均方根平均数算法来计算,则上一个统计周期内的io的平均数据块时延也采用均方根平均数算法来计算。

流控获取模块303具体还用于获取预先设置的io的数据块大小的基准值及对应的数据块时延的基准值。

在本发明较佳实施例中,所述io数据块大小的基准值以及对应的数据块时延的基准值可以由存储系统的管理员根据经验预先设置。例如,根据经验,4k的数据块在传输时,时延最小,理想状态下可以达到50ms,则所述io数据块大小的基准值可以设置为4k,对应的数据块时延的基准值可以设置为50ms。

流控计算模块307,用于根据所述上一个统计周期内的所述io的平均数据块大小、平均数据块时延、数据块大小的基准值、对应的数据块时延的基准值,计算所述上一个统计周期内的io负载强度。

举例而言,假设上一个统计周期内的所述io的平均数据块大小为x、平均数据块时延为y、数据块大小的基准值为m、对应的数据块时延的基准值为n,则所述上一个统计周期内的io负载强度的计算公式为:

流控获取模块303根据所述上一个统计周期内的io负载强度,利用预先训练好的负载分类模型确定所述上一个统计周期内的io负载类别。

在本发明较佳实施例中,所述io负载类别包括:高负载类别、正常负载类别、低负载类别。

优选地,所述负载分类模型包括,但不限于:支持向量机(supportvectormachine,svm)模型。将所述上一个统计周期内的io的平均数据块大小、所述上一个统计周期内的io的平均数据块时延、所述上一个统计周期内的io负载强度作为所述负载分类模型的输入,经过所述负载分类模型计算后,输出上一个统计周期内的io负载类别。

模型训练模块308,用于训练负载分类模型。

在本发明的优选实施例中,所述模型训练模块308训练负载分类模型的过程包括:

1)获取正样本的io负载数据及负样本的io负载数据,并将正样本的io负载数据标注负载类别,以使正样本的io负载数据携带io负载类别标签。

例如,分别选取500个高负载类别、正常负载类别、低负载类别对应的io负载数据,并对每个io负载数据标注类别,可以以“1”作为高负载的io数据标签,以“2”作为正常负载的io数据标签,以“3”作为低负载的io数据标签。

2)将所述正样本的io负载数据及所述负样本的io负载数据随机分成第一预设比例的训练集和第二预设比例的验证集,利用所述训练集训练所述负载分类模型,并利用所述验证集验证训练后的所述负载分类模型的准确率。

先将不同负载类别的训练集中的训练样本分发到不同的文件夹里。例如,将高负载类别的训练样本分发到第一文件夹里、正常负载类别的训练样本分发到第二文件夹里、低负载类别的训练样本分发到第三文件夹里。然后从不同的文件夹里分别提取第一预设比例(例如,70%)的训练样本作为总的训练样本进行负载分类模型的训练,从不同的文件夹里分别取剩余第二预设比例(例如,30%)的训练样本作为总的测试样本对训练完成的所述负载分类模型进行准确性验证。

3)若所述准确率大于或者等于预设准确率时,则结束训练,以训练后的所述负载分类模型作为分类器识别所述当前统计周期内的io负载类别;若所述准确率小于预设准确率时,则增加正样本数量及负样本数量以重新训练所述负载分类模型直至所述准确率大于或者等于预设准确率。

流控计算模块307,还用于根据上一个统计周期内的io负载类别计算当前统计周期对应的流控阈值。

具体的,所述根据上一个统计周期内的io负载类别计算当前统计周期对应的流控阈值可以包括:

1)当所述上一个统计周期内的io负载类别为高负载类别时,将所述上一个统计周期对应的流控阈值降低第一预设幅度,得到当前统计周期对应的流控阈值。

在上一个统计周期内的io负载为高负载时,按照所述第一预设幅度降低流控阈值,以在当前统计周期内以低流控阈值对所述缓存中的数据执行写入操作,通过降低数据写入的速度来保证用户应用的高效访问。

在本发明的优选实施例中,所述第一预设幅度可以是上一个统计周期对应的流控阈值的1/2。即当前统计周期对应的流控阈值为上一个统计周期对应的流控阈值的1/2,下一个统计周期对应的流控阈值为当前统计周期对应的流控阈值的1/2。

2)当所述上一个统计周期内的io负载类别为低负载类别时,将所述上一个统计周期对应的流控阈值提高第二预设幅度,得到下一个统计周期对应的流控阈值。

在上一个统计周期内的io负载为低负载时,按照所述第二预设幅度提高流控阈值,以在当前统计周期内以高流控阈值对所述缓存中的数据执行写入操作,在保证用户应用的访问质量的基础上,提高数据写入的速度。

在本发明的优选实施例中,所述第二预设幅度可以是上一个统计周期对应的流控阈值的1.5倍。即当前统计周期对应的流控阈值为上一个统计周期对应的流控阈值的1.5倍,下一个统计周期对应的流控阈值为当前统计周期对应的流控阈值的1.5倍。

3)当所述上一个统计周期内的io负载类别为正常负载类别时,将所述上一个统计周期对应的流控阈值作为当前统计周期对应的流控阈值。

综上所述,本发明所述的后台写盘流控装置,将用户数据写入到配置的缓存中,通过侦测所述缓存中的缓存信息满足第一预设条件并且在当前写入周期为第一个统计周期时,以预设流控阈值将所述缓存中数据标识为第一标识对应的用户数据写入到所指向的硬盘中;而在侦测所述缓存中的缓存信息满足第一预设条件并且在当前写入周期不为第一个统计周期时,能够根据上一个统计周期内用户应用的io负载动态调整当前统计周期对应的流控阈值,根据不同的流控阈值对当前统计周期内的所述缓存中数据标识为第一标识对应的用户数据写入到所指向的硬盘中。在提高用户数据写入硬盘的效率、降低数据丢失风险的同时,能够避免对正常输入输出业务性能造成明显冲击,具有很好的流控效果。

其次,当前统计周期对应的流控阈值是根据上一个统计周期内用户应用的io负载自动进行动态调整,不需管理者手动调节,减少了管理者的工作量,避免了因管理者的主观因素导致的调整不精准的问题。

另外,在侦测到所述缓存中的缓存信息不满足第一预设条件但满足第二预设条件时,将用户数据从缓存中清除,可以节省缓存的存储空间,提高用户数据写入缓存中的效率。

上述以软件功能模块的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能模块存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,双屏设备,或者网络设备等)或处理器(processor)执行本发明各个实施例所述方法的部分。

实施例四

图4为本发明实施例四提供的电子设备的示意图。

所述电子设备4包括:存储器41、至少一个处理器42、存储在所述存储器41中并可在所述至少一个处理器42上运行的计算机程序43及至少一条通讯总线44。

所述至少一个处理器42执行所述计算机程序43时实现上述方法实施例中的步骤。

示例性的,所述计算机程序43可以被分割成一个或多个模块/单元,所述一个或者多个模块/单元被存储在所述存储器41中,并由所述至少一个处理器42执行,以完成本发明上述方法实施例中的步骤。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序43在所述电子设备4中的执行过程。

所述电子设备4可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。本领域技术人员可以理解,所述示意图4仅仅是电子设备4的示例,并不构成对电子设备4的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述电子设备4还可以包括输入输出设备、网络接入设备、总线等。

所述至少一个处理器42可以是中央处理单元(centralprocessingunit,cpu),还可以是其他通用处理器、数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现成可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。该处理器42可以是微处理器或者该处理器42也可以是任何常规的处理器等,所述处理器42是所述电子设备4的控制中心,利用各种接口和线路连接整个电子设备4的各个部分。

所述存储器41可用于存储所述计算机程序43和/或模块/单元,所述处理器42通过运行或执行存储在所述存储器41内的计算机程序和/或模块/单元,以及调用存储在存储器41内的数据,实现所述电子设备4的各种功能。所述存储器41可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据电子设备4的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器41可以包括高速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡(smartmediacard,smc),安全数字(securedigital,sd)卡,闪存卡(flashcard)、至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。

所述电子设备4集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、u盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。

在本发明所提供的几个实施例中,应该理解到,所揭露的电子设备和方法,可以通过其它的方式实现。例如,以上所描述的电子设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。

另外,在本发明各个实施例中的各功能单元可以集成在相同处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在相同单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能模块的形式实现。

对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本发明内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他单元或,单数不排除复数。系统权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。

最后应说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或等同替换,而不脱离本发明技术方案的精神范围。

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