一种回写速率刷新方法、装置、设备及可读存储介质与流程

文档序号:32841650发布日期:2023-01-06 21:02阅读:28来源:国知局
一种回写速率刷新方法、装置、设备及可读存储介质与流程

1.本技术涉及分布式存储优化技术领域,特别涉及一种回写速率刷新方法、装置、设备及可读存储介质。


背景技术:

2.bcache是linux kernel(linux内核,linux是一种开源电脑操作系统内核)中块设备层的缓存系统,如图1所示,其将至少一个高速块设备(一般指固态硬盘)构建为多个低速块设备(一般指机械硬盘)的缓存。图1中的ssd设备为高速硬盘(即固态硬盘),sda至sdn设备为低速硬盘(即机械硬盘),而作为缓存盘的ssd硬盘为后端的低速硬盘提供缓存服务。具体的,bcache(即图1中的bcache-0至bcache-m)将应用层的io数据写到缓存设备(即高速块设备ssd)上,然后bcache会将缓存设备上的数据回写到后端的低速块设备sda至sdn上,从而达到更高的写性能。
3.由此可见,bcache的回写算法主要是用于将前端高速块设备上的脏数据刷新到后端低速块设备上。其中,为了确保回写时的缓冲效果,需要使得回写速率能够根据脏数据量的多少来动态调整,即回写速率的刷新在很大程度上决定了回写算法的优劣。因此,如何有效实现bcache中的回写速率的刷新是当前亟需解决的问题。


技术实现要素:

4.本技术提供一种回写速率刷新方法、装置、设备及可读存储介质,以有效实现bcache中回写速率的刷新,进而确保回写缓冲效果。
5.第一方面,提供了一种回写速率刷新方法,包括以下步骤:
6.当检测到当前的实时脏数据量达到脏数据阈值时,基于ipd算法、实时脏数据量、脏数据阈值计算出实时回写比率;
7.基于指数移动加权平均算法、所述实时脏数据量、历史脏数据量和所述实时回写比率计算出刷新频率变化量;
8.根据所述刷新频率变化量对历史回写速率进行刷新,得到新的回写速率;
9.基于所述新的回写速率进行脏数据的刷新。
10.一些实施例中,所述基于ipd算法、实时脏数据量、脏数据阈值计算出实时回写比率,包括:
11.基于所述实时脏数据量和脏数据阈值计算得到第一脏数据差值;
12.根据所述第一脏数据差值、历史脏数据差值、预设的比例项系数、预设的积分系数和预设的微分系数计算得到pid中的比例值、积分值和微分值;
13.根据所述比例值、所述积分值和所述微分值计算得到实时回写比率。
14.一些实施例中,所述根据所述第一脏数据差值、历史脏数据差值、预设的比例项系数、预设的积分系数和预设的微分系数计算得到pid中的比例值、积分值和微分值,包括:
15.根据所述第一脏数据差值和预设的比例项系数计算得到pid中的比例值;
16.基于第一脏数据差值和全部历史脏数据差值计算得到脏数据差值之和;
17.根据所述脏数据差值之和以及预设的积分系数计算得到pid中的积分值;
18.基于所述第一脏数据差值和上一次计算得到的历史脏数据差值计算得到脏数据差值之差;
19.根据所述脏数据差值之差以及预设的微分系数计算得到pid中的微分值。
20.一些实施例中,所述比例值的计算公式为:
21.p=k
p
×
e(t)
22.式中,p表示比例值,k
p
表示比例项系数,e(t)表示第一脏数据差值;
23.所述积分值的计算公式为:
24.i=ki×e25.式中,i表示积分值,ki表示积分系数,e表示脏数据差值之和;
26.所述微分值的计算公式为:
27.d=kd×u28.式中,d表示微分值,kd表示微分系数,u表示脏数据差值之差。
29.一些实施例中,所述基于指数移动加权平均算法、所述实时脏数据量、历史脏数据量和所述实时回写比率计算出刷新频率变化量,包括:
30.基于所述实时脏数据量和上一次的历史脏数据量计算得到第二脏数据差值;
31.基于预设的权重系数、所述第二脏数据差值以及上一次计算得到的历史第二脏数据差值计算得到移动差值;
32.根据实时回写比率和预设的权重系数计算得到新的回写比率;
33.根据所述新的回写比率和移动差值计算得到刷新频率变化量。
34.一些实施例中,所述移动差值的计算公式为:
[0035][0036]
式中,der表示移动差值,weight表示权重系数,de表示第二脏数据差值,de
old
表示上一次计算得到的历史第二脏数据差值。
[0037]
第二方面,提供了一种回写速率刷新装置,包括:
[0038]
第一计算单元,其用于当检测到当前的实时脏数据量达到脏数据阈值时,基于ipd算法、实时脏数据量、脏数据阈值计算出实时回写比率;
[0039]
第二计算单元,其用于基于指数移动加权平均算法、所述实时脏数据量、历史脏数据量和所述实时回写比率计算出刷新频率变化量;
[0040]
刷新单元,其用于根据所述刷新频率变化量对历史回写速率进行刷新,得到新的回写速率;基于所述新的回写速率进行脏数据的刷新。
[0041]
一些实施例中,所述第一计算单元具体用于:
[0042]
基于所述实时脏数据量和脏数据阈值计算得到第一脏数据差值;
[0043]
根据所述第一脏数据差值、历史脏数据差值、预设的比例项系数、预设的积分系数和预设的微分系数计算得到pid中的比例值、积分值和微分值;
[0044]
根据所述比例值、所述积分值和所述微分值计算得到实时回写比率。
[0045]
第三方面,提供了一种回写速率刷新设备,包括:存储器和处理器,所述存储器中
存储有至少一条指令,所述至少一条指令由所述处理器加载并执行,以实现前述的回写速率刷新方法。
[0046]
第四方面,提供了一种计算机可读存储介质,所述计算机存储介质存储有计算机程序,当所述计算机程序被处理器执行时,以实现前述的回写速率刷新方法。
[0047]
本技术提供的技术方案带来的有益效果包括:可降低回写速率刷新的随机性,有效实现bcache中回写速率的刷新,进而确保回写的缓冲效果。
[0048]
本技术提供了一种回写速率刷新方法、装置、设备及可读存储介质,包括当检测到当前的实时脏数据量达到脏数据阈值时,基于ipd算法、实时脏数据量、脏数据阈值计算出实时回写比率;基于指数移动加权平均算法、所述实时脏数据量、历史脏数据量和所述实时回写比率计算出刷新频率变化量;根据所述刷新频率变化量对历史回写速率进行刷新,得到新的回写速率;基于所述新的回写速率进行脏数据的刷新。本技术通过pid算法、指数移动加权平均算法和脏数据量对回写速率进行动态更新调整,降低了回写速率刷新的随机性,有效实现了bcache中回写速率的刷新,进而确保回写的缓冲效果。
附图说明
[0049]
为了更清楚地说明本技术实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0050]
图1为bcache服务机制结构示意图;
[0051]
图2为本技术实施例提供的一种回写速率刷新方法的流程示意图;
[0052]
图3为本技术实施例提供的一种回写速率刷新装置的结构示意图;
[0053]
图4为本技术实施例提供的一种回写速率刷新设备的结构示意图。
具体实施方式
[0054]
为使本技术实施例的目的、技术方案和优点更加清楚,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本技术的一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本技术保护的范围。
[0055]
图2是本技术实施例提供的一种回写速率刷新方法,包括以下步骤:
[0056]
步骤s10:当检测到当前的实时脏数据量达到脏数据阈值时,基于ipd算法、实时脏数据量、脏数据阈值计算出实时回写比率;
[0057]
示范性的,由于当前的bcache只能大致地做到回写速率随脏数据的多少进行增减,以致回写速率的刷新的随机性比较大,进而影响缓冲效果,尤其对于存在大量随机写的场景下,影响尤为明显。本实施例为了降低回写速率刷新的随机性,将通过pid算法、指数移动加权平均算法和脏数据量对回写速率进行动态更新调整。其中,在进行回写速率的刷新之前,先设置用于触发回写速率刷新线程的脏数据阈值,即根据实际需求确定出前端高速块设备中脏数据量占整个缓冲设备容量的预设百分比,根据该预设百分比和整个缓冲设备容量即可计算得到脏数据阈值;然后根据获取到的当前时刻的实时脏数据量与脏数据阈值
之间的大小关系来确定是否触发回写速率刷新线程。
[0058]
比如,预设百分比设置为10%,缓冲设备容量为1k,则脏数据阈值为0.1k,那么一旦当前时刻的实时脏数据量大于或等于0.1k,就会触发回写速率刷新线程,即当实时脏数据量达到脏数据阈值时,开始向后端低速块设备回写脏数据;而若当前时刻的实时脏数据量小于0.1k,就不会触发回写速率刷新线程。
[0059]
当回写速率刷新线程被触发,就可基于ipd算法(其是结合比例、积分和微分三种环节于一体的控制算法)并通过获取到的实时脏数据量、脏数据阈值计算得到实时回写比率。其中,在运用pid算法计算实时回写比率之前,可根据实际需求对pid中的比例项系数k
p
、积分系数ki以及微分系数kd等超参数进行设置,比如,可以将k
p
优选设置为1/1000,ki优选设置为1/40,kd优选设置为1/50。
[0060]
进一步的,所述基于ipd算法、实时脏数据量、脏数据阈值计算出实时回写比率,包括:
[0061]
基于所述实时脏数据量和脏数据阈值计算得到第一脏数据差值;
[0062]
根据所述第一脏数据差值、历史脏数据差值、预设的比例项系数、预设的积分系数和预设的微分系数计算得到pid中的比例值、积分值和微分值;
[0063]
根据所述比例值、所述积分值和所述微分值计算得到实时回写比率。
[0064]
示范性的,在本实施例中,当达到回写速率刷新线程的触发条件时,将当前的实时脏数据量和脏数据阈值进行相减,即可得到对应的第一脏数据差值e(t);然后通过pid中对应预设的k
p
、ki以及kd对e(t)和历史脏数据差值进行pid计算,即可得到对应的比例值p、积分值i和微分值d;再将p、i和d进行相加就可得到实时回写比率ratio,即ratio=p+i+d。
[0065]
进一步的,所述根据所述第一脏数据差值、历史脏数据差值、预设的比例项系数、预设的积分系数和预设的微分系数计算得到pid中的比例值、积分值和微分值,包括:
[0066]
根据所述第一脏数据差值和预设的比例项系数计算得到pid中的比例值;
[0067]
基于第一脏数据差值和全部历史脏数据差值计算得到脏数据差值之和;
[0068]
根据所述脏数据差值之和以及预设的积分系数计算得到pid中的积分值;
[0069]
基于所述第一脏数据差值和上一次计算得到的历史脏数据差值计算得到脏数据差值之差;
[0070]
根据所述脏数据差值之差以及预设的微分系数计算得到pid中的微分值。
[0071]
进一步的,所述比例值的计算公式为:
[0072]
p=k
p
×
e(t)
[0073]
式中,p表示比例值,k
p
表示比例项系数,e(t)表示第一脏数据差值;
[0074]
所述积分值的计算公式为:
[0075]
i=ki×e[0076]
式中,i表示积分值,ki表示积分系数,e表示脏数据差值之和;所述微分值的计算公式为:
[0077]
d=kd×u[0078]
式中,d表示微分值,kd表示微分系数,u表示脏数据差值之差。
[0079]
示范性的,在本实施例中,将第一脏数据差值e(t)和预设的比例项系数k
p
代入第一计算公式,得到pid中的比例值p,第一计算公式为:
[0080]
p=k
p
×
e(t)
[0081]
将第一脏数据差值e(t)和全部历史脏数据差值代入第二计算公式,得到脏数据差值之和e,第二计算公式为:
[0082]
e=e(0)+e(1)+...+e(t)
[0083]
式中,e(0)表示第一次计算得到的历史脏数据差值,e(1)分别对应表示第二次计算得到的历史脏数据差值;
[0084]
将脏数据差值之和e以及预设的积分系数ki代入第三计算公式,得到pid中的积分值i,第三计算公式为:
[0085]
i=ki×e[0086]
然后将第一脏数据差值e(t)和上一次计算得到的历史脏数据差值e(t-1)代入第四计算公式,得到脏数据差值之差u,第四计算公式为:
[0087]
u=e(t)-e(t-1)
[0088]
再将脏数据差值之差u以及预设的微分系数kd代入第五计算公式,得到pid中的微分值d,第五计算公式为:
[0089]
d=kd×u[0090]
通过以上计算得到的p、i和d,即可计算得到实时回写比率ratio=p+i+d。
[0091]
步骤s20:基于指数移动加权平均算法、所述实时脏数据量、历史脏数据量和所述实时回写比率计算出刷新频率变化量;
[0092]
示范性的,在本实施例中,可以理解的是,通过指数移动加权平均算法对实时脏数据量、历史脏数据量和实时回写比率进行计算,可得到刷新频率变化量。其中,在通过指数移动加权平均算法来计算刷新频率变化量之前,可根据实际需求对权重系数和初始刷新频率等超参数进行设置,比如可以将预设的权重系数weight优选设置为6,初始刷新频率优选设置为5,通过该初始刷新频率可以计算得到首次调整后的回写比率。
[0093]
进一步的,所述基于指数移动加权平均算法、所述实时脏数据量、历史脏数据量和所述实时回写比率计算出刷新频率变化量,包括:
[0094]
基于所述实时脏数据量和上一次的历史脏数据量计算得到第二脏数据差值;
[0095]
基于预设的权重系数、所述第二脏数据差值以及上一次计算得到的历史第二脏数据差值计算得到移动差值;
[0096]
根据实时回写比率和预设的权重系数计算得到新的回写比率;
[0097]
根据所述新的回写比率和移动差值计算得到刷新频率变化量。
[0098]
进一步的,所述移动差值的计算公式为:
[0099][0100]
式中,der表示移动差值,weight表示权重系数,de表示第二脏数据差值,de
old
表示上一次计算得到的历史第二脏数据差值。
[0101]
示范性的,在本实施例中,将当前的实时脏数据量dirty和上一次的历史脏数据量dirty
old
代入第六计算公式,得到第二脏数据差值de,第六计算公式为:
[0102]
de=dirty-dirty
old
[0103]
将预设的权重系数weight、第二脏数据差值de以及上一次计算得到的历史第二脏
数据差值de
old
代入第七计算公式,得到移动差值der,第七计算公式为:
[0104][0105]
将实时回写比率ratio和预设的权重系数weight代入第八计算公式,得到新的回写比率ratio

,第八计算公式为:
[0106][0107]
最后将新的回写比率ratio

和移动差值der代入第九计算公式,得到刷新频率变化量var,第九计算公式为:
[0108]
var=der+ratio

[0109]
通过以上指数移动加权平均算法即可计算得到用于刷新回写速率的刷新频率变化量。
[0110]
步骤s30:根据所述刷新频率变化量对历史回写速率进行刷新,得到新的回写速率;
[0111]
示范性的,在本实施例中,将刷新频率变化量var对上一次计算得到的历史回写速率spe
old
代入第十计算公式,即可实现对历史回写速率的刷新,得到新的回写速率spe,第十计算公式为:
[0112]
spe=spe
old
+var
[0113]
该新的回写速率spe就是根据脏数据量的大小进行准确动态调整后得到,基于该新的回写速率进行脏数据的刷新,可有效确保脏数据刷新过程中的缓冲效果。
[0114]
步骤s40:基于所述新的回写速率进行脏数据的刷新。
[0115]
示范性的,在本实施例中,将bcache回写算法中的回写速率刷新为新的回写速率spe,即将前端高速块设备上的脏数据以新的回写速率spe刷新到后端低速块设备上,进而可降低回写速率刷新的随机性,以有效实现bcache中回写速率的刷新,从而确保回写的缓冲效果。
[0116]
参见图3所示,本技术实施例还提供了一种回写速率刷新装置,包括:
[0117]
第一计算单元,其用于当检测到当前的实时脏数据量达到脏数据阈值时,基于ipd算法、实时脏数据量、脏数据阈值计算出实时回写比率;
[0118]
第二计算单元,其用于基于指数移动加权平均算法、所述实时脏数据量、历史脏数据量和所述实时回写比率计算出刷新频率变化量;
[0119]
刷新单元,其用于根据所述刷新频率变化量对历史回写速率进行刷新,得到新的回写速率;基于所述新的回写速率进行脏数据的刷新。
[0120]
进一步的,所述第一计算单元具体用于:
[0121]
基于所述实时脏数据量和脏数据阈值计算得到第一脏数据差值;
[0122]
根据所述第一脏数据差值、历史脏数据差值、预设的比例项系数、预设的积分系数和预设的微分系数计算得到pid中的比例值、积分值和微分值;
[0123]
根据所述比例值、所述积分值和所述微分值计算得到实时回写比率。
[0124]
进一步的,所述第一计算单元具体还用于:
processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现场可编程逻辑门阵列(field programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件分立硬件组件等。通用处理器可以是微处理器,或者该处理器也可以是任何常规的处理器等,处理器是计算机装置的控制中心,利用各种接口和线路连接整个计算机装置的各个部分。
[0151]
存储器可用于存储计算机程序和/或模块,处理器通过运行或执行存储在存储器内的计算机程序和/或模块,以及调用存储在存储器内的数据,实现计算机装置的各种功能。存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如视频播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如视频数据、图像数据等)等。此外,存储器可以包括高速随存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘、智能存储卡(smart media card,smc)、安全数字(secure digital,sd)卡、闪存卡(flash card)、至少一个磁盘存储器件、闪存器件或其他易失性固态存储器件。
[0152]
本技术实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时,实现前述的回写速率刷新方法的全部步骤或部分步骤。
[0153]
本技术实施例实现前述的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法的步骤。其中,计算机程序包括计算机程序代码,计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。计算机可读介质可以包括:能够携带计算机程序代码的任何实体或装置、记录介质、u盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(read-only memory,rom)、随机存取存储器(random access memory,ram)、电载波信号、电信信号以及软件分发介质等。需要说明的是,计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
[0154]
本领域内的技术人员应明白,本技术的实施例可提供为方法、系统、服务器或计算机程序产品。因此,本技术可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本技术可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
[0155]
本技术是参照根据本技术实施例的方法、设备(系统)和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0156]
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括该
要素的过程、方法、物品或者系统中还存在另外的相同要素。
[0157]
以上所述仅是本技术的具体实施方式,使本领域技术人员能够理解或实现本技术。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本技术的精神或范围的情况下,在其它实施例中实现。因此,本技术将不会被限制于本文所示的这些实施例,而是要符合与本文所申请的原理和新颖特点相一致的最宽的范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1