缓存淘汰算法切换处理方法及装置制造方法

文档序号:6620072阅读:263来源:国知局
缓存淘汰算法切换处理方法及装置制造方法
【专利摘要】本发明实施例提供一种缓存淘汰算法切换处理方法及装置,该方法包括:统计对逻辑单元LU的输入输出IO访问信息,获取IO访问信息统计结果;根据所述IO访问信息统计结果,获取所述LU的全局IO访问特征;根据所述LU的全局IO访问特征,确定所述LU的IO负载模式由第一IO负载模式变化为第二IO负载模式;将所述LU使用的所述第一IO负载模式对应的第一缓存淘汰算法切换为所述第二IO负载模式对应的第二缓存淘汰算法。本发明实施例,实现了根据IO负载模式自适应的匹配合适的淘汰算法,并完成切换,进而摆脱场景局限性,保证了缓存的运行效率。
【专利说明】缓存淘汰算法切换处理方法及装置

【技术领域】
[0001]本发明涉及计算机技术,尤其涉及一种缓存淘汰算法切换处理方法及装置。

【背景技术】
[0002]缓存(Cache)是一种为了解决高、低速设备之间速度不匹配而采用的一项重要技术,广泛应用于各种领域如存储系统、数据库、网页(web)服务器、处理器、文件系统、磁盘系统等,可以减少应用响应时间、提升效率。但是,实现Cache技术所用到的存储介质如RAM、SSD等,在具有更高性能的同时,价格也较昂贵,出于性价比的考虑,Cache的容量大小受到限制,因此需要有效的管理Cache空间,于是出现了多种Cache淘汰算法,例如:最近最少使用(Least Recently Used,简称LRU)淘汰算法,相关资料可参见:I)E.J.0,Neil, P.E.0,Neil, and G.Weikum, "An Optimality Proof of the LRU-K PageReplacement Algorithm", J.ACM, vol.46, n0.1, 1999, pp.92-112 ;2)Megiddo, Nimrod andModha, Dharmendra S.(2004)."Outperforming LRU with an Adaptive ReplacementCache Algorithm".Computer37 (4): 58.do1: 10.1109/MC.2004.1297303 ;最近最不频繁使用(Least Frequently Used,简称LFU)淘汰算法,相关资料可参见:Prof.Ketan ShahAnirban Mitra Dhruv Matani, ^An O(I)algorithm for implementing the LFU cacheevict1n scheme", Augustl6, 2010 ;最近最多使用(Most Recently Used,简称 MRU)淘汰算法,相关资料请参见 A.Malamy, R.Patel, and N.Hayes."Methods and apparatusfor implementing a pseudo-lru cache memory replacement scheme with a lockingfeature", In United States Patent5029072, 1994 ;自适应Cache (Adaptive ReplacementCache,简称 ARC)淘汰算法,相关资料可参见:Nimrod Megiddo and Dharmendra S.Modha.ARC:A Self-Tuning, Low Overhe ad Replacement Cache.FAST, 2003。
[0003]但是,现有的淘汰算法都具有场景局限性。例如:LRU淘汰算法在周期性访问时,热点可能会由于时间局部性而提前淘汰,造成后续访问Cache不命中;LFU淘汰算法,在输入输出(Input/Output,简称10)负载模式改变时,需要更长的时间来适用新的模式;MRU淘汰算法只适合顺序访问场景,在其它场景下,Cache命中率都很低;ARC淘汰算法中,是综合了 LRU和LFU淘汰思想,具体地,维护2个LRU链表,但是,在真正聚簇场景下达不到LFU淘汰算法的效果,导致Cache命中率低。


【发明内容】

[0004]本发明实施例提供一种缓存淘汰算法切换处理方法及装置,用于解决现有技术中采用固定淘汰算法局限性大的问题。
[0005]本发明第一方面提供一种缓存淘汰算法切换处理方法,包括:
[0006]统计对逻辑单元LU的输入输出10访问信息,获取10访问信息统计结果;
[0007]根据所述10访问信息统计结果,获取所述LU的全局10访问特征;
[0008]根据所述LU的全局10访问特征,确定所述LU的10负载模式由第一 10负载模式变化为第二 1负载模式;
[0009]将所述LU使用的所述第一 1负载模式对应的第一缓存淘汰算法切换为所述第二1负载模式对应的第二缓存淘汰算法。
[0010]结合第一方面,在第一方面的第一种可能的实施方式中,所述根据所述1访问信息统计结果,获取所述LU的全局1访问特征,包括:
[0011]根据所述1访问信息统计结果,确定所述LU中各数据块的1访问特征;
[0012]根据所述LU中各数据块的1访问特征,获取所述LU的全局1访问特征。
[0013]结合第一方面的第一种可能的实施方式,在第一方面的第二种可能的实施方式中,所述LU中各数据块的1访问特征,包括:所述各数据块的被访问顺序性、被访问重复度以及被访问次数。
[0014]结合第一方面的第二种可能的实施方式,在第一方面的第三种可能的实施方式中,所述各数据块的被访问顺序性,包括:顺序访问、随机访问或未知访问;其中,所述未知访问为除所述顺序访问和所述随机访问之外的1访问。
[0015]结合第一方面的第三种可能的实施方式,在第一方面的第四种可能的实施方式中,所述根据所述LU中各数据块的1访问特征,获取所述LU的全局1访问特征,包括:
[0016]根据所述LU中各数据块的被访问顺序性,计算所述LU的全局顺序度;
[0017]根据所述LU中各数据块的被访问重复度,计算所述LU的全局重复度;
[0018]根据所述LU中各数据块的被访问次数,计算所述LU的全局聚簇度。
[0019]结合第一方面至第一方面的第四种可能的实施方式,在第一方面的第五种可能的实施方式中,所述1负载模式由第一 1负载模式变化为第二负载模式,包括:
[0020]所述1负载模式由随机访问模式变化为顺序访问模式;相应地,
[0021 ] 所述将所述LU使用的所述第一 1负载模式对应的第一缓存淘汰算法切换为所述第二 1负载模式对应的第二缓存淘汰算法,包括:
[0022]将所述LU使用的最近最少使用LRU淘汰算法切换为最近最多使用MRU淘汰算法。
[0023]结合第一方面的第五种可能的实施方式,在第一方面的第六种可能的实施方式中,所述将所述LU使用的LRU淘汰算法切换为MRU淘汰算法,包括:
[0024]将所述LU的缓存中LRU淘汰算法所使用的链表的当前数据块淘汰方向切换为与所述当前数据块淘汰方向相反的方向。
[0025]结合第一方面至第一方面的第四种可能的实施方式,在第一方面的第七种可能的实施方式中,所述1负载模式由第一 1负载模式变化为第二负载模式,包括:
[0026]所述1负载模式由聚簇访问模式变化为顺序访问模式;相应地,
[0027]所述将所述LU使用的所述第一 1负载模式对应的第一缓存淘汰算法切换为所述第二 1负载模式对应的第二缓存淘汰算法,包括:
[0028]将所述LU使用的最近最不频繁使用LFU淘汰算法切换为最近最多使用MRU淘汰算法。
[0029]结合第一方面的第七种可能的实施方式,在第一方面的第八种可能的实施方式中,所述将所述LU使用的LFU淘汰算法切换为MRU淘汰算法,包括:
[0030]将所述LU的缓存中LFU淘汰算法所使用的多级链表合并为I个链表,作为所述MRU淘汰算法使用的链表。
[0031]结合第一方面至第一方面的第四种可能的实施方式,在第一方面的第九种可能的实施方式中,所述1负载模式由第一 1负载模式变化为第二负载模式,包括:
[0032]所述1负载模式由无特征访问模式变化为顺序访问模式;相应地,
[0033]所述将所述LU使用的所述第一 1负载模式对应的第一缓存淘汰算法切换为所述第二 1负载模式对应的第二缓存淘汰算法,包括:
[0034]将所述LU使用的自适应缓存ARC淘汰算法切换为最近最多使用MRU淘汰算法。
[0035]结合第一方面的第九种可能的实施方式,在第一方面的第十种可能的实施方式中,所述将所述LU使用的ARC淘汰算法切换为MRU淘汰算法,包括:
[0036]将所述LU的缓存中所述ARC淘汰算法所使用的第一链表和第二链表中用于存储淘汰历史记录数据的数据块丢弃,并将所述第一链表和第二链表合并为I个链表,作为所述MRU淘汰算法使用的链表;
[0037]其中,所述第一链表中用于缓存数据的数据块被访问次数为1,所述第二链表中用于缓存数据的数据块被访问次数大于或等于2。
[0038]结合第一方面至第一方面的第四种可能的实施方式,在第一方面的第十一种可能的实施方式中,所述1负载模式由第一 1负载模式变化为第二负载模式,包括:
[0039]所述1负载模式由顺序访问模式变化为随机访问模式;相应地,
[0040]所述将所述LU使用的所述第一 1负载模式对应的第一缓存淘汰算法切换为所述第二 1负载模式对应的第二缓存淘汰算法,包括:
[0041]将所述LU使用的最近最多使用MRU淘汰算法切换为最近最少使用LRU淘汰算法。
[0042]结合第一方面的第^ 种可能的实施方式,在第一方面的第十二种可能的实施方式中,所述将所述LU使用的MRU淘汰算法切换为LRU淘汰算法,包括:
[0043]将所述LU的缓存中MRU淘汰算法所使用的链表的当前数据块淘汰方向切换为与所述当前数据块淘汰方向相反的方向。
[0044]结合第一方面至第一方面的第四种可能的实施方式,在第一方面的第十三种可能的实施方式中,所述1负载模式由第一 1负载模式变化为第二负载模式,包括:
[0045]所述1负载模式由聚簇访问模式变化为随机访问模式;相应地,
[0046]所述将所述LU使用的所述第一 1负载模式对应的第一缓存淘汰算法切换为所述第二 1负载模式对应的第二缓存淘汰算法,包括:
[0047]将所述LU使用的最近最不频繁使用LFU淘汰算法切换为最近最少使用LRU淘汰算法。
[0048]结合第一方面的第十三种可能的实施方式,在第一方面的第十四种可能的实施方式中,所述将所述LU使用的LFU淘汰算法切换为LRU淘汰算法,包括:
[0049]将所述LU的缓存中LFU淘汰算法所使用的多级链表合并为I个链表,作为所述LRU淘汰算法使用的链表。
[0050]结合第一方面至第一方面的第四种可能的实施方式,在第一方面的第十五种可能的实施方式中,所述1负载模式由第一 1负载模式变化为第二负载模式,包括:
[0051]所述1负载模式由无特征访问模式变化为随机访问模式;相应地,
[0052]所述将所述LU使用的所述第一 1负载模式对应的第一缓存淘汰算法切换为所述第二 1负载模式对应的第二缓存淘汰算法,包括:
[0053]将所述LU使用的自适应缓存ARC淘汰算法切换为最近最少使用LRU淘汰算法。
[0054]结合第一方面的第十五种可能的实施方式,在第一方面的第十六种可能的实施方式中,所述将所述LU使用的ARC淘汰算法切换为LRU淘汰算法,包括:
[0055]将所述LU的缓存中所述ARC淘汰算法所使用的第一链表和第二链表中用于存储淘汰历史记录数据的数据块丢弃,并将所述第一链表和第二链表合并为I个链表,作为所述LRU淘汰算法使用的链表;
[0056]其中,所述第一链表中用于缓存数据的数据块被访问次数为1,所述第二链表中用于缓存数据的数据块被访问数据大于或等于2。
[0057]结合第一方面至第一方面的第四种可能的实施方式,在第一方面的第十七种可能的实施方式中,所述1负载模式由第一 1负载模式变化为第二负载模式,包括:
[0058]所述1负载模式由顺序访问模式变化为聚簇访问模式;相应地,
[0059]所述将所述LU使用的所述第一 1负载模式对应的第一缓存淘汰算法切换为所述第二 1负载模式对应的第二缓存淘汰算法,包括:
[0060]将所述LU使用的最近最多使用MRU淘汰算法切换为最近最不频繁使用LFU淘汰算法。
[0061]结合第一方面的第十七种可能的实施方式,在第一方面的第十八种可能的实施方式中,所述将所述LU使用的最近最多使用MRU淘汰算法切换为LFU淘汰算法,包括:
[0062]遍历所述LU的缓存中MRU淘汰算法所使用链表中的数据块,将所述MRU淘汰算法所使用链表中各数据块的被访问次数置I ;
[0063]创建LFU淘汰算法使用的链表;
[0064]将所述MRU淘汰算法所使用链表插入所述LFU淘汰算法使用的链表中被访问次数为I的链表节点下。
[0065]结合第一方面至第一方面的第四种可能的实施方式,在第一方面的第十九种可能的实施方式中,所述1负载模式由第一 1负载模式变化为第二负载模式,包括:
[0066]所述1负载模式由随机访问模式变化为聚簇访问模式;相应地,
[0067]所述将所述LU使用的所述第一 1负载模式对应的第一缓存淘汰算法切换为所述第二 1负载模式对应的第二缓存淘汰算法,包括:
[0068]将所述LU使用的LRU淘汰算法切换为LFU淘汰算法。
[0069]结合第一方面的第十九种可能的实施方式,在第一方面的第二十种可能的实施方式中,所述将所述LU使用的LRU淘汰算法切换为LFU淘汰算法,包括:
[0070]遍历所述LU的缓存中LRU淘汰算法所使用链表中的数据块,将所述LRU淘汰算法所使用链表中各数据块的被访问次数置I ;
[0071 ] 创建LFU淘汰算法使用的链表;
[0072]将所述LRU淘汰算法所使用链表插入所述LFU淘汰算法使用的链表中被访问次数为I的链表节点下。
[0073]结合第一方面至第一方面的第四种可能的实施方式,在第一方面的第二十一种可能的实施方式中,所述1负载模式由第一 1负载模式变化为第二负载模式,包括:
[0074]所述1负载模式由无特征访问模式变化为聚簇访问模式;相应地,
[0075]所述将所述LU使用的所述第一 1负载模式对应的第一缓存淘汰算法切换为所述第二 1负载模式对应的第二缓存淘汰算法,包括:
[0076]将所述LU使用的自适应缓存ARC淘汰算法切换为最近最不频繁使用LFU淘汰算法。
[0077]结合第一方面的第二十一种可能的实施方式,在第一方面的第二十二种可能的实施方式中,所述将所述LU使用的ARC淘汰算法切换为LFU淘汰算法,包括:
[0078]将所述LU的缓存中所述ARC淘汰算法所使用的第一链表和第二链表中用于存储淘汰历史记录数据的数据块丢弃,其中,所述第一链表中用于缓存数据的数据块被访问次数为1,所述第二链表中用于缓存数据的数据块被访问数据大于或等于2 ;
[0079]将所述第二链表中用于缓存数据的各数据块的被访问次数置2 ;
[0080]创建LFU淘汰算法使用的链表;
[0081]将所述第一链表插入所述LFU淘汰算法使用的链表中被访问次数为I的链表节点下,将所述第二链表插入所述LFU淘汰算法使用的链表中被访问次数为2的链表节点下。
[0082]结合第一方面至第一方面的第四种可能的实施方式,在第一方面的第二十三种可能的实施方式中,所述1负载模式由第一 1负载模式变化为第二负载模式,包括:
[0083]所述1负载模式由顺序访问模式变化为无特征访问模式;相应地,
[0084]所述将所述LU使用的所述第一 1负载模式对应的第一缓存淘汰算法切换为所述第二 1负载模式对应的第二缓存淘汰算法,包括:
[0085]将所述LU使用的最近最多使用MRU淘汰算法切换为自适应缓存ARC淘汰算法。
[0086]结合第一方面的第二十三种可能的实施方式,在第一方面的第二十四种可能的实施方式中,所述将所述LU使用的MRU淘汰算法切换为ARC淘汰算法,包括:
[0087]将所述LU的缓存中MRU淘汰算法所使用的链表中的数据块分为第一部分和第二部分,其中,所述第二部分被访问时间早于所述第一部分的被访问时间;
[0088]创建ARC淘汰算法使用的链表,将所述第一部分插入所述ARC淘汰算法使用的链表的第一链表中,并将所述第二部分插入所述ARC淘汰算法使用的链表的第二链表中。
[0089]结合第一方面至第一方面的第四种可能的实施方式,在第一方面的第二十五种可能的实施方式中,所述1负载模式由第一 1负载模式变化为第二负载模式,包括:
[0090]所述1负载模式由随机访问模式变化为无特征访问模式;相应地,
[0091 ] 所述将所述LU使用的所述第一 1负载模式对应的第一缓存淘汰算法切换为所述第二 1负载模式对应的第二缓存淘汰算法,包括:
[0092]将所述LU使用的最近最少使用LRU淘汰算法切换为自适应缓存ARC淘汰算法。
[0093]结合第一方面的第二十五种可能的实施方式,在第一方面的第二十六种可能的实施方式中,所述将LRU淘汰算法切换为ARC淘汰算法,包括:
[0094]将所述LU的缓存中LRU淘汰算法所使用链表中的数据块分为第一部分和第二部分,其中,所述第二部分被访问时间早于所述第一部分的被访问时间;
[0095]创建ARC淘汰算法使用的链表,将所述第一部分插入所述ARC淘汰算法使用的链表的第一链表中,并将所述第二部分插入所述ARC淘汰算法使用的链表的第二链表中。
[0096]结合第一方面至第一方面的第四种可能的实施方式,在第一方面的第二十七种可能的实施方式中,所述1负载模式由第一 1负载模式变化为第二负载模式,包括:
[0097] 所述1负载模式由聚簇访问模式变化为无特征访问模式;相应地,
[0098]所述将所述LU使用的所述第一 1负载模式对应的第一缓存淘汰算法切换为所述第二 1负载模式对应的第二缓存淘汰算法,包括:
[0099]将所述LU使用的最近最不频繁使用LFU淘汰算法切换为自适应缓存ARC淘汰算法。
[0100]结合第一方面的第二十七种可能的实施方式,在第一方面的第二十八种可能的实施方式中,所述将所述LU使用的LFU淘汰算法切换为ARC淘汰算法,包括:
[0101]将所述LU的缓存中LFU淘汰算法所使用链表中的数据块分为第一部分和第二部分,其中,所述第二部分被访问次数大于所述第一部分的被访问次数;
[0102]创建ARC淘汰算法使用的链表,将所述第一部分插入所述ARC淘汰算法使用的链表的第一链表中,并将所述第二部分插入所述ARC淘汰算法使用的链表的第二链表中。
[0103]本发明第二方面提供一种缓存淘汰算法切换处理装置,包括:
[0104]统计模块,用于对逻辑单元LU的输入输出1访问信息,获取1访问信息统计结果;
[0105]获取模块,用于根据所述1访问信息统计结果,获取所述LU的全局1访问特征;
[0106]确定模块,用于根据所述LU的全局1访问特征,确定所述LU的1负载模式由第一 1负载模式变化为第二 1负载模式;
[0107]切换模块,用于将所述LU使用的所述第一 1负载模式对应的第一缓存淘汰算法切换为所述第二 1负载模式对应的第二缓存淘汰算法。
[0108]结合第二方面,在第二方面的第一种可能的实施方式中,所述获取模块,具体用于根据所述1访问信息统计结果,确定所述LU中各数据块的1访问特征;根据所述LU中各数据块的1访问特征,获取所述LU的全局1访问特征。
[0109]结合第二方面的第一种可能的实施方式,在第二方面的第二种可能的实施方式中,所述LU中各数据块的1访问特征,包括:所述各数据块的被访问顺序性、被访问重复度以及被访问次数。
[0110]结合第二方面的第二种可能的实施方式,在第二方面的第三种可能的实施方式中,所述各数据块的被访问顺序性,包括:顺序访问、随机访问或未知访问;其中,所述未知访问为除所述顺序访问和所述随机访问之外的1访问。
[0111]结合第二方面的第三种可能的实施方式,在第二方面的第四种可能的实施方式中,所述获取模块,具体用于根据所述LU中各数据块的被访问顺序性,计算所述LU的全局顺序度;根据所述LU中各数据块的被访问重复度,计算所述LU的全局重复度;根据所述LU中各数据块的被访问次数,计算所述LU的全局聚簇度。
[0112]结合第二方面至第二方面的第四种可能的实施方式,在第二方面的第五种可能的实施方式中,所述切换模块,具体用于在所述1负载模式由随机访问模式变化为顺序访问模式时,将所述LU使用的最近最少使用LRU淘汰算法切换为最近最多使用MRU淘汰算法。
[0113]结合第二方面的第五种可能的实施方式,在第二方面的第六种可能的实施方式中,所述切换模块,具体用于将所述LU的缓存中LRU淘汰算法所使用的链表的当前数据块淘汰方向切换为与所述当前数据块淘汰方向相反的方向。
[0114]结合第二方面至第二方面的第四种可能的实施方式,在第二方面的第七种可能的实施方式中,所述切换模块,具体用于在所述1负载模式由聚簇访问模式变化为顺序访问模式时,将所述LU使用的最近最不频繁使用LFU淘汰算法切换为最近最多使用MRU淘汰算法。
[0115]结合第二方面的第七种可能的实施方式,在第二方面的第八种可能的实施方式中,所述切换模块,具体用于将所述LU的缓存中LFU淘汰算法所使用的多级链表合并为I个链表,作为所述MRU淘汰算法使用的链表。
[0116]结合第二方面至第二方面的第四种可能的实施方式,在第二方面的第九种可能的实施方式中,所述切换模块,具体用于在所述1负载模式由无特征访问模式变化为顺序访问模式时,将所述LU使用的自适应缓存ARC淘汰算法切换为最近最多使用MRU淘汰算法。
[0117]结合第二方面的第九种可能的实施方式,在第二方面的第十种可能的实施方式中,所述切换模块,具体用于将所述LU的缓存中所述ARC淘汰算法所使用的第一链表和第二链表中用于存储淘汰历史记录数据的数据块丢弃,并将所述第一链表和第二链表合并为I个链表,作为所述MRU淘汰算法使用的链表;其中,所述第一链表中用于缓存数据的数据块被访问次数为1,所述第二链表中用于缓存数据的数据块被访问次数大于或等于2。
[0118]结合第二方面至第二方面的第四种可能的实施方式,在第二方面的第十一种可能的实施方式中,所述切换模块,具体用于在所述1负载模式由顺序访问模式变化为随机访问模式时,将所述LU使用的最近最多使用MRU淘汰算法切换为最近最少使用LRU淘汰算法。
[0119]结合第二方面的第十一种可能的实施方式,在第二方面的第十二种可能的实施方式中,所述切换模块,具体用于将所述LU的缓存中MRU淘汰算法所使用的链表的当前数据块淘汰方向切换为与所述当前数据块淘汰方向相反的方向。
[0120]结合第二方面至第二方面的第四种可能的实施方式,在第二方面的第十三种可能的实施方式中,所述切换模块,具体用于在所述1负载模式由聚簇访问模式变化为随机访问模式时,将所述LU使用的最近最不频繁使用LFU淘汰算法切换为最近最少使用LRU淘汰算法。
[0121]结合第二方面的第十三种可能的实施方式,在第二方面的第十四种可能的实施方式中,所述切换模块,具体用于将所述LU的缓存中LFU淘汰算法所使用的多级链表合并为I个链表,作为所述LRU淘汰算法使用的链表。
[0122]结合第二方面至第一方面的第四种可能的实施方式,在第二方面的第十五种可能的实施方式中,所述切换模块,具体用于在所述1负载模式由无特征访问模式变化为随机访问模式时,将所述LU使用的自适应缓存ARC淘汰算法切换为最近最少使用LRU淘汰算法。
[0123]结合第二方面的第十五种可能的实施方式,在第二方面的第十六种可能的实施方式中,所述切换模块,具体用于将所述LU的缓存中所述ARC淘汰算法所使用的第一链表和第二链表中用于存储淘汰历史记录数据的数据块丢弃,并将所述第一链表和第二链表合并为I个链表,作为所述LRU淘汰算法使用的链表;其中,所述第一链表中用于缓存数据的数据块被访问次数为1,所述第二链表中用于缓存数据的数据块被访问数据大于或等于2。
[0124]结合第二方面至第二方面的第四种可能的实施方式,在第二方面的第十七种可能的实施方式中,所述切换模块,具体用于在所述1负载模式由顺序访问模式变化为聚簇访问模式时,将所述LU使用的最近最多使用MRU淘汰算法切换为最近最不频繁使用LFU淘汰算法。
[0125]结合第二方面的第十七种可能的实施方式,在第二方面的第十八种可能的实施方式中,所述切换模块,具体用于遍历所述LU的缓存中MRU淘汰算法所使用链表中的数据块,将所述MRU淘汰算法所使用链表中各数据块的被访问次数置I ;创建LFU淘汰算法使用的链表;将所述MRU淘汰算法所使用链表插入所述LFU淘汰算法使用的链表中被访问次数为I的链表节点下。
[0126]结合第二方面至第二方面的第四种可能的实施方式,在第二方面的第十九种可能的实施方式中,所述切换模块,具体用于在所述1负载模式由随机访问模式变化为聚簇访问模式时,将所述LU使用的最近最少使用LRU淘汰算法切换为最近最不频繁使用LFU淘汰算法。
[0127]结合第二方面的第十九种可能的实施方式,在第二方面的第二十种可能的实施方式中,所述切换模块,具体用于遍历所述LU的缓存中LRU淘汰算法所使用链表中的数据块,将所述LRU淘汰算法所使用链表中各数据块的被访问次数置I ;创建LFU淘汰算法使用的链表;将所述LRU淘汰算法所使用链表插入所述LFU淘汰算法使用的链表中被访问次数为I的链表节点下。
[0128]结合第二方面至第二方面的第四种可能的实施方式,在第二方面的第二十一种可能的实施方式中,所述切换模块,具体用于在所述1负载模式由无特征访问模式变化为聚簇访问模式时,将所述LU使用的自适应缓存ARC淘汰算法切换为最近最不频繁使用LFU淘汰算法。
[0129]结合第二方面的第二十一种可能的实施方式,在第二方面的第二十二种可能的实施方式中,所述切换模块,具体用于将所述LU的缓存中所述ARC淘汰算法所使用的第一链表和第二链表中用于存储淘汰历史记录数据的数据块丢弃,其中,所述第一链表中用于缓存数据的数据块被访问次数为1,所述第二链表中用于缓存数据的数据块被访问数据大于或等于2 ;将所述第二链表中用于缓存数据的各数据块的被访问次数置2 ;创建LFU淘汰算法使用的链表;将所述第一链表插入所述LFU淘汰算法使用的链表中被访问次数为I的链表节点下,将所述第二链表插入所述LFU淘汰算法使用的链表中被访问次数为2的链表节点下。
[0130]结合第二方面至第二方面的第四种可能的实施方式,在第二方面的第二十三种可能的实施方式中,所述切换模块,具体用于在所述1负载模式由顺序访问模式变化为无特征访问模式时,将所述LU使用的最近最多使用MRU淘汰算法切换为自适应缓存ARC淘汰算法。
[0131]结合第二方面的第二十三种可能的实施方式,在第二方面的第二十四种可能的实施方式中,所述切换模块,具体用于将所述LU的缓存中MRU淘汰算法所使用的链表中的数据块分为第一部分和第二部分,其中,所述第二部分被访问时间早于所述第一部分的被访问时间;创建ARC淘汰算法使用的链表,将所述第一部分插入所述ARC淘汰算法使用的链表的第一链表中,并将所述第二部分插入所述ARC淘汰算法使用的链表的第二链表中。
[0132]结合第二方面至第二方面的第四种可能的实施方式,在第二方面的第二十五种可能的实施方式中,所述切换模块,具体用于在所述1负载模式由随机访问模式变化为无特征访问模式时,将所述LU使用的最近最少使用LRU淘汰算法切换为自适应缓存ARC淘汰算法。
[0133]结合第二方面的第二十五种可能的实施方式,在第二方面的第二十六种可能的实施方式中,所述切换模块,具体用于将所述LU的缓存中LRU淘汰算法所使用链表中的数据块分为第一部分和第二部分,其中,所述第二部分被访问时间早于所述第一部分的被访问时间;创建ARC淘汰算法使用的链表,将所述第一部分插入所述ARC淘汰算法使用的链表的第一链表中,并将所述第二部分插入所述ARC淘汰算法使用的链表的第二链表中。
[0134]结合第二方面至第二方面的第四种可能的实施方式,在第二方面的第二十七种可能的实施方式中,所述切换模块,具体用于在所述1负载模式由聚簇访问模式变化为无特征访问模式时,将所述LU使用的LFU淘汰算法切换为自适应缓存ARC淘汰算法。
[0135]结合第二方面的第二十七种可能的实施方式,在第二方面的第二十八种可能的实施方式中,所述切换模块,具体用于将所述LU的缓存中LFU淘汰算法所使用链表中的数据块分为第一部分和第二部分,其中,所述第二部分被访问次数大于所述第一部分的被访问次数;创建ARC淘汰算法使用的链表,将所述第一部分插入所述ARC淘汰算法使用的链表的第一链表中,并将所述第二部分插入所述ARC淘汰算法使用的链表的第二链表中。
[0136]本发明第三方面提供一种缓存淘汰算法切换处理装置所述处理装置包括中央处理器和内存,所述中央处理器和所述内存通过总线通信,所述内存中存储计算机指令,当所述中央处理器执行所述内存中存储的计算机指令时,执行上述第一方面任一实施方式中的方法。
[0137]本发明实施例中,通过统计对LU的1访问信息,进而获取LU的全局1访问特征,根据LU的全局1访问特征确定LU的1负载模式由第一负载模式变化为第二 1负载模式,于是将LU使用的第一 1负载模式对应的第一淘汰算法切换为上述第二 1负载模式对应的第二缓存淘汰算法,实现了根据1负载模式自适应的匹配合适的淘汰算法,并完成切换,进而摆脱场景局限性,保证了缓存的运行效率。

【专利附图】

【附图说明】
[0138]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0139]图1为本发明提供的缓存淘汰算法切换处理方法实施例一的流程示意图;
[0140]图2为本发明提供的缓存淘汰算法切换处理方法实施例二的缓存链表示意图;
[0141]图3为本发明提供的缓存淘汰算法切换处理方法实施例三的缓存链表示意图;
[0142]图4为本发明提供的缓存淘汰算法切换处理方法实施例四的缓存链表示意图;
[0143]图5为本发明提供的缓存淘汰算法切换处理方法实施例五的缓存链表示意图;
[0144]图6为本发明提供的缓存淘汰算法切换处理方法实施例六的缓存链表示意图;
[0145]图7为本发明提供的缓存淘汰算法切换处理方法实施例七的缓存链表示意图;
[0146]图8为本发明提供的缓存淘汰算法切换处理方法实施例八的缓存链表示意图;
[0147]图9为本发明提供的缓存淘汰算法切换处理方法实施例九的缓存链表示意图;
[0148]图10为本发明提供的缓存淘汰算法切换处理方法实施例十的缓存链表示意图;
[0149]图11为本发明提供的缓存淘汰算法切换处理方法实施例十一的缓存链表示意图;
[0150]图12为本发明提供的缓存淘汰算法切换处理方法实施例十二的缓存链表示意图;
[0151]图13为本发明提供的缓存淘汰算法切换处理装置实施例一的结构示意图;
[0152]图14为本发明提供的缓存淘汰算法切换处理装置实施例二的结构示意图。

【具体实施方式】
[0153]为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0154]本发明实施例的公式中“ ”表示乘号,“ / ”表示除号。
[0155]常见的1负载模式有:顺序访问模式、随机访问模式、聚簇访问模式等,同一逻辑单元(Logical Unit,简称LU)中所承载的1负载因访问场景、访问时间、访问习惯、用户数等因素而差异巨大,可能随这些因素而导致1负载模式变化。本发明实施例提出的方法就是为了实现根据1负载模式的不同,自适应且无缝切换到最合适的Cache淘汰算法。
[0156]图1为本发明提供的缓存淘汰算法切换处理方法实施例一的流程示意图,如图1所示,该方法包括:
[0157]S101、统计对LU的1访问信息,获取1访问信息统计结果。
[0158]具体地,可以是按照感知时间窗周期性地进行统计。该对LU的1访问信息包括:感知时间窗内对该LU进行的1访问的访问类型、访问区域、1访问次数、访问时间等。
[0159]将LU以固定大小如4MB切分为连续数据块,切分后得到数据块(chunk),以数据块为对象对1访问行为进行统计。统计过程中,还对1行为特征的感知,具体地,按照感知时间窗来进行,即基于一个感知时间窗内数据块上1访问行为感知出该数据块的相关特性信息,下一个感知时间窗再重新进行感知,就可以感知出该数据块上1访问行为是否发生变化。
[0160]感知过程中获得的信息为感知元数据,该感知元数据包括:数据块标识(Identity,简称ID)、页面位图、时间戳、访问总数据量以及访问次数等。其中,数据块ID用于标识上述LU空间切分后的数据块,一个数据块中可以包括多个页面,假设一个数据块的大小为4兆字节(MB),可以用chunkO标识LU中的[0-4MB)地址空间,chunkl标识LU中的[4-8MB),以此类推。页面位图信息用于标识数据块内哪些页面被访问过。时间戳用于记录数据块在上述感知时间窗内首次被访问的时间以及最近一次被访问的时间,并在每次1访问该数据块时刷新最近访问时间戳。如果最近访问时间戳与数据块首次访问时间戳所记录的时间差超过上述感知时间窗,则启动数据块局部感知,即对各数据块进行感知。访问总数据量,即某数据块在上述感知时间窗内所有1访问数据大小的总和,可用于计算平均1访问大小。访问次数,即某数据块在一个感知时间窗内1访问的次数。
[0161]S102、根据上述1访问信息统计结果,获取上述LU的全局1访问特征。
[0162]其中,全局1访问特征,即整个LU的访问特征。
[0163]S103、根据上述LU的全局1访问特征,确定上述LU的1负载模式由第一 1负载模式变化为第二 1负载模式。
[0164]由于SlOl中的统计是采用上述感知时间窗周期性地进行,根据每个感知时间窗获取的统计结果,获取对应的全局1访问特征,就可以确定当前的1负载模式,再跟之前的1负载模式进行比较,就可以确定出1负载模式是否发生变化。
[0165]本发明实施例中,1负载模式主要包括:顺序访问模式、随机访问模式、聚簇访问模式以及无特征访问模式,其中,无特征访问模式为除顺序访问模式、随机访问模式、聚簇访问模式之外的访问模式,即将除这三种访问模式之外的访问模式统称为无特征访问模式。
[0166]S104、将上述LU使用的第一 1负载模式对应的第一淘汰算法切换为上述第二 1负载模式对应的第二缓存淘汰算法。
[0167]具体地,针对不同的1负载模式,确定适合的淘汰算法,再根据LU的全局1访问特征,确定了上述LU的1负载模式发生变化后,就切换到对应的淘汰算法。例如顺序访问模式下,选择MRU淘汰算法较优,那么当确定1负载模式变化为顺序访问模式后,将淘汰算法切换为MRU淘汰算法,当然,如果当前使用的就是MRU淘汰算法则无需切换。
[0168]本实施例中,通过统计对LU的1访问信息,进而获取LU的全局1访问特征,根据LU的全局1访问特征确定LU的1负载模式由第一负载模式变化为第二 1负载模式,于是将第一 1负载模式对应的第一淘汰算法切换为上述第二 1负载模式对应的第二缓存淘汰算法,实现了根据1负载模式自适应的匹配合适的淘汰算法,并完成切换,进而摆脱场景局限性,保证了缓存的运行效率。
[0169]进一步地,上述根据上述1访问信息统计结果,获取上述LU的全局1访问特征,具体可以为:根据1访问信息统计结果,确定上述LU中各数据块的访问特征;然后,根据上述LU中各数据块的1访问特征,获取上述LU的全局1访问特征。
[0170]其中,上述各数据块的访问特征,可以包括:各数据块的被访问顺序性、被访问重复度以及被访问次数。以便后续使用这些数据获取全局1访问特征。
[0171 ] 更具体地,上述各数据块的被访问顺序性可以具体为顺序访问、随机访问或未知访问。其中,未知访问为除顺序访问、随机访问之外的1访问。
[0172]具体实现过程中,根据前述访问信息统计结果,针对具体的某个数据块,可以预设满足下述两个条件中任一个则确定该数据块中为顺序访问:(1)上述感知时间窗内,该数据块内的1访问次数大于或等于预设个数(例如200个),且这些1的所访问的区域之间的间距小于或等于预设个数的扇区(例如8个扇区)。需要说明的是,如果两个被访问的区域之间的间隔为5个扇区,说明这5个扇区在上述预设时间内没有被访问过。⑵上述感知时间窗内,该数据块内的访问覆盖率大于或等于75%。即该数据块内大于或等于75%的空间被访问,假设该数据块的大小为4MB,那么预设时间内该数据块内被访问过的空间大于或等于3MB。其中,访问覆盖率可以根据访问信息中的访问区域等信息来获取。
[0173]具体实现过程中,根据前述访问信息统计结果,针对具体的某个数据块,先确定该数据块在上述感知时间窗内访问覆盖率大于等于10%且小于等于75%,如果满足此条件则进一步判断是否满足下述三个条件中任一个,若满足其中任一个则确定该数据块中为随机访问:(1)上述感知时间窗内,该数据块内的多个访问1之间的最大间距大于预设间距(如256KB)。(2)上述感知时间窗内,该数据块内的多个访问1之间的平均间距大于预设平均间距(如32KB)。(3)上述感知时间窗内,该数据块内的多个访问1中非顺序1的个数大于预设个数(如8个)。
[0174]当然,并不以上述确定顺序性的方法为限,可以根据具体的应用进行调整。
[0175]进一步地,对于各数据块的被访问重复度的计算,可以是根据1访问信息统计结果,获取上述感知时间窗内每个数据块中访问总数据量,具体一个数据块的访问总数量记为1Size。并统计每个数据块被访问数据的覆盖范围,其中不包含重复访问部分,记为:CkRange,假设有两次访问都读取某数据块中的“0-1M”位置,则该数据块的ckRange为1M。最后,计算各数据块的被访问重复度,具体某个数据块的被访问重复度(c k R e P e a t S i z e)为:ckRepeatSize = 1Size - ckRange。
[0176]进一步地,上述根据各数据块的1访问特征,获取上述LU的全局1访问特征,具体有3个方面,这3方面的计算没有先后顺序之分:
[0177](I)根据上述LU中各数据块的被访问顺序性,计算该LU的全局顺序度。统计上述预设时间段内,该LU中确定被访问顺序性为顺序访问的数据块的个数、确定被访问顺序性为随机访问的数据块的个数,然后进行计算,全局顺序度=(顺序访问的数据块的个数*100)/(随机访问的数据块的个数+顺序访问的数据块的个数)。需要说明的是,在统计过程中,对于不符合顺序访问特征也不符合随机访问特征的数据块,也作为随机访问的数据块,并代入公式进行计算。
[0178](2)根据上述LU中各数据块的被访问重复度,计算上述LU的全局重复度。具体为统计该LU中数据块的总个数n,然后根据前述各数据块在预设时间段内的被访问重复度(ckRepeatSize)以及被访问数据的覆盖范围(ckRange)进行计算。其中该LU总的被访问数据的覆盖范围totalCkRange = CkRange1+…+CkRangen,其中CkRange1表示该LU中数据块I的被访问数据的覆盖范围,以此类推。该LU总的被访问重复度totalCkRepeatSize=CkRepeatSize1+…+CkRepeatSizen,其中 CkRepeatSize1 表不该 LU 中数据块 I 的重复度,以此类推。进而,上述LU的全局重复度LURepeatRat1 = (totalCkRepeatSize*100) /totalCkRange。
[0179](3)根据上述各LU中各数据块的被访问次数,计算上述LU的全局聚簇度。具体为统计该LU中数据块的总个数n,以及每个数据块的被访问次数。然后,先计算LU中所有数据块的平均被访问数:f= CX1+X2+- -+Χ?) η,其中X1表示该LU中数据块I的被访问次数,以此类推。然后计算该LU中所有数据块被访问次数的均方差(即聚簇度):
1)2。后续步骤中,将均方差与预设阈值进行比较,若大于预设阈值,则表明对缓存中某些数据块的反复访问情形比较突出,即对缓存的访问呈现出局部高度点特征,也就是聚簇访问特征,可以确定10负载模式为聚簇访问模式。
[0180]更进一步地,根据LU的全局10访问特征,确定LU的10负载模式由第一 10负载模式变化为第二 10负载模式,可以是根据LU的全局10访问特征确定上述LU的当前10负载模式,进而确定当前10负载模式为第二 10负载模式,而前次确定的10负载模式为第一10负责模式,则确定由第一 10负载模式变化为第二 10负载模式,具体地:
[0181]I)全局顺序度大于第一预设阈值时,确定LU的当前10负载模式为顺序访问模式。或者,
[0182]2)全局顺序度小于第二预设阈值且全局重复度小于第三预设阈值时,确定LU的当前1负载模式为随机访问模式。或者,
[0183]3)全局顺序度小于第四预设阈值且全局聚簇度大于第五预设阈值时,确定上述LU的当前1负载模式为聚簇访问模式。
[0184]另外,不满足上述这些条件的,在本发明实施例中作为无特征访问模式。需要说明的是,上述第二预设阈值小于第一预设阈值,且,第四预设阈值也小于第一预设阈值,其中,第二预设阈值和第四预设阈值可以相等。需要说明的是,本实施例中可以以上述感知时间窗为周期确定1负载模式是否发生变化。
[0185]举例说明,可以按照表1中的预设策略确定缓存淘汰算法,但并不以此为限。
[0186]表1
[0187]

【权利要求】
1.一种缓存淘汰算法切换处理方法,其特征在于,包括: 统计对逻辑单元LU的输入输出1访问信息,获取1访问信息统计结果; 根据所述1访问信息统计结果,获取所述LU的全局1访问特征; 根据所述LU的全局1访问特征,确定所述LU的1负载模式由第一 1负载模式变化为第二 1负载模式; 将所述LU使用的所述第一 1负载模式对应的第一缓存淘汰算法切换为所述第二 1负载模式对应的第二缓存淘汰算法。
2.根据权利要求1所述的方法,其特征在于,所述根据所述1访问信息统计结果,获取所述LU的全局1访问特征,包括: 根据所述1访问信息统计结果,确定所述LU中各数据块的1访问特征; 根据所述LU中各数据块的1访问特征,获取所述LU的全局1访问特征。
3.根据权利要求2所述的方法,其特征在于,所述LU中各数据块的1访问特征,包括:所述各数据块的被访问顺序性、被访问重复度以及被访问次数。
4.根据权利要求3所述的方法,其特征在于,所述各数据块的被访问顺序性,包括:顺序访问、随机访问或未知访问;其中,所述未知访问为除所述顺序访问和所述随机访问之外的1访问。
5.根据权利要求4所述的方法,其特征在于,所述根据所述LU中各数据块的1访问特征,获取所述LU的全局1访问特征,包括: 根据所述LU中各数据块的被访问顺序性,计算所述LU的全局顺序度; 根据所述LU中各数据块的被访问重复度,计算所述LU的全局重复度; 根据所述LU中各数据块的被访问次数,计算所述LU的全局聚簇度。
6.根据权利要求1-5任一项所述的方法,其特征在于,所述1负载模式由第一1负载模式变化为第二负载模式,包括: 所述1负载模式由随机访问模式变化为顺序访问模式;相应地, 所述将所述LU使用的所述第一 1负载模式对应的第一缓存淘汰算法切换为所述第二1负载模式对应的第二缓存淘汰算法,包括: 将所述LU使用的最近最少使用LRU淘汰算法切换为最近最多使用MRU淘汰算法。
7.根据权利要求6所述的方法,其特征在于,所述将所述LU使用的LRU淘汰算法切换为MRU淘汰算法,包括: 将所述LU的缓存中LRU淘汰算法所使用的链表的当前数据块淘汰方向切换为与所述当前数据块淘汰方向相反的方向。
8.根据权利要求1-5任一项所述的方法,其特征在于,所述1负载模式由第一1负载模式变化为第二负载模式,包括: 所述1负载模式由聚簇访问模式变化为顺序访问模式;相应地, 所述将所述LU使用的所述第一 1负载模式对应的第一缓存淘汰算法切换为所述第二1负载模式对应的第二缓存淘汰算法,包括: 将所述LU使用的最近最不频繁使用LFU淘汰算法切换为最近最多使用MRU淘汰算法。
9.根据权利要求8所述的方法,其特征在于,所述将所述LU使用的LFU淘汰算法切换为MRU淘汰算法,包括:将所述LU的缓存中LFU淘汰算法所使用的多级链表合并为I个链表,作为所述MRU淘汰算法使用的链表。
10.根据权利要求1-5任一项所述的方法,其特征在于,所述1负载模式由第一1负载模式变化为第二负载模式,包括: 所述1负载模式由无特征访问模式变化为顺序访问模式;相应地, 所述将所述LU使用的所述第一 1负载模式对应的第一缓存淘汰算法切换为所述第二1负载模式对应的第二缓存淘汰算法,包括: 将所述LU使用的自适应缓存ARC淘汰算法切换为最近最多使用MRU淘汰算法。
11.根据权利要求10所述的方法,其特征在于,所述将所述LU使用的ARC淘汰算法切换为MRU淘汰算法,包括: 将所述LU的缓存中所述ARC淘汰算法所使用的第一链表和第二链表中用于存储淘汰历史记录数据的数据块丢弃,并将所述第一链表和第二链表合并为I个链表,作为所述MRU淘汰算法使用的链表; 其中,所述第一链表中用于缓存数据的数据块被访问次数为1,所述第二链表中用于缓存数据的数据块被访问次数大于或等于2。
12.根据权利要求1-5任一项所述的方法,其特征在于,所述1负载模式由第一1负载模式变化为第二负载模式,包括: 所述1负载模式由顺序访问模式变化为随机访问模式;相应地, 所述将所述LU使用的所述第一 1负载模式对应的第一缓存淘汰算法切换为所述第二1负载模式对应的第二缓存淘汰算法,包括: 将所述LU使用的最近最多使用MRU淘汰算法切换为最近最少使用LRU淘汰算法。
13.根据权利要求12所述的方法,其特征在于,所述将所述LU使用的MRU淘汰算法切换为LRU淘汰算法,包括: 将所述LU的缓存中MRU淘汰算法所使用的链表的当前数据块淘汰方向切换为与所述当前数据块淘汰方向相反的方向。
14.根据权利要求1-5任一项所述的方法,其特征在于,所述1负载模式由第一1负载模式变化为第二负载模式,包括: 所述1负载模式由聚簇访问模式变化为随机访问模式;相应地, 所述将所述LU使用的所述第一 1负载模式对应的第一缓存淘汰算法切换为所述第二1负载模式对应的第二缓存淘汰算法,包括: 将所述LU使用的最近最不频繁使用LFU淘汰算法切换为最近最少使用LRU淘汰算法。
15.根据权利要求14所述的方法,其特征在于,所述将所述LU使用的LFU淘汰算法切换为LRU淘汰算法,包括: 将所述LU的缓存中LFU淘汰算法所使用的多级链表合并为I个链表,作为所述LRU淘汰算法使用的链表。
16.根据权利要求1-5任一项所述的方法,其特征在于,所述1负载模式由第一1负载模式变化为第二负载模式,包括: 所述1负载模式由无特征访问模式变化为随机访问模式;相应地, 所述将所述LU使用的所述第一 1负载模式对应的第一缓存淘汰算法切换为所述第二1负载模式对应的第二缓存淘汰算法,包括: 将所述LU使用的自适应缓存ARC淘汰算法切换为最近最少使用LRU淘汰算法。
17.根据权利要求16所述的方法,其特征在于,所述将所述LU使用的ARC淘汰算法切换为LRU淘汰算法,包括: 将所述LU的缓存中所述ARC淘汰算法所使用的第一链表和第二链表中用于存储淘汰历史记录数据的数据块丢弃,并将所述第一链表和第二链表合并为I个链表,作为所述LRU淘汰算法使用的链表; 其中,所述第一链 表中用于缓存数据的数据块被访问次数为1,所述第二链表中用于缓存数据的数据块被访问数据大于或等于2。
18.根据权利要求1-5任一项所述的方法,其特征在于,所述1负载模式由第一1负载模式变化为第二负载模式,包括: 所述1负载模式由顺序访问模式变化为聚簇访问模式;相应地, 所述将所述LU使用的所述第一 1负载模式对应的第一缓存淘汰算法切换为所述第二1负载模式对应的第二缓存淘汰算法,包括: 将所述LU使用的最近最多使用MRU淘汰算法切换为最近最不频繁使用LFU淘汰算法。
19.根据权利要求18所述的方法,其特征在于,所述将所述LU使用的最近最多使用MRU淘汰算法切换为LFU淘汰算法,包括: 遍历所述LU的缓存中MRU淘汰算法所使用链表中的数据块,将所述MRU淘汰算法所使用链表中各数据块的被访问次数置I ; 创建LFU淘汰算法使用的链表; 将所述MRU淘汰算法所使用链表插入所述LFU淘汰算法使用的链表中被访问次数为I的链表节点下。
20.根据权利要求1-5任一项所述的方法,其特征在于,所述1负载模式由第一1负载模式变化为第二负载模式,包括: 所述1负载模式由随机访问模式变化为聚簇访问模式;相应地, 所述将所述LU使用的所述第一 1负载模式对应的第一缓存淘汰算法切换为所述第二1负载模式对应的第二缓存淘汰算法,包括: 将所述LU使用的LRU淘汰算法切换为LFU淘汰算法。
21.根据权利要求20所述的方法,其特征在于,所述将所述LU使用的LRU淘汰算法切换为LFU淘汰算法,包括: 遍历所述LU的缓存中LRU淘汰算法所使用链表中的数据块,将所述LRU淘汰算法所使用链表中各数据块的被访问次数置I ; 创建LFU淘汰算法使用的链表; 将所述LRU淘汰算法所使用链表插入所述LFU淘汰算法使用的链表中被访问次数为I的链表节点下。
22.根据权利要求1-5任一项所述的方法,其特征在于,所述1负载模式由第一1负载模式变化为第二负载模式,包括: 所述1负载模式由无特征访问模式变化为聚簇访问模式;相应地, 所述将所述LU使用的所述第一 1负载模式对应的第一缓存淘汰算法切换为所述第二1负载模式对应的第二缓存淘汰算法,包括: 将所述LU使用的自适应缓存ARC淘汰算法切换为最近最不频繁使用LFU淘汰算法。
23.根据权利要求22所述的方法,其特征在于,所述将所述LU使用的ARC淘汰算法切换为LFU淘汰算法,包括: 将所述LU的缓存中所述ARC淘汰算法所使用的第一链表和第二链表中用于存储淘汰历史记录数据的数据块丢弃,其中,所述第一链表中用于缓存数据的数据块被访问次数为1,所述第二链表中用于缓存数据的数据块被访问数据大于或等于2 ; 将所述第二链表中用于缓存数据的各数据块的被访问次数置2 ; 创建LFU淘汰算法使用的链表; 将所述第一链表插入所述LFU淘汰算法使用的链表中被访问次数为I的链表节点下,将所述第二链表插入所述LFU淘汰算法使用的链表中被访问次数为2的链表节点下。
24.根据权利要求1-5任一项所述的方法,其特征在于,所述1负载模式由第一1负载模式变化为第二负载模式,包括: 所述1负载模式由 顺序访问模式变化为无特征访问模式;相应地, 所述将所述LU使用的所述第一 1负载模式对应的第一缓存淘汰算法切换为所述第二1负载模式对应的第二缓存淘汰算法,包括: 将所述LU使用的最近最多使用MRU淘汰算法切换为自适应缓存ARC淘汰算法。
25.根据权利要求24所述的方法,其特征在于,所述将所述LU使用的MRU淘汰算法切换为ARC淘汰算法,包括: 将所述LU的缓存中MRU淘汰算法所使用的链表中的数据块分为第一部分和第二部分,其中,所述第二部分被访问时间早于所述第一部分的被访问时间; 创建ARC淘汰算法使用的链表,将所述第一部分插入所述ARC淘汰算法使用的链表的第一链表中,并将所述第二部分插入所述ARC淘汰算法使用的链表的第二链表中。
26.根据权利要求1-5任一项所述的方法,其特征在于,所述1负载模式由第一1负载模式变化为第二负载模式,包括: 所述1负载模式由随机访问模式变化为无特征访问模式;相应地, 所述将所述LU使用的所述第一 1负载模式对应的第一缓存淘汰算法切换为所述第二1负载模式对应的第二缓存淘汰算法,包括: 将所述LU使用的最近最少使用LRU淘汰算法切换为自适应缓存ARC淘汰算法。
27.根据权利要求26所述的方法,其特征在于,所述将LRU淘汰算法切换为ARC淘汰算法,包括: 将所述LU的缓存中LRU淘汰算法所使用链表中的数据块分为第一部分和第二部分,其中,所述第二部分被访问时间早于所述第一部分的被访问时间; 创建ARC淘汰算法使用的链表,将所述第一部分插入所述ARC淘汰算法使用的链表的第一链表中,并将所述第二部分插入所述ARC淘汰算法使用的链表的第二链表中。
28.根据权利要求1-5任一项所述的方法,其特征在于,所述1负载模式由第一1负载模式变化为第二负载模式,包括: 所述1负载模式由聚簇访问模式变化为无特征访问模式;相应地, 所述将所述LU使用的所述第一 1负载模式对应的第一缓存淘汰算法切换为所述第二1负载模式对应的第二缓存淘汰算法,包括: 将所述LU使用的最近最不频繁使用LFU淘汰算法切换为自适应缓存ARC淘汰算法。
29.根据权利要求28所述的方法,其特征在于,所述将所述LU使用的LFU淘汰算法切换为ARC淘汰算法,包括: 将所述LU的缓存中LFU淘汰算法所使用链表中的数据块分为第一部分和第二部分,其中,所述第二部分被访问次数大于所述第一部分的被访问次数; 创建ARC淘汰算法使用的链表,将所述第一部分插入所述ARC淘汰算法使用的链表的第一链表中,并将所述第二部分插入所述ARC淘汰算法使用的链表的第二链表中。
30.一种缓存淘汰算法切换处理装置,其特征在于,包括: 统计模块,用于对逻辑单元LU的输入输出1访问信息,获取1访问信息统计结果; 获取模块,用于根据所述1访问信息统计结果,获取所述LU的全局1访问特征; 确定模块,用于根据所述LU的全局1访问特征,确定所述LU的1负载模式由第一 1负载模式变化为第二 1负载模式; 切换模块,用于将所述LU使用的所述第一 1负载模式对应的第一缓存淘汰算法切换为所述第二 1负载模式对应的第二缓存淘汰算法。
31.根据权利要求 30所述的装置,其特征在于,所述获取模块,具体用于根据所述1访问信息统计结果,确定所述LU中各数据块的1访问特征;根据所述LU中各数据块的1访问特征,获取所述LU的全局1访问特征。
32.根据权利要求31所述的装置,其特征在于,所述LU中各数据块的1访问特征,包括:所述各数据块的被访问顺序性、被访问重复度以及被访问次数。
33.根据权利要求32所述的装置,其特征在于,所述各数据块的被访问顺序性,包括:顺序访问、随机访问或未知访问;其中,所述未知访问为除所述顺序访问和所述随机访问之外的1访问。
34.根据权利要求33所述的装置,其特征在于,所述获取模块,具体用于根据所述LU中各数据块的被访问顺序性,计算所述LU的全局顺序度;根据所述LU中各数据块的被访问重复度,计算所述LU的全局重复度;根据所述LU中各数据块的被访问次数,计算所述LU的全局聚簇度。
35.根据权利要求30-34任一项所述的装置,其特征在于,所述切换模块,具体用于在所述1负载模式由随机访问模式变化为顺序访问模式时,将所述LU使用的最近最少使用LRU淘汰算法切换为最近最多使用MRU淘汰算法。
36.根据权利要求35所述的装置,其特征在于,所述切换模块,具体用于将所述LU的缓存中LRU淘汰算法所使用的链表的当前数据块淘汰方向切换为与所述当前数据块淘汰方向相反的方向。
37.根据权利要求30-34任一项所述的装置,其特征在于,所述切换模块,具体用于在所述1负载模式由聚簇访问模式变化为顺序访问模式时,将所述LU使用的最近最不频繁使用LFU淘汰算法切换为最近最多使用MRU淘汰算法。
38.根据权利要求37所述的装置,其特征在于,所述切换模块,具体用于将所述LU的缓存中LFU淘汰算法所使用的多级链表合并为I个链表,作为所述MRU淘汰算法使用的链表。
39.根据权利要求30-34任一项所述的装置,其特征在于,所述切换模块,具体用于在所述1负载模式由无特征访问模式变化为顺序访问模式时,将所述LU使用的自适应缓存ARC淘汰算法切换为最近最多使用MRU淘汰算法。
40.根据权利要求39所述的装置,其特征在于,所述切换模块,具体用于将所述LU的缓存中所述ARC淘汰算法所使用的第一链表和第二链表中用于存储淘汰历史记录数据的数据块丢弃,并将所述第一链表和第二链表合并为I个链表,作为所述MRU淘汰算法使用的链表;其中,所述第一链表中用于缓存数据的数据块被访问次数为1,所述第二链表中用于缓存数据的数据块被访问次数大于或等于2。
41.根据权利要求30-34任一项所述的装置,其特征在于,所述切换模块,具体用于在所述1负载模式由顺序访问模式变化为随机访问模式时,将所述LU使用的最近最多使用MRU淘汰算法切换为最近最少使用LRU淘汰算法。
42.根据权利要求41所述的装置,其特征在于,所述切换模块,具体用于将所述LU的缓存中MRU淘汰算法所使用的链表的当前数据块淘汰方向切换为与所述当前数据块淘汰方向相反的方向。
43.根据权利要求30-34任一项所述的装置,其特征在于,所述切换模块,具体用于在所述1负载模式由聚簇访问模式变化为随机访问模式时,将所述LU使用的最近最不频繁使用LFU淘汰算法切换为最近最少使用LRU淘汰算法。
44.根据权利要求43所述的装置,其特征在于,所述切换模块,具体用于将所述LU的缓存中LFU淘汰算法所使用的多级链表合并为I个链表,作为所述LRU淘汰算法使用的链表。
45.根据权利要求30-34任一项所述的装置,其特征在于,所述切换模块,具体用于在所述1负载模式由无特 征访问模式变化为随机访问模式时,将所述LU使用的自适应缓存ARC淘汰算法切换为最近最少使用LRU淘汰算法。
46.根据权利要求45所述的装置,其特征在于,所述切换模块,具体用于将所述LU的缓存中所述ARC淘汰算法所使用的第一链表和第二链表中用于存储淘汰历史记录数据的数据块丢弃,并将所述第一链表和第二链表合并为I个链表,作为所述LRU淘汰算法使用的链表;其中,所述第一链表中用于缓存数据的数据块被访问次数为1,所述第二链表中用于缓存数据的数据块被访问数据大于或等于2。
47.根据权利要求30-34任一项所述的装置,其特征在于,所述切换模块,具体用于在所述1负载模式由顺序访问模式变化为聚簇访问模式时,将所述LU使用的最近最多使用MRU淘汰算法切换为最近最不频繁使用LFU淘汰算法。
48.根据权利要求47所述的装置,其特征在于,所述切换模块,具体用于遍历所述LU的缓存中MRU淘汰算法所使用链表中的数据块,将所述MRU淘汰算法所使用链表中各数据块的被访问次数置I ;创建LFU淘汰算法使用的链表;将所述MRU淘汰算法所使用链表插入所述LFU淘汰算法使用的链表中被访问次数为I的链表节点下。
49.根据权利要求30-34任一项所述的装置,其特征在于,所述切换模块,具体用于在所述1负载模式由随机访问模式变化为聚簇访问模式时,将所述LU使用的最近最少使用LRU淘汰算法切换为最近最不频繁使用LFU淘汰算法。
50.根据权利要求49所述的装置,其特征在于,所述切换模块,具体用于遍历所述LU的缓存中LRU淘汰算法所使用链表中的数据块,将所述LRU淘汰算法所使用链表中各数据块的被访问次数置I ;创建LFU淘汰算法使用的链表;将所述LRU淘汰算法所使用链表插入所述LFU淘汰算法使用的链表中被访问次数为I的链表节点下。
51.根据权利要求30-34任一项所述的装置,其特征在于,所述切换模块,具体用于在所述1负载模式由无特征访问模式变化为聚簇访问模式时,将所述LU使用的自适应缓存ARC淘汰算法切换为最近最不频繁使用LFU淘汰算法。
52.根据权利要求51所述的装置,其特征在于,所述切换模块,具体用于将所述LU的缓存中所述ARC淘汰算法所使用的第一链表和第二链表中用于存储淘汰历史记录数据的数据块丢弃,其中,所述第一链表中用于缓存数据的数据块被访问次数为1,所述第二链表中用于缓存数据的数据块被访问数据大于或等于2 ;将所述第二链表中用于缓存数据的各数据块的被访问次数置2 ;创建LFU淘汰算法使用的链表;将所述第一链表插入所述LFU淘汰算法使用的链表中被访问次数为I的链表节点下,将所述第二链表插入所述LFU淘汰算法使用的链表中被访问次数为2的链表节点下。
53.根据权利要求30-34任一项所述的装置,其特征在于,所述切换模块,具体用于在所述1负载模式由顺序访问模式变化为无特征访问模式时,将所述LU使用的最近最多使用MRU淘汰算法切换为自适应缓存ARC淘汰算法。
54.根据权利要求53所述的装置,其特征在于,所述切换模块,具体用于将所述LU的缓存中MRU淘汰算法所使用的链表中的数据块分为第一部分和第二部分,其中,所述第二部分被访问时间早于所述第一部分的被访问时间;创建ARC淘汰算法使用的链表,将所述第一部分插入所述ARC淘汰算法使用的链表的第一链表中,并将所述第二部分插入所述ARC淘汰算法使用的链表的第二链表中。
55.根据权利要求30-34任一项所述的装置,其特征在于,所述切换模块,具体用于在所述1负载模式由随机访 问模式变化为无特征访问模式时,将所述LU使用的最近最少使用LRU淘汰算法切换为自适应缓存ARC淘汰算法。
56.根据权利要求57所述的装置,其特征在于,所述切换模块,具体用于将所述LU的缓存中LRU淘汰算法所使用链表中的数据块分为第一部分和第二部分,其中,所述第二部分被访问时间早于所述第一部分的被访问时间;创建ARC淘汰算法使用的链表,将所述第一部分插入所述ARC淘汰算法使用的链表的第一链表中,并将所述第二部分插入所述ARC淘汰算法使用的链表的第二链表中。
57.根据权利要求30-34任一项所述的装置,其特征在于,所述切换模块,具体用于在所述1负载模式由聚簇访问模式变化为无特征访问模式时,将所述LU使用的LFU淘汰算法切换为自适应缓存ARC淘汰算法。
58.根据权利要求57所述的装置,其特征在于,所述切换模块,具体用于将所述LU的缓存中LFU淘汰算法所使用链表中的数据块分为第一部分和第二部分,其中,所述第二部分被访问次数大于所述第一部分的被访问次数;创建ARC淘汰算法使用的链表,将所述第一部分插入所述ARC淘汰算法使用的链表的第一链表中,并将所述第二部分插入所述ARC淘汰算法使用的链表的第二链表中。
59.一种缓存淘汰算法切换处理装置,其特征在于,所述处理装置包括中央处理器和内存,所述中央处理器和所述内存通过总线通信,所述内存中存储计算机指令,当所述中央处理器执行所述内存中存储的计算机指令时,执行权利要求1-29任一项所述的方法。
【文档编号】G06F12/12GK104077241SQ201410334478
【公开日】2014年10月1日 申请日期:2014年7月14日 优先权日:2014年7月14日
【发明者】易新发, 覃伟峰, 王明迪 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1