一种多级缓存管理方法、装置、设备及可读存储介质



1.本技术涉及计算机存储技术领域,特别是涉及一种多级缓存管理方法、装置、设备及可读存储介质。


背景技术:



2.随着现代存储系统的规模不断扩大,中间件层越来越多地被用于缓存计算数据以备将来可能被重新访问。缓存在整个系统中所起到的作用是非常重要的。在实时系统中,数据在到达应用程序之前经过多个缓存层。事实上,这种由不同缓存中间层所构成的多级缓存在现代计算机系统中非常常见,例如在一个web应用中客户端缓存和服务端缓存可认为构成了一个简单的两级或多级缓存。
3.通常情况下,管理多级缓存要比单级缓存更加困难,其原因是:靠近应用侧的高层缓存通常情况下吸收了多数请求,导致剩余请求在底层缓存层的访问特性发生改变;在多级缓存中优化的目标不仅是某层缓存,而是整个多级缓存系统。因此在多级缓存中,如何保证层与层之间的相互协同尤为重要。但是,目前对于多级多级缓存管理,并无法有效保障层与层之间的相互协同。
4.综上所述,如何有效地解决多级多级缓存管理多层相互协同等问题,是目前本领域技术人员急需解决的技术问题。


技术实现要素:



5.本技术的目的是提供一种多级缓存管理方法、装置、设备及可读存储介质,以实现多级多级缓存管理多层相互协同,提升多级缓存系统整体命中率。
6.为解决上述技术问题,本技术提供如下技术方案:
7.一种多级缓存管理方法,包括:
8.每次命中多级缓存中底层缓存层的i/o请求数据后,利用命中信息动态更新对应上层缓存层的概率值;
9.在需要驱逐所述上层缓存层中的一个目标i/o请求数据时,生成随机数;
10.若所述随机数小于所述概率值,则利用lru算法选出所述目标i/o请求数据;
11.若所述随机数大于等于所述概率值,则利用lfu算法选出所述目标i/o请求数据;
12.驱逐所述目标i/o请求数据。
13.优选地,所述利用命中信息动态更新对应上层缓存层的概率值,包括:
14.利用所述命中信息,读取所述i/o请求数据对应的历史访问信息;
15.利用所述历史访问信息确定所述i/o请求数据被所述上层缓存层驱逐时,对应采用的驱逐算法;
16.若所述驱逐算法为所述lru算法,则利用公式减少所述概率值;
17.若所述驱逐算法为所述lfu算法,则利用增大所述概率值;
18.其中,p为所述概率值,p'为新概率值,λ和d分别对应于所述上层缓存层相对于所述概率值的学习率和折扣率,t为所述i/o请求数据的在所述底层缓存层命中的逻辑时间,evict_time为所述i/o请求数据被所述上层缓存驱逐的逻辑时间。
19.优选地,所述利用命中信息动态更新对应上层缓存层的概率值,包括:
20.若所述上层缓存层为顶层缓存层,则利用所述命中信息,动态更新所述顶层缓存层对应的所述概率值;
21.若所述上层缓存层为中间层缓存层,则所述命中信息,动态更新所述顶层缓存层对应的所述概率值。
22.优选地,驱逐所述目标i/o请求数据,包括:
23.将所述目标i/o请求数据驱逐至所述底层缓存层中与所述上层缓存层对应区域;其中,所述底层缓存层中对应不同的所述上层缓存层设置不同区域。
24.优选地,缓存新i/o请求数据,包括:
25.将所述新i/o请求数据存入所述多级缓存中的中间缓存层;
26.获取指定时长内,所述新i/o请求数据的访问频率;
27.利用所述访问频率,将所述新i/o请求数据迁移至顶层缓存层。
28.优选地,利用所述访问频率,将所述新i/o请求数据迁移至顶层缓存层,包括:
29.判断所述访问频率是否大于动态更新的频率阈值;
30.如果是,则将所述新i/o请求数据迁移至所述顶层缓存层。
31.优选地,动态更新所述频率阈值,包括:
32.为各个所述上层缓存层分别对应建立一个先进先出队列;其中,所述先进先出队列所能容纳的记录数对应相应记录的缓存层所能够缓存下的最大i/o请求数据;
33.在各个所述先进先出队列中,记录被驱逐的所述i/o请求数据对应的访问频率;
34.在每次驱逐出一个所述i/o请求数据时,重新计算对应的所述先进先出队列内所有访问频率的平均值,并与所述频率阈值的大小进行对比;
35.根据比对结果,对所述频率阈值进行调整。
36.一种多级缓存管理装置,包括:
37.概率值更新模块,用于每次命中多级缓存中底层缓存层的i/o请求数据后,利用命中信息动态更新对应上层缓存层的概率值;
38.随机数生成模块,用于在需要驱逐所述上层缓存层中的一个目标i/o请求数据时,生成随机数;
39.驱逐确认模块,用于若所述随机数小于所述概率值,则利用lru算法选出所述目标i/o请求数据;若所述随机数大于等于所述概率值,则利用lfu算法选出所述目标i/o请求数据;
40.驱逐模块,用于驱逐所述目标i/o请求数据。
41.一种电子设备,包括:
42.存储器,用于存储计算机程序;
43.处理器,用于执行所述计算机程序时实现上述多级缓存管理方法的步骤。
44.一种可读存储介质,所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述多级缓存管理方法的步骤。
45.应用本技术实施例所提供的方法,每次命中多级缓存中底层缓存层的i/o请求数据后,利用命中信息动态更新对应上层缓存层的概率值;在需要驱逐上层缓存层中的一个目标i/o请求数据时,生成随机数;若随机数小于概率值,则利用lru算法选出目标i/o请求数据;若随机数大于等于概率值,则利用lfu算法选出目标i/o请求数据;驱逐目标i/o请求数据。
46.在本技术中,当顶层缓存的i/o请求数据被命中之后,都会利用命中信息动态更新对应的上层缓存层的概率值,该概率值确定该生成缓存层驱逐数据所用的驱逐算法具体为哪个。具体的,当上层缓存层需要驱逐其缓存的一个目标i/o请求数据时,首先生成一个随机数,若该随机数小于动态更新的概率值,则直接利用lru算法选出目标i/o请求数据;若该随机数不小于动态更新的概率值,则利用lfu算法来选出目标i/o请求数据。在选出了目标i/o请求数据之后,将其驱逐。由此可见,在本技术中,对于上层缓存层驱逐目标i/o请求数据,其并非固定采用lfu算法或lru算法,而是结合一个随机数,以及底层缓存层的命中情况动态更新的概率值,从而动态选择采用lfu算法或lru算法。在面对复杂场景下的i/o请求,能够较为灵活地匹配不同的访问模式,从而自适应对当前的i/o请求数据进行合理调度和替换。即,本技术可以将底层缓存层与上次缓存层动态结合起来进行管理,从而实现多层缓存层的相互协同,最终有效提升缓存命中率。
47.相应地,本技术实施例还提供了与上述多级缓存管理方法相对应的多级缓存管理装置、设备和可读存储介质,具有上述技术效果,在此不再赘述。
附图说明
48.为了更清楚地说明本技术实施例或相关技术中的技术方案,下面将对实施例或相关技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
49.图1为本技术实施例中一种多级缓存管理方法的实施流程图;
50.图2为本技术实施例中一种多级缓存管理方法的实施示意图;
51.图3为本技术实施例中一种多级缓存管理方法的具体实施流程图
52.图4为本技术实施例中一种多级缓存管理装置的结构示意图;
53.图5为本技术实施例中一种电子设备的结构示意图;
54.图6为本技术实施例中一种电子设备的具体结构示意图。
具体实施方式
55.为了使本技术领域的人员更好地理解本技术方案,下面结合附图和具体实施方式对本技术作进一步的详细说明。显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
56.请参考图1,图1为本技术实施例中一种多级缓存管理方法的流程图,该方法包括
以下步骤:
57.s101、每次命中多级缓存中底层缓存层的i/o请求数据后,利用命中信息动态更新对应上层缓存层的概率值。
58.其中,上层缓存层即多级缓存中的非底层缓存层。例如,对于三级缓存而言,上层缓存层即对应顶层缓存层和中间缓存层。
59.在本技术中,针对多级缓存中的每一个上层缓存层可以分别设置一个概率值,即一个非底层缓存层对应一个概率值p。例如,对于多级缓存而言,可以为顶层缓存层设置一个概率值p1,为中间缓存层设置一个概率值p2。
60.当多级缓存中的底层缓存层被命中,则利用命中信息来动态更新对应上层缓存层的概率值。其中,命中信息可包括当前被命中的i/o请求数据具体与哪个上层缓存层对应,该i/o请求数据的历史访问信息等。其中,底层缓存层的每个区域按照上层缓存的分配特点进行分开管理,每个缓存队列均采用lru算法进行驱逐处理。
61.其中,i/o请求数据可以为i/o请求所请求的数据,如详细的逻辑地址和访问大小。当然,该i/o请求数据还可以为其他能够快速应答i/o请求的数据,如图片、视频或文本等具体数据内容。
62.在本技术中的一种具体实施方式中,利用命中信息动态更新对应上层缓存层的概率值,包括:
63.步骤一、利用命中信息,读取i/o请求数据对应的历史访问信息;
64.步骤二、利用历史访问信息确定i/o请求数据被上层缓存层驱逐时,对应采用的驱逐算法;
65.步骤三、若驱逐算法为lru算法,则利用公式减少概率值;
66.步骤四、若驱逐算法为lfu算法,则利用增大概率值;
67.其中,p为概率值,p'为新概率值,λ和d分别对应于上层缓存层相对于概率值的学习率和折扣率,t为i/o请求数据的在底层缓存层命中的逻辑时间,evict_time为i/o请求数据被上层缓存驱逐的逻辑时间。
68.为便于描述,下面将上述四个步骤结合起来进行说明。
69.需要注意的是,在本实施例中逻辑时间,并非一般意义上的几秒钟,而是按照i/o请求数来确定。例如当前缓存接收了6个i/o请求,那么逻辑时间就是6。
70.每当新的i/o请求在最底层缓存造成命中时,则需要更新对应上层缓存层的概率值,具体而言是更新i/o请求的历史访问信息中被驱逐的缓存层对应的概率值;如果对应命中的i/o请求所记录的历史访问信息中关于被驱逐时所使用的i/o请求中的其中一个访问特征为最近一次的访问时间,即驱逐算法为lru算法,则减小概率值,公式为:其中λ和d分别对应于每层缓存层相对于概率值的学习率和折扣率,t代表当前i/o请求的命中时间,evict_time代表当前i/o请求被上层缓存驱逐的具体时间。
71.进一步,为了保证概率值的大小取值在[0,1],还可对上述值进行归一化操作,具
体公式为:需要注意的是,此公式中的p对应调整后的概率值。
[0072]
如果对应命中的i/o请求所记录的历史访问信息中关于被驱逐时所使用的i/o请求中的其中一个访问特征为访问频率,即驱逐算法为lfu算法,则增大概率值,公式为:进一步地,为了保证概率值的大小取值在[0,1],还需要对上述值进行归一化操作,具体公式为:对上述值进行归一化操作,具体公式为:需要注意的是,此公式中的p对应调整后的概率值。
[0073]
在本技术中的一种具体实施方式中,利用命中信息动态更新对应上层缓存层的概率值,包括:
[0074]
情况一、若上层缓存层为顶层缓存层,则命中信息,动态更新顶层缓存层对应的概率值;
[0075]
情况二、若上层缓存层为中间层缓存层,则命中信息,动态更新顶层缓存层对应的概率值。
[0076]
请参考图2,图2为本技术实施例中一种多级缓存管理方法的实施示意图。
[0077]
若上层缓存层具体为顶层缓存层,则针对顶层缓存层的p1值进行动态更新,若上层缓存层具体为中间缓存层,则针对中间缓存层的p2值进行动态更新。即,对应不同的上层缓存层,该命中信息可能存在区别,如被驱逐时不同上层缓存层对应采用的驱逐算法可能存在区别。
[0078]
除底层缓存层以外,上层缓存层中的每一层均会保持一个概率值p∈[0,1],该值的主要作用是在缓存需要剔除一个i/o请求时,根据p值的大小来决定需要根据i/o请求的其中一个访问特征进行替换;i/o请求的访问特征主要包括最近一次的访问时间和访问频率,其中,根据不同的驱逐算法,访问时间越早或者访问频率越小的i/o请求会被优先选中驱逐出缓存。
[0079]
s102、在需要驱逐上层缓存层中的一个目标i/o请求数据时,生成随机数。
[0080]
具体的,当缓存内已有的i/o请求数量达到缓存容量时,此时又新进入一个i/o请求数据到该上层缓存层,此时即确认需要驱逐上层缓存层中的一个目标i/o请求数据。这里的目标i/o请求数据即为需求驱逐出该上层缓存层的一个i/o请求数据。
[0081]
具体的,可以采用随机数在[0,1]内,生成一个随机数r。
[0082]
s103、若随机数小于概率值,则利用lru算法选出目标i/o请求数据。
[0083]
如果r∈[0,p),则选择最近一次访问时间最早的i/o请求驱逐出缓存。即,采用lru算法选出目标i/o请求数据。
[0084]
s104、若随机数大于等于概率值,则利用lfu算法选出目标i/o请求数据。
[0085]
如果r∈[p,1],否则选择访问频率最小的i/o请求驱逐出缓存。即,采用lfu算法选出目标i/o请求数据。
[0086]
s105、驱逐目标i/o请求数据。
[0087]
确定出目标i/o请求数据之后,便可将目标i/o请求数据驱逐出当前的上层缓存层中。
[0088]
具体的,为了便于统计,在驱逐时,可将目标i/o请求数据直接驱逐至底层缓存层。
[0089]
在本技术中的一种具体实施方式中,驱逐目标i/o请求数据,包括:将目标i/o请求数据驱逐至底层缓存层中与上层缓存层对应区域;其中,底层缓存层中对应不同的上层缓存层设置不同区域。
[0090]
具体的,由于最底层缓存由于其具有较大的缓存容量,因此可根据上层缓存层的容量和层数来分配底层的缓存空间作为上层缓存的驱逐缓存;驱逐缓存的作用是上层缓存被驱逐出的i/o请求将被放入底层缓存的对应区域,并记录被上层缓存驱逐的具体时间,相应的缓存层和被驱逐时所使用的i/o请求中的其中一个访问特征,即标明被驱逐时,是因哪个具体驱逐算法而被驱逐。
[0091]
在底层缓存层可进行虚拟划分,将其对应不同的缓存层进行划分,不同的区域接收来自不同上层缓存层驱逐的i/o请求数据,在同一个上层缓存层对应的底层缓存区域中,还可以再进行细分,将其细分为lru区域和lfu区域,从而根据不同的驱逐算法来确定具体的存放位置。如此,在底层缓存层中的i/o请求数据被命中的情况下,该命中信息可以具体为指明该i/o请求数据是属于哪个具体的区域,则可明确其对应的上层缓存层以及驱逐算法是什么。
[0092]
举例说明,若被命中的i/o请求数据为底层缓存层中,对应顶层缓存层的lru区域,则基于其命中信息,即可明确,该i/o请求数据对应的上层缓存层为顶层缓存层,且其被驱逐时的驱逐算法为lru算法。
[0093]
应用本技术实施例所提供的方法,每次命中多级缓存中底层缓存层的i/o请求数据后,利用命中信息动态更新对应上层缓存层的概率值;在需要驱逐上层缓存层中的一个目标i/o请求数据时,生成随机数;若随机数小于概率值,则利用lru算法选出目标i/o请求数据;若随机数大于等于概率值,则利用lfu算法选出目标i/o请求数据;驱逐目标i/o请求数据。
[0094]
在本技术中,当顶层缓存的i/o请求数据被命中之后,都会利用命中信息动态更新对应的上层缓存层的概率值,该概率值确定该生成缓存层驱逐数据所用的驱逐算法具体为哪个。具体的,当上层缓存层需要驱逐其缓存的一个目标i/o请求数据时,首先生成一个随机数,若该随机数小于动态更新的概率值,则直接利用lru算法选出目标i/o请求数据;若该随机数不小于动态更新的概率值,则利用lfu算法来选出目标i/o请求数据。在选出了目标i/o请求数据之后,将其驱逐。由此可见,在本技术中,对于上层缓存层驱逐目标i/o请求数据,其并非固定采用lfu算法或lru算法,而是结合一个随机数,以及底层缓存层的命中情况动态更新的概率值,从而动态选择采用lfu算法或lru算法。在面对复杂场景下的i/o请求,能够较为灵活地匹配不同的访问模式,从而自适应对当前的i/o请求数据进行合理调度和替换。即,本技术可以将底层缓存层与上次缓存层动态结合起来进行管理,从而实现多层缓存层的相互协同,最终有效提升缓存命中率。
[0095]
需要说明的是,基于上述实施例,本技术实施例还提供了相应的改进方案。在优选/改进实施例中涉及与上述实施例中相同步骤或相应步骤之间可相互参考,相应的有益效果也可相互参照,在本文的优选/改进实施例中不再一一赘述。
[0096]
在本技术中的一种具体实施方式中,缓存新i/o请求数据,包括:
[0097]
步骤一、将新i/o请求数据存入多级缓存中的中间缓存层;
[0098]
步骤二、获取指定时长内,新i/o请求数据的访问频率;
[0099]
步骤三、利用访问频率,将新i/o请求数据迁移至顶层缓存层。
[0100]
为便于描述下面将上述三个步骤结合起来进行说明。
[0101]
如图2所示,当有新的i/o请求数据,直接存入到多级缓存中的中间缓存。然后,再在一段时间后根据i/o请求数据在中间缓存层的访问情况,选择是否提升至顶层缓存层;除底层缓存层外其他缓存层根据i/o请求在不同访问特征上的表现进行替换,并结合底层缓存的容量优势对i/o请求的历史访问信息进行保留;i/o请求数据的访问情况主要是i/o请求数据在一段时间内对中间缓存层的访问频率;i/o请求数据的访问特征主要是访问局部性和频率,局部性通过i/o请求数据的最近一次的访问时间来体现;i/o请求数据的历史访问信息主要记录i/o请求被驱逐的层位置和时间。
[0102]
在本技术中的一种具体实施方式中,上述步骤三利用访问频率,将新i/o请求数据迁移至对应的缓存层,包括:
[0103]
步骤1、判断访问频率是否大于动态更新的频率阈值;
[0104]
步骤2、如果是,则将新i/o请求数据迁移至顶层缓存层;
[0105]
步骤3、如果否,则将新i/o请求数据继续保留在中间缓存层。
[0106]
当访问频率大于频率阈值,则表明该新i/o请求数据属于高频访问数据,此时可将其迁移至顶层缓存层,从而提高命中率;当访问频率不大于频率阈值,则表明该新i/o请求数据并非高频访问数据,此时对该新i/o请求数据进行保留。
[0107]
举例说明:每个新i/o请求数据,都会在中间缓存层记录在缓存内的访问频率,每次相同的新i/o请求数据在中间缓存命中层时,访问频率即增加;在每次访问频率增加时,可对比设定的频率阈值。如果当前的访问频率超出所设定的频率阈值时,该新i/o请求数据会被提升至更上一级的缓存,从而发挥出上层缓存的性能优势。如果该i/o请求数据的访问频率始终未达到该阈值,最终会被驱逐至下层缓存层,如底层缓存层。
[0108]
在本技术中的一种具体实施方式,动态更新频率阈值,包括:
[0109]
步骤1、为各个上层缓存层分别对应建立一个先进先出队列;其中,先进先出队列所能容纳的记录数对应相应记录的缓存层所能够缓存下的最大i/o请求数据;
[0110]
步骤2、在各个先进先出队列中,记录被驱逐的i/o请求数据对应的访问频率;
[0111]
步骤3、在每次驱逐出一个i/o请求数据时,重新计算对应的先进先出队列内所有访问频率的平均值,并与频率阈值的大小进行对比;
[0112]
步骤4、根据比对结果,对频率阈值进行调整。
[0113]
为便于描述,下面将上述4个步骤结合起来进行说明。
[0114]
为上层缓存层中的每层缓存建立一个先进先出队列,每当相应的缓存层驱逐一个i/o请求数据时,将该i/o请求数据在该层的访问频率放入对应的先进先出队列中;该队列所能容纳的记录数是相应记录的缓存层所能够缓存下的最大i/o请求数。
[0115]
每次发生缓存替换需要驱逐出一个i/o请求数据时,可重新计算该队列内所有访问频率的平均值,并与频率阈值的大小进行对比。以三层缓存系统为例,对于中间层缓存如果相应队列的平均值大小与频率阈值θf的关系满足的关系满足则意味着上层缓存层没有发挥出性能层的优势,导致大部分的i/o请求在中间层被直接驱逐出缓存,此时应该减小θf的大小;相对应的上层层缓存如果相应队列的平均值大小与频率阈值
θf的关系满足的关系满足则意味着中间缓存层没有发挥出为上层缓存的过滤作用,大部分的i/o请求在中间层被很快提升至上层缓存,但在上层缓存却并未造成更多的缓存命中,导致出现缓存污染现象,此时应该增大θf的大小。
[0116]
进一步地,为了保证频率阈值的变化稳定在一个合适的访问,每当θf增大或者减小到一定值时将不会继续变化,并且每次增加或者减少时的步长为1,从而实现频率阈值的平缓变化。
[0117]
为便于本领域技术人员更好的理解本技术实施例所提供的多级缓存管理方法,下面结合具体的应用场景为例,对该多级缓存管理方法进行详细说明。
[0118]
具体的,请参考图3,当有新的i/o请求,i/o请求可能访问到顶层缓存,中间层缓存或底层缓存中的任一层缓存。当访问到顶层缓存直接正常处理即可;当访问底层缓存,则将对应的i/o请求数据提升至对应缓存层,并更新对应的上层缓存层的概率值;当访问到中间层缓存,则进行访问频率比对,确定该i/o请求数据是否提升至更高的缓存层,以及是否保留,然后更新频率阈值,最终访问结束。
[0119]
由此可见,应用本技术实施例所提供的多级缓存管理方法,可以将多个缓存层协调管理,从而应对更未复杂的i/o场景。
[0120]
相应于上面的方法实施例,本技术实施例还提供了一种多级缓存管理装置,下文描述的多级缓存管理装置与上文描述的多级缓存管理方法可相互对应参照。
[0121]
参见图4所示,该装置包括以下模块:
[0122]
概率值更新模块101,用于每次命中多级缓存中底层缓存层的i/o请求数据后,利用命中信息动态更新对应上层缓存层的概率值;
[0123]
随机数生成模块102,用于在需要驱逐上层缓存层中的一个目标i/o请求数据时,生成随机数;
[0124]
驱逐确认模块103,用于若随机数小于概率值,则利用lru算法选出目标i/o请求数据;若随机数大于等于概率值,则利用lfu算法选出目标i/o请求数据;
[0125]
驱逐模块104,用于驱逐目标i/o请求数据。
[0126]
应用本技术实施例所提供的装置,每次命中多级缓存中底层缓存层的i/o请求数据后,利用命中信息动态更新对应上层缓存层的概率值;在需要驱逐上层缓存层中的一个目标i/o请求数据时,生成随机数;若随机数小于概率值,则利用lru算法选出目标i/o请求数据;若随机数大于等于概率值,则利用lfu算法选出目标i/o请求数据;驱逐目标i/o请求数据。
[0127]
在本技术中,当顶层缓存的i/o请求数据被命中之后,都会利用命中信息动态更新对应的上层缓存层的概率值,该概率值确定该生成缓存层驱逐数据所用的驱逐算法具体为哪个。具体的,当上层缓存层需要驱逐其缓存的一个目标i/o请求数据时,首先生成一个随机数,若该随机数小于动态更新的概率值,则直接利用lru算法选出目标i/o请求数据;若该随机数不小于动态更新的概率值,则利用lfu算法来选出目标i/o请求数据。在选出了目标i/o请求数据之后,将其驱逐。由此可见,在本技术中,对于上层缓存层驱逐目标i/o请求数据,其并非固定采用lfu算法或lru算法,而是结合一个随机数,以及底层缓存层的命中情况动态更新的概率值,从而动态选择采用lfu算法或lru算法。在面对复杂场景下的i/o请求,能够较为灵活地匹配不同的访问模式,从而自适应对当前的i/o请求数据进行合理调度和
替换。即,本技术可以将底层缓存层与上次缓存层动态结合起来进行管理,从而实现多层缓存层的相互协同,最终有效提升缓存命中率。
[0128]
在本技术的一种具体实施方式中,概率值更新模块,具体用于利用命中信息,读取i/o请求数据对应的历史访问信息;
[0129]
利用历史访问信息确定i/o请求数据被上层缓存层驱逐时,对应采用的驱逐算法;
[0130]
若驱逐算法为lru算法,则利用公式减少概率值;
[0131]
若驱逐算法为lfu算法,则利用增大概率值;
[0132]
其中,p为概率值,p'为新概率值,λ和d分别对应于上层缓存层相对于概率值的学习率和折扣率,t为i/o请求数据的在底层缓存层命中的逻辑时间,evict_time为i/o请求数据被上层缓存驱逐的逻辑时间。
[0133]
在本技术的一种具体实施方式中,概率值更新模块,具体用于若上层缓存层为顶层缓存层,则利用命中信息,动态更新顶层缓存层对应的概率值;
[0134]
若上层缓存层为中间层缓存层,则利用命中信息,动态更新顶层缓存层对应的概率值。
[0135]
在本技术的一种具体实施方式中,驱逐模块,具体用于将目标i/o请求数据驱逐至底层缓存层中与上层缓存层对应区域;其中,底层缓存层中对应不同的上层缓存层设置不同区域。
[0136]
在本技术的一种具体实施方式中,新数据缓冲模块,用于缓存新i/o请求数据,具体包括:将新i/o请求数据存入多级缓存中的中间缓存层;
[0137]
获取指定时长内,新i/o请求数据的访问频率;
[0138]
利用访问频率,将新i/o请求数据迁移至对应的缓存层。
[0139]
在本技术的一种具体实施方式中,新数据缓冲模块,具体用于判断访问频率是否大于动态更新的频率阈值;
[0140]
如果是,则将新i/o请求数据迁移至顶层缓存层。
[0141]
在本技术的一种具体实施方式中,新数据缓冲模块,具体用于为各个上层缓存层分别对应建立一个先进先出队列;其中,先进先出队列所能容纳的记录数对应相应记录的缓存层所能够缓存下的最大i/o请求数据;
[0142]
在各个先进先出队列中,记录被驱逐的i/o请求数据对应的访问频率;
[0143]
在每次驱逐出一个i/o请求数据时,重新计算对应的先进先出队列内所有访问频率的平均值,并与频率阈值的大小进行对比;
[0144]
根据比对结果,对频率阈值进行调整。
[0145]
相应于上面的方法实施例,本技术实施例还提供了一种电子设备,下文描述的一种电子设备与上文描述的一种多级缓存管理方法可相互对应参照。
[0146]
参见图5所示,该电子设备包括:
[0147]
存储器332,用于存储计算机程序;
[0148]
处理器322,用于执行计算机程序时实现上述方法实施例的多级缓存管理方法的步骤。
[0149]
具体的,请参考图6,图6为本实施例提供的一种电子设备的具体结构示意图,该电
子设备可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(central processing units,cpu)322(例如,一个或一个以上处理器)和存储器332,存储器332存储有一个或一个以上的计算机应用程序342或数据344。其中,存储器332可以是短暂存储或持久存储。存储在存储器332的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对数据处理设备中的一系列指令操作。更进一步地,中央处理器322可以设置为与存储器332通信,在电子设备301上执行存储器332中的一系列指令操作。
[0150]
电子设备301还可以包括一个或一个以上电源326,一个或一个以上有线或无线网络接口350,一个或一个以上输入输出接口358,和/或,一个或一个以上操作系统341。
[0151]
上文所描述的多级缓存管理方法中的步骤可以由电子设备的结构实现。
[0152]
相应于上面的方法实施例,本技术实施例还提供了一种可读存储介质,下文描述的一种可读存储介质与上文描述的一种多级缓存管理方法可相互对应参照。
[0153]
一种可读存储介质,可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现上述方法实施例的多级缓存管理方法的步骤。
[0154]
该可读存储介质具体可以为u盘、移动硬盘、只读存储器(read-only memory,rom)、随机存取存储器(random access memory,ram)、磁碟或者光盘等各种可存储程序代码的可读存储介质。
[0155]
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
[0156]
本领域技术人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件的方式来执行,取决于技术方案的特定应用和设计约束条件。本领域技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应该认为超出本技术的范围。
[0157]
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或技术领域内所公知的任意其它形式的存储介质中。
[0158]
最后,还需要说明的是,在本文中,术语包括、包含或者其他任何变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。
[0159]
本文中应用了具体个例对本技术的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本技术的方法及其核心思想;同时,对于本领域的一般技术人员,依据本技术的思想,在具体实施方式及应用范围上均会有改变之处,综上,本说明书内容不应理解为对本技术的限制。

技术特征:


1.一种多级缓存管理方法,其特征在于,包括:每次命中多级缓存中底层缓存层的i/o请求数据后,利用命中信息动态更新对应上层缓存层的概率值;在需要驱逐所述上层缓存层中的一个目标i/o请求数据时,生成随机数;若所述随机数小于所述概率值,则利用lru算法选出所述目标i/o请求数据;若所述随机数大于等于所述概率值,则利用lfu算法选出所述目标i/o请求数据;驱逐所述目标i/o请求数据。2.根据权利要求1所述的多级缓存管理方法,其特征在于,所述利用命中信息动态更新对应上层缓存层的概率值,包括:利用所述命中信息,读取所述i/o请求数据对应的历史访问信息;利用所述历史访问信息确定所述i/o请求数据被所述上层缓存层驱逐时,对应采用的驱逐算法;若所述驱逐算法为所述lru算法,则利用公式若所述驱逐算法为所述lru算法,则利用公式减少所述概率值;若所述驱逐算法为所述lfu算法,则利用若所述驱逐算法为所述lfu算法,则利用增大所述概率值;其中,p为所述概率值,p'为新概率值,λ和d分别对应于所述上层缓存层相对于所述概率值的学习率和折扣率,t为所述i/o请求数据的在所述底层缓存层命中的逻辑时间,evict_time为所述i/o请求数据被所述上层缓存驱逐的逻辑时间。3.根据权利要求1所述的多级缓存管理方法,其特征在于,所述利用命中信息动态更新对应上层缓存层的概率值,包括:若所述上层缓存层为顶层缓存层,则利用所述命中信息,动态更新所述顶层缓存层对应的所述概率值;若所述上层缓存层为中间层缓存层,则所述命中信息,动态更新所述顶层缓存层对应的所述概率值。4.根据权利要求1所述的多级缓存管理方法,其特征在于,驱逐所述目标i/o请求数据,包括:将所述目标i/o请求数据驱逐至所述底层缓存层中与所述上层缓存层对应区域;其中,所述底层缓存层中对应不同的所述上层缓存层设置不同区域。5.根据权利要求1所述的多级缓存管理方法,其特征在于,缓存新i/o请求数据,包括:将所述新i/o请求数据存入所述多级缓存中的中间缓存层;获取指定时长内,所述新i/o请求数据的访问频率;利用所述访问频率,将所述新i/o请求数据迁移至顶层缓存层。6.根据权利要求5所述的多级缓存管理方法,其特征在于,利用所述访问频率,将所述新i/o请求数据迁移至所述顶层缓存层,包括:判断所述访问频率是否大于动态更新的频率阈值;如果是,则将所述新i/o请求数据迁移至所述顶层缓存层。7.根据权利要求6所述的多级缓存管理方法,其特征在于,动态更新所述频率阈值,包
括:为各个所述上层缓存层分别对应建立一个先进先出队列;其中,所述先进先出队列所能容纳的记录数对应相应记录的缓存层所能够缓存下的最大i/o请求数据;在各个所述先进先出队列中,记录被驱逐的所述i/o请求数据对应的访问频率;在每次驱逐出一个所述i/o请求数据时,重新计算对应的所述先进先出队列内所有访问频率的平均值,并与所述频率阈值的大小进行对比;根据比对结果,对所述频率阈值进行调整。8.一种多级缓存管理装置,其特征在于,包括:概率值更新模块,用于每次命中多级缓存中底层缓存层的i/o请求数据后,利用命中信息动态更新对应上层缓存层的概率值;随机数生成模块,用于在需要驱逐所述上层缓存层中的一个目标i/o请求数据时,生成随机数;驱逐确认模块,用于若所述随机数小于所述概率值,则利用lru算法选出所述目标i/o请求数据;若所述随机数大于等于所述概率值,则利用lfu算法选出所述目标i/o请求数据;驱逐模块,用于驱逐所述目标i/o请求数据。9.一种电子设备,其特征在于,包括:存储器,用于存储计算机程序;处理器,用于执行所述计算机程序时实现如权利要求1至7任一项所述多级缓存管理方法的步骤。10.一种可读存储介质,其特征在于,所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述多级缓存管理方法的步骤。

技术总结


本申请公开了一种多级缓存管理方法、装置、设备及可读存储介质,该方法包括:每次命中多级缓存中底层缓存层的I/O请求数据后,利用命中信息动态更新对应上层缓存层的概率值;在需要驱逐上层缓存层中的一个目标I/O请求数据时,生成随机数;若随机数小于概率值,则利用LRU算法选出目标I/O请求数据;若随机数大于等于概率值,则利用LFU算法选出目标I/O请求数据;驱逐目标I/O请求数据。本申请面对复杂场景下的I/O请求,能够较为灵活地匹配不同的访问模式,从而自适应对当前的I/O请求数据进行合理调度和替换。即,本申请可以将底层缓存层与上次缓存层动态结合起来进行管理,从而实现多层缓存层的相互协同,最终有效提升缓存命中率。率。率。


技术研发人员:

张凯 王芳 施展 苏楠 冯丹 周洋 李强 王见

受保护的技术使用者:

华中科技大学

技术研发日:

2022.10.10

技术公布日:

2022/12/23

本文发布于:2024-09-26 00:29:54,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/3/47685.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:缓存   所述   数据   概率
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议