当前位置: 首页 > 专利查询>暨南大学专利>正文

一种自适应分类重用距离来捕捉热数据的缓存方法技术

技术编号:19903316 阅读:22 留言:0更新日期:2018-12-26 02:52
本发明专利技术公开了一种自适应分类重用距离来捕捉热数据的缓存方法,针对计算机存储领域的缓存策略问题。由于传统的缓存策略方案大多仅考虑数据所反映的新进度(Recency)或频率这两个特性,无法更深层次地捕捉到数据访问所反映的模式特征,加之算法本身不具备有针对捕捉到的数据特征变化而做出自适应调节的能力,因此可能导致了策略的数据命中率和稳定性不高的现象。针对这一问题,本缓存方法通过利用数据的重用距离特征和缓存替换的元数据历史信息来深度挖掘数据访问模式的特征,并以一种自适应的方式处理这种热数据识别和缓存时间分配的过程,从而达到提升算法命中率的目的。

【技术实现步骤摘要】
一种自适应分类重用距离来捕捉热数据的缓存方法
本专利技术涉及存储系统
,具体涉及一种自适应分类重用距离(Reuse-distance)来捕捉热数据的缓存方法。
技术介绍
缓存技术不仅仅局限于高速缓存,自现代计算机系统提出存储器层次结构以后,CPU寄存器集合、高速缓存、主存、SSD和HDD存储设备,甚至分布式文件系统等远程二级存储设备,都可以理解为是作为下一层的更大更慢的存储设备的缓存而存在,因此凡是存储设备自身都存在着缓存问题。而缓存替换算法作为缓存技术研究的核心部分,它的研究与计算机存储系统、操作系统、文件系统、数据库、web服务器、甚至包括各种其它应用技术如冷热数据识别和数据压缩等问题的研究有着直接相关的联系。传统的缓存替换算法的设计原理主要是利用了高速缓存的局部性原理(即是程序具有访问局部区域里的数据和代码的趋势)和数据访问的频率。然而仅仅利用数据所反映的新进度或频率这两个特性来设计的算法,如LRU、LFU、2Q和MQ算法等,虽然具有简单易实现、应用广泛等特点,但是首先仅仅考虑新进度或频率这两个指标无法全面反映数据访问的模式特征;其次数据访问的模式是动态的,因此算法不具备有针对捕捉到的数据特征变化而做出自适应调节的能力;最后上述所提出的针对这两个特性的算法改进方法已经趋向于成熟(LRU算法在80年代初开始已经被广泛使用),因此很难有比较大的突破。因此现在比较优秀的缓存替换算法如LIRS、ARC和CAR算法等,如LIRS算法会通过利用数据的重用距离特征来预测数据未来的访问顺序;ARC算法则具备有自适应性,算法能根据数据访问模式的变化对算法做自身的调整等。然而尽管这些优秀的算法存在诸多的优点,但是也会存在有例如不能捕捉大于缓存的热数据和缓存污染等问题。因此针对目前的大规模I/O数据流环境,在降低存储系统内存开销和计算开销的条件下,如何改变传统缓存技术的所产生的数据命中率不高问题,设计一种新颖的有效识别热数据的缓存方案来提高计算机存储性能则显得尤为重要。
技术实现思路
本专利技术的目的是为了解决现有技术中的上述缺陷,提供一种自适应分类重用距离来捕捉热数据的缓存方法。本专利技术的目的可以通过采取如下技术方案达到:一种自适应分类重用距离来捕捉热数据的缓存方法,所述的缓存方法包括缓存区域划分、负载数据流数据类型识别及不同类型数据的缓存分配,其中:所述的缓存区域划分具体如下:(a)整个缓存具有实际缓存栈(RealCache)和幽灵缓存栈(GhostCache)两种类型的缓存栈,实际缓存栈存储真实数据和元数据,幽灵缓存栈则仅仅存储元数据,并且实际缓存栈的数据结构为LRU(Leastrecentlyused)栈结构,而幽灵缓存栈则是先进先出的队列结构;(b)整个缓存依据新进度(Recency)、频率和重用距离特征,分为三个区域:潜在热数据区域R、短重用距离热数据区域S、长重用距离热数据区域L;(c)潜在热数据区域R存储最近访问一次的数据,其按照重用距离大小继续分为短重用距离栈R1和长重用距离栈R2,短重用距离栈R1为实际缓存栈,长重用距离栈R2为幽灵缓存栈。短重用距离热数据区域S、长重用距离热数据区域L均为热数据区域,其存储最近访问次数大于或等于2次的数据,二者亦分别具有实际缓存栈和幽灵缓存栈。即短重用距离热数据区域S分为S1栈和S2栈,其中S1栈用于存储短重用距离热数据区域,其为实际缓存栈,S2栈用于存储从S1栈驱逐的变冷数据的区域,其为幽灵缓存栈。同理,长重用距离热数据区域L分为L1栈和L2栈,并具有和S相同的划分特征。其中,L1栈用于存储长重用距离热数据区域,其为实际缓存栈,L2栈用于存储从L1栈驱逐的变冷数据的区域,其为幽灵缓存栈。(d)上述所有划分方式,假设缓存的数据大小为C,其区域大小必须满足如下规定:(1)|R1|≤mC,m∈(0.1,1);(2)|R1|+|R2|≤C,|S1|+|S2|≤C,|L1|+|L2|≤C;(3)|R1|+|S1|+|L1|≤C;(4)|R|+|S|+|L|≤3C;注意这个||符号指缓存中的数据个数,并且本实施例中,R1栈数据大小设置上限值为0.2C,但是实际应用中,m=0.2并不构成对本专利技术技术方案的限制。所述的负载数据流数据类型识别及不同类型数据的缓存分配包括下列步骤:S1、初始时,实际缓存栈和幽灵缓存栈都为空。对于负载数据流中的每一个读请求或者写请求,有且仅有以下三种情况发生:A.实际缓存栈命中;B.幽灵缓存栈命中;C.实际缓存栈和幽灵缓存栈都没有命中。针对这三种情况,当满足A时,则执行步骤S2;当满足B时,则执行步骤S3;当满足C时,则执行步骤S4;S2、当发生实际缓存栈命中时,如果命中区域发生在潜在热数据区域的实际缓存栈,则将数据迁移至短重用距离热数据区域的实际缓存栈的MRU位置;如果命中区域发生在短重用距离热数据区域和长重用距离热数据区域的实际缓存栈,则将数据移动至各自栈MRU(Mostrecentlyused)位置;进一步地,当发生实际缓存栈命中时,说明数据此时至少在最近被访问2次,因此数据应该被存入到热数据S1栈或者L1栈中,具体地,当命中R1栈时,该数据将会从R1栈迁移到S1栈的MRU位置;当命中S1栈或者L1栈时,由于数据本身已经存在于热数据栈中,因此只需将数据移动至各自栈的MRU位置即可;S3、当发生幽灵缓存栈命中时,此时需要执行三个步骤:1.根据当前的数据访问变化趋势,调整各类型实际缓存大小的匹配值;2.当实际缓存满时,算法根据这个匹配值决定淘汰哪个实际缓存栈的页面;3.如果命中区域发生在潜在热数据区域的幽灵缓存栈,则将数据存放至长重用距离热数据区域的实际缓存栈的MRU位置;如果命中区域发生在短重用距离热数据区域的幽灵缓存栈,则将数据存放至短重用距离热数据区域的实际缓存栈的MRU位置;如果命中区域发生在长重用距离热数据区域的幽灵缓存栈,则将数据存放至长重用距离热数据区域的实际缓存栈的MRU位置;进一步地,当发生幽灵缓存栈命中时,此时需要执行三个步骤:1)根据当前的数据访问变化趋势,调整各类型实际缓存大小的匹配值;2)当实际缓存满时,算法根据这个匹配值决定淘汰哪个实际缓存栈的页面;3)最后当R2栈命中时,该数据将插入到L1栈的MRU端;当S2栈命中时,该数据将插入到S1栈的MRU端;当L2栈命中时,该数据将插入到L1栈的MRU端。同时,命中的幽灵缓存页面都会进行删除。S4、当发生实际缓存栈和幽灵缓存栈均未命中时,如果潜在热数据缓存区域并未满时,数据存储在该栈的MRU位置;否则会出现下面三种情况,第1种情况是潜在热数据区域R或短重用距离热数据区域S或长重用距离热数据区域L满;第2种情况是实际缓存满;第3种情况是上述两种情况未发生时,此时算法直接将潜在热数据区域的实际缓存栈的LRU端数据迁移至潜在热数据区域的幽灵缓存栈MRU端,然后将数据存入到潜在热数据的实际缓存栈的LRU端。进一步地,当发生实际缓存栈和幽灵缓存栈均未命中时,如果R1栈未满时,数据存储在该栈的MRU位置;否则会出现下面三种情况,第1种情况是潜在热数据区域R或短重用距离热数据区域S或长重用距离热数据区域L满时,此时会先删除这三个里面满的那个幽灵缓存中的LRU页面,然后调用驱逐函数选择一本文档来自技高网
...

【技术保护点】
1.一种自适应分类重用距离来捕捉热数据的缓存方法,其特征在于,所述的缓存方法包括缓存区域划分、负载数据流数据类型识别及不同类型数据的缓存分配,其中,所述的缓存区域划分具体如下:将整个缓存依据新进度、频率和重用距离特征,分为三个区域:潜在热数据区域R、短重用距离热数据区域S、长重用距离热数据区域L;整个缓存具有实际缓存栈和幽灵缓存栈两种类型的缓存栈,实际缓存栈存储真实数据和元数据,幽灵缓存栈则仅仅存储元数据,并且实际缓存栈的数据结构为LRU栈结构,而幽灵缓存栈则是先进先出的队列结构;所述的潜在热数据区域R存储最近访问一次的数据,其按照重用距离大小继续分为短重用距离栈R1和长重距离栈R2,短重用距离栈R1为实际缓存栈,长重用距离栈R2为幽灵缓存栈;所述的短重用距离热数据区域S、所述的长重用距离热数据区域L均为热数据区域,其存储最近访问次数大于或等于2次的数据;所述的短重用距离热数据区域S分为S1栈和S2栈,其中S1栈用于存储短重用距离热数据区域,其为实际缓存栈,S2栈用于存储从S1栈驱逐的变冷数据的区域,其为幽灵缓存栈;所述的长重用距离热数据区域L分为L1栈和L2栈,其中L1栈用于存储长重用距离热数据区域,其为实际缓存栈,L2栈用于存储从L1栈驱逐的变冷数据的区域,其为幽灵缓存栈;假设缓存的数据大小为C,其区域大小必须满足如下规定:(1)|R1|≤mC,m∈(0.1,1);(2)|R1|+|R2|≤C,|S1|+|S2|≤C,|L1|+|L2|≤C;(3)|R1|+|S1|+|L1|≤C;(4)|R|+|S|+|L|≤3C;||符号表示缓存中的数据个数;所述的负载数据流数据类型识别及不同类型数据的缓存分配包括下列步骤:S1、初始时,实际缓存栈和幽灵缓存栈都为空,对于负载数据流中的每一个读请求或者写请求,有且仅有以下三种情况发生:A.实际缓存栈命中;B.幽灵缓存栈命中;C.实际缓存栈和幽灵缓存栈都没有命中,针对这三种情况,当满足A时,则执行步骤S2;当满足B时,则执行步骤S3;当满足C时,则执行步骤S4;S2、当发生实际缓存栈命中时,数据应该被存入到热数据S1栈或者L1栈中,当命中R1栈时,该数据将会从R1栈迁移到S1栈的MRU位置;当命中S1栈或者L1栈时,由于数据本身已经存在于热数据栈中,将数据移动至各自栈的MRU位置即可;S3、当发生幽灵缓存栈命中时,此时需要执行三个步骤:1)根据当前的数据访问变化趋势,调整各类型实际缓存大小的匹配值;2)当实际缓存满时,根据当前各类型实际缓存大小的匹配值决定淘汰哪个实际缓存栈的页面;3)最后当R2栈命中时,该数据将插入到L1栈的MRU端;当S2栈命中时,该数据将插入到S1栈的MRU端;当L2栈命中时,该数据将插入到L1栈的MRU端,同时,命中的幽灵缓存页面都会进行删除;S4、当发生实际缓存栈和幽灵缓存栈均未命中时,如果潜在热数据缓存区域并未满时,数据存储在该栈的MRU位置;否则会出现下面三种情况,第1种情况是潜在热数据区域R或短重用距离热数据区域S或长重用距离热数据区域L满;第2种情况是实际缓存满;第3种情况是上述两种情况未发生时,此时直接将潜在热数据区域的实际缓存栈的LRU端数据迁移至潜在热数据区域的幽灵缓存栈MRU端,然后将数据存入到潜在热数据的实际缓存栈的LRU端。...

【技术特征摘要】
1.一种自适应分类重用距离来捕捉热数据的缓存方法,其特征在于,所述的缓存方法包括缓存区域划分、负载数据流数据类型识别及不同类型数据的缓存分配,其中,所述的缓存区域划分具体如下:将整个缓存依据新进度、频率和重用距离特征,分为三个区域:潜在热数据区域R、短重用距离热数据区域S、长重用距离热数据区域L;整个缓存具有实际缓存栈和幽灵缓存栈两种类型的缓存栈,实际缓存栈存储真实数据和元数据,幽灵缓存栈则仅仅存储元数据,并且实际缓存栈的数据结构为LRU栈结构,而幽灵缓存栈则是先进先出的队列结构;所述的潜在热数据区域R存储最近访问一次的数据,其按照重用距离大小继续分为短重用距离栈R1和长重距离栈R2,短重用距离栈R1为实际缓存栈,长重用距离栈R2为幽灵缓存栈;所述的短重用距离热数据区域S、所述的长重用距离热数据区域L均为热数据区域,其存储最近访问次数大于或等于2次的数据;所述的短重用距离热数据区域S分为S1栈和S2栈,其中S1栈用于存储短重用距离热数据区域,其为实际缓存栈,S2栈用于存储从S1栈驱逐的变冷数据的区域,其为幽灵缓存栈;所述的长重用距离热数据区域L分为L1栈和L2栈,其中L1栈用于存储长重用距离热数据区域,其为实际缓存栈,L2栈用于存储从L1栈驱逐的变冷数据的区域,其为幽灵缓存栈;假设缓存的数据大小为C,其区域大小必须满足如下规定:(1)|R1|≤mC,m∈(0.1,1);(2)|R1|+|R2|≤C,|S1|+|S2|≤C,|L1|+|L2|≤C;(3)|R1|+|S1|+|L1|≤C;(4)|R|+|S|+|L|≤3C;||符号表示缓存中的数据个数;所述的负载数据流数据类型识别及不同类型数据的缓存分配包括下列步骤:S1、初始时,实际缓存栈和幽灵缓存栈都为空,对于负载数据流中的每一个读请求或者写请求,有且仅有以下三种情况发生:A.实际缓存栈命中;B.幽灵缓存栈命中;C.实际缓存栈和幽灵缓存栈都没有命中,针对这三种情况,当满足A时,则执行步骤S2;当满足B时,则执行步骤S3;当满足C时,则执行步骤S4;S2、当发生实际缓存栈命中时,数据应该被存入到热数据S1栈或者L1栈中,当命中R1栈时,该数据将会从R1栈迁移到S1栈的MRU位置;当命中S1栈或者L1栈时,由于数据本身已经存在于热数据栈中,将数据移动至各自栈的MRU位置即可;S3、当发生幽灵缓存栈命中时,此时需要执行三个步骤:1)根据当前的数据访问变化趋势,调整各类型实际缓存大小的匹配值;2)当实际缓存满时,根据当前各类型实际缓存大小的匹配值决定淘汰哪个实际缓存栈的页面;3)最后当R2栈命中时,该数据将插入到L1栈的MRU端;当S2栈命中...

【专利技术属性】
技术研发人员:邓玉辉艾亮
申请(专利权)人:暨南大学
类型:发明
国别省市:广东,44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1