CN104077241B - 缓存淘汰算法切换处理方法及装置 - Google Patents

缓存淘汰算法切换处理方法及装置 Download PDF

Info

Publication number
CN104077241B
CN104077241B CN201410334478.8A CN201410334478A CN104077241B CN 104077241 B CN104077241 B CN 104077241B CN 201410334478 A CN201410334478 A CN 201410334478A CN 104077241 B CN104077241 B CN 104077241B
Authority
CN
China
Prior art keywords
life cycle
chained list
algorithms
cycle algorithms
data block
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201410334478.8A
Other languages
English (en)
Other versions
CN104077241A (zh
Inventor
易新发
覃伟峰
王明迪
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN201410334478.8A priority Critical patent/CN104077241B/zh
Publication of CN104077241A publication Critical patent/CN104077241A/zh
Application granted granted Critical
Publication of CN104077241B publication Critical patent/CN104077241B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Abstract

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

Description

缓存淘汰算法切换处理方法及装置
技术领域
本发明涉及计算机技术,尤其涉及一种缓存淘汰算法切换处理方法及装置。
背景技术
缓存(Cache)是一种为了解决高、低速设备之间速度不匹配而采用的一项重要技术,广泛应用于各种领域如存储系统、数据库、网页(web)服务器、处理器、文件系统、磁盘系统等,可以减少应用响应时间、提升效率。但是,实现Cache技术所用到的存储介质如RAM、SSD等,在具有更高性能的同时,价格也较昂贵,出于性价比的考虑,Cache的容量大小受到限制,因此需要有效的管理Cache空间,于是出现了多种Cache淘汰算法,例如:最近最少使用(Least Recently Used,简称LRU)淘汰算法,相关资料可参见:1)E.J.O’Neil,P.E.O’Neil,and G.Weikum,"An Optimality Proof of the LRU-K Page ReplacementAlgorithm",J.ACM,vol.46,no.1,1999,pp.92-112;2)Megiddo,Nimrod and Modha,Dharmendra S.(2004)."Outperforming LRU with an Adaptive Replacement CacheAlgorithm".Computer 37(4):58.doi:10.1109/MC.2004.1297303;最不频繁使用(LeastFrequently Used,简称LFU)淘汰算法,相关资料可参见:Prof.Ketan Shah Anirban MitraDhruv Matani,"An O(1)algorithm for implementing the LFU cache evictionscheme",August 16,2010;最近最多使用(Most Recently Used,简称MRU)淘汰算法,相关资料请参见A.Malamy,R.Patel,and N.Hayes."Methods and apparatus forimplementing a pseudo-lru cache memory replacement scheme with a lockingfeature",In United States Patent 5029072,1994;自适应Cache(AdaptiveReplacement Cache,简称ARC)淘汰算法,相关资料可参见:Nimrod Megiddo andDharmendra S.Modha.ARC:A Self-Tuning,Low Overhead Replacement Cache.FAST,2003。
但是,现有的淘汰算法都具有场景局限性。例如:LRU淘汰算法在周期性访问时,热点可能会由于时间局部性而提前淘汰,造成后续访问Cache不命中;LFU淘汰算法,在输入输出(Input/Output,简称IO)负载模式改变时,需要更长的时间来适用新的模式;MRU淘汰算法只适合顺序访问场景,在其它场景下,Cache命中率都很低;ARC淘汰算法中,是综合了LRU和LFU淘汰思想,具体地,维护2个LRU链表,但是,在真正聚簇场景下达不到LFU淘汰算法的效果,导致Cache命中率低。
发明内容
本发明实施例提供一种缓存淘汰算法切换处理方法及装置,用于解决现有技术中采用固定淘汰算法局限性大的问题。
本发明第一方面提供一种缓存淘汰算法切换处理方法,包括:
统计对逻辑单元LU的输入输出IO访问信息,获取IO访问信息统计结果;
根据所述IO访问信息统计结果,获取所述LU的全局IO访问特征;
根据所述LU的全局IO访问特征,确定所述LU的IO负载模式由第一IO负载模式变化为第二IO负载模式;
将所述LU使用的所述第一IO负载模式对应的第一缓存淘汰算法切换为所述第二IO负载模式对应的第二缓存淘汰算法。
结合第一方面,在第一方面的第一种可能的实施方式中,所述根据所述IO访问信息统计结果,获取所述LU的全局IO访问特征,包括:
根据所述IO访问信息统计结果,确定所述LU中各数据块的IO访问特征;
根据所述LU中各数据块的IO访问特征,获取所述LU的全局IO访问特征。
结合第一方面的第一种可能的实施方式,在第一方面的第二种可能的实施方式中,所述LU中各数据块的IO访问特征,包括:所述各数据块的被访问顺序性、被访问重复度以及被访问次数。
结合第一方面的第二种可能的实施方式,在第一方面的第三种可能的实施方式中,所述各数据块的被访问顺序性,包括:顺序访问、随机访问或未知访问;其中,所述未知访问为除所述顺序访问和所述随机访问之外的IO访问。
结合第一方面的第三种可能的实施方式,在第一方面的第四种可能的实施方式中,所述根据所述LU中各数据块的IO访问特征,获取所述LU的全局IO访问特征,包括:
根据所述LU中各数据块的被访问顺序性,计算所述LU的全局顺序度;
根据所述LU中各数据块的被访问重复度,计算所述LU的全局重复度;
根据所述LU中各数据块的被访问次数,计算所述LU的全局聚簇度。
结合第一方面至第一方面的第四种可能的实施方式,在第一方面的第五种可能的实施方式中,所述IO负载模式由第一IO负载模式变化为第二负载模式,包括:
所述IO负载模式由随机访问模式变化为顺序访问模式;相应地,
所述将所述LU使用的所述第一IO负载模式对应的第一缓存淘汰算法切换为所述第二IO负载模式对应的第二缓存淘汰算法,包括:
将所述LU使用的最近最少使用LRU淘汰算法切换为最近最多使用MRU淘汰算法。
结合第一方面的第五种可能的实施方式,在第一方面的第六种可能的实施方式中,所述将所述LU使用的LRU淘汰算法切换为MRU淘汰算法,包括:
将所述LU的缓存中LRU淘汰算法所使用的链表的当前数据块淘汰方向切换为与所述当前数据块淘汰方向相反的方向。
结合第一方面至第一方面的第四种可能的实施方式,在第一方面的第七种可能的实施方式中,所述IO负载模式由第一IO负载模式变化为第二负载模式,包括:
所述IO负载模式由聚簇访问模式变化为顺序访问模式;相应地,
所述将所述LU使用的所述第一IO负载模式对应的第一缓存淘汰算法切换为所述第二IO负载模式对应的第二缓存淘汰算法,包括:
将所述LU使用的最不频繁使用LFU淘汰算法切换为最近最多使用MRU淘汰算法。
结合第一方面的第七种可能的实施方式,在第一方面的第八种可能的实施方式中,所述将所述LU使用的LFU淘汰算法切换为MRU淘汰算法,包括:
将所述LU的缓存中LFU淘汰算法所使用的多级链表合并为1个链表,作为所述MRU淘汰算法使用的链表。
结合第一方面至第一方面的第四种可能的实施方式,在第一方面的第九种可能的实施方式中,所述IO负载模式由第一IO负载模式变化为第二负载模式,包括:
所述IO负载模式由无特征访问模式变化为顺序访问模式;相应地,
所述将所述LU使用的所述第一IO负载模式对应的第一缓存淘汰算法切换为所述第二IO负载模式对应的第二缓存淘汰算法,包括:
将所述LU使用的自适应缓存ARC淘汰算法切换为最近最多使用MRU淘汰算法。
结合第一方面的第九种可能的实施方式,在第一方面的第十种可能的实施方式中,所述将所述LU使用的ARC淘汰算法切换为MRU淘汰算法,包括:
将所述LU的缓存中所述ARC淘汰算法所使用的第一链表和第二链表中用于存储淘汰历史记录数据的数据块丢弃,并将所述第一链表和第二链表合并为1个链表,作为所述MRU淘汰算法使用的链表;
其中,所述第一链表中用于缓存数据的数据块被访问次数为1,所述第二链表中用于缓存数据的数据块被访问次数大于或等于2。
结合第一方面至第一方面的第四种可能的实施方式,在第一方面的第十一种可能的实施方式中,所述IO负载模式由第一IO负载模式变化为第二负载模式,包括:
所述IO负载模式由顺序访问模式变化为随机访问模式;相应地,
所述将所述LU使用的所述第一IO负载模式对应的第一缓存淘汰算法切换为所述第二IO负载模式对应的第二缓存淘汰算法,包括:
将所述LU使用的最近最多使用MRU淘汰算法切换为最近最少使用LRU淘汰算法。
结合第一方面的第十一种可能的实施方式,在第一方面的第十二种可能的实施方式中,所述将所述LU使用的MRU淘汰算法切换为LRU淘汰算法,包括:
将所述LU的缓存中MRU淘汰算法所使用的链表的当前数据块淘汰方向切换为与所述当前数据块淘汰方向相反的方向。
结合第一方面至第一方面的第四种可能的实施方式,在第一方面的第十三种可能的实施方式中,所述IO负载模式由第一IO负载模式变化为第二负载模式,包括:
所述IO负载模式由聚簇访问模式变化为随机访问模式;相应地,
所述将所述LU使用的所述第一IO负载模式对应的第一缓存淘汰算法切换为所述第二IO负载模式对应的第二缓存淘汰算法,包括:
将所述LU使用的最不频繁使用LFU淘汰算法切换为最近最少使用LRU淘汰算法。
结合第一方面的第十三种可能的实施方式,在第一方面的第十四种可能的实施方式中,所述将所述LU使用的LFU淘汰算法切换为LRU淘汰算法,包括:
将所述LU的缓存中LFU淘汰算法所使用的多级链表合并为1个链表,作为所述LRU淘汰算法使用的链表。
结合第一方面至第一方面的第四种可能的实施方式,在第一方面的第十五种可能的实施方式中,所述IO负载模式由第一IO负载模式变化为第二负载模式,包括:
所述IO负载模式由无特征访问模式变化为随机访问模式;相应地,
所述将所述LU使用的所述第一IO负载模式对应的第一缓存淘汰算法切换为所述第二IO负载模式对应的第二缓存淘汰算法,包括:
将所述LU使用的自适应缓存ARC淘汰算法切换为最近最少使用LRU淘汰算法。
结合第一方面的第十五种可能的实施方式,在第一方面的第十六种可能的实施方式中,所述将所述LU使用的ARC淘汰算法切换为LRU淘汰算法,包括:
将所述LU的缓存中所述ARC淘汰算法所使用的第一链表和第二链表中用于存储淘汰历史记录数据的数据块丢弃,并将所述第一链表和第二链表合并为1个链表,作为所述LRU淘汰算法使用的链表;
其中,所述第一链表中用于缓存数据的数据块被访问次数为1,所述第二链表中用于缓存数据的数据块被访问数据大于或等于2。
结合第一方面至第一方面的第四种可能的实施方式,在第一方面的第十七种可能的实施方式中,所述IO负载模式由第一IO负载模式变化为第二负载模式,包括:
所述IO负载模式由顺序访问模式变化为聚簇访问模式;相应地,
所述将所述LU使用的所述第一IO负载模式对应的第一缓存淘汰算法切换为所述第二IO负载模式对应的第二缓存淘汰算法,包括:
将所述LU使用的最近最多使用MRU淘汰算法切换为最不频繁使用LFU淘汰算法。
结合第一方面的第十七种可能的实施方式,在第一方面的第十八种可能的实施方式中,所述将所述LU使用的最近最多使用MRU淘汰算法切换为LFU淘汰算法,包括:
遍历所述LU的缓存中MRU淘汰算法所使用链表中的数据块,将所述MRU淘汰算法所使用链表中各数据块的被访问次数置1;
创建LFU淘汰算法使用的链表;
将所述MRU淘汰算法所使用链表插入所述LFU淘汰算法使用的链表中被访问次数为1的链表节点下。
结合第一方面至第一方面的第四种可能的实施方式,在第一方面的第十九种可能的实施方式中,所述IO负载模式由第一IO负载模式变化为第二负载模式,包括:
所述IO负载模式由随机访问模式变化为聚簇访问模式;相应地,
所述将所述LU使用的所述第一IO负载模式对应的第一缓存淘汰算法切换为所述第二IO负载模式对应的第二缓存淘汰算法,包括:
将所述LU使用的LRU淘汰算法切换为LFU淘汰算法。
结合第一方面的第十九种可能的实施方式,在第一方面的第二十种可能的实施方式中,所述将所述LU使用的LRU淘汰算法切换为LFU淘汰算法,包括:
遍历所述LU的缓存中LRU淘汰算法所使用链表中的数据块,将所述LRU淘汰算法所使用链表中各数据块的被访问次数置1;
创建LFU淘汰算法使用的链表;
将所述LRU淘汰算法所使用链表插入所述LFU淘汰算法使用的链表中被访问次数为1的链表节点下。
结合第一方面至第一方面的第四种可能的实施方式,在第一方面的第二十一种可能的实施方式中,所述IO负载模式由第一IO负载模式变化为第二负载模式,包括:
所述IO负载模式由无特征访问模式变化为聚簇访问模式;相应地,
所述将所述LU使用的所述第一IO负载模式对应的第一缓存淘汰算法切换为所述第二IO负载模式对应的第二缓存淘汰算法,包括:
将所述LU使用的自适应缓存ARC淘汰算法切换为最不频繁使用LFU淘汰算法。
结合第一方面的第二十一种可能的实施方式,在第一方面的第二十二种可能的实施方式中,所述将所述LU使用的ARC淘汰算法切换为LFU淘汰算法,包括:
将所述LU的缓存中所述ARC淘汰算法所使用的第一链表和第二链表中用于存储淘汰历史记录数据的数据块丢弃,其中,所述第一链表中用于缓存数据的数据块被访问次数为1,所述第二链表中用于缓存数据的数据块被访问数据大于或等于2;
将所述第二链表中用于缓存数据的各数据块的被访问次数置2;
创建LFU淘汰算法使用的链表;
将所述第一链表插入所述LFU淘汰算法使用的链表中被访问次数为1的链表节点下,将所述第二链表插入所述LFU淘汰算法使用的链表中被访问次数为2的链表节点下。
结合第一方面至第一方面的第四种可能的实施方式,在第一方面的第二十三种可能的实施方式中,所述IO负载模式由第一IO负载模式变化为第二负载模式,包括:
所述IO负载模式由顺序访问模式变化为无特征访问模式;相应地,
所述将所述LU使用的所述第一IO负载模式对应的第一缓存淘汰算法切换为所述第二IO负载模式对应的第二缓存淘汰算法,包括:
将所述LU使用的最近最多使用MRU淘汰算法切换为自适应缓存ARC淘汰算法。
结合第一方面的第二十三种可能的实施方式,在第一方面的第二十四种可能的实施方式中,所述将所述LU使用的MRU淘汰算法切换为ARC淘汰算法,包括:
将所述LU的缓存中MRU淘汰算法所使用的链表中的数据块分为第一部分和第二部分,其中,所述第二部分被访问时间早于所述第一部分的被访问时间;
创建ARC淘汰算法使用的链表,将所述第一部分插入所述ARC淘汰算法使用的链表的第一链表中,并将所述第二部分插入所述ARC淘汰算法使用的链表的第二链表中。
结合第一方面至第一方面的第四种可能的实施方式,在第一方面的第二十五种可能的实施方式中,所述IO负载模式由第一IO负载模式变化为第二负载模式,包括:
所述IO负载模式由随机访问模式变化为无特征访问模式;相应地,
所述将所述LU使用的所述第一IO负载模式对应的第一缓存淘汰算法切换为所述第二IO负载模式对应的第二缓存淘汰算法,包括:
将所述LU使用的最近最少使用LRU淘汰算法切换为自适应缓存ARC淘汰算法。
结合第一方面的第二十五种可能的实施方式,在第一方面的第二十六种可能的实施方式中,所述将LRU淘汰算法切换为ARC淘汰算法,包括:
将所述LU的缓存中LRU淘汰算法所使用链表中的数据块分为第一部分和第二部分,其中,所述第二部分被访问时间早于所述第一部分的被访问时间;
创建ARC淘汰算法使用的链表,将所述第一部分插入所述ARC淘汰算法使用的链表的第一链表中,并将所述第二部分插入所述ARC淘汰算法使用的链表的第二链表中。
结合第一方面至第一方面的第四种可能的实施方式,在第一方面的第二十七种可能的实施方式中,所述IO负载模式由第一IO负载模式变化为第二负载模式,包括:
所述IO负载模式由聚簇访问模式变化为无特征访问模式;相应地,
所述将所述LU使用的所述第一IO负载模式对应的第一缓存淘汰算法切换为所述第二IO负载模式对应的第二缓存淘汰算法,包括:
将所述LU使用的最不频繁使用LFU淘汰算法切换为自适应缓存ARC淘汰算法。
结合第一方面的第二十七种可能的实施方式,在第一方面的第二十八种可能的实施方式中,所述将所述LU使用的LFU淘汰算法切换为ARC淘汰算法,包括:
将所述LU的缓存中LFU淘汰算法所使用链表中的数据块分为第一部分和第二部分,其中,所述第二部分被访问次数大于所述第一部分的被访问次数;
创建ARC淘汰算法使用的链表,将所述第一部分插入所述ARC淘汰算法使用的链表的第一链表中,并将所述第二部分插入所述ARC淘汰算法使用的链表的第二链表中。
本发明第二方面提供一种缓存淘汰算法切换处理装置,包括:
统计模块,用于对逻辑单元LU的输入输出IO访问信息,获取IO访问信息统计结果;
获取模块,用于根据所述IO访问信息统计结果,获取所述LU的全局IO访问特征;
确定模块,用于根据所述LU的全局IO访问特征,确定所述LU的IO负载模式由第一IO负载模式变化为第二IO负载模式;
切换模块,用于将所述LU使用的所述第一IO负载模式对应的第一缓存淘汰算法切换为所述第二IO负载模式对应的第二缓存淘汰算法。
结合第二方面,在第二方面的第一种可能的实施方式中,所述获取模块,具体用于根据所述IO访问信息统计结果,确定所述LU中各数据块的IO访问特征;根据所述LU中各数据块的IO访问特征,获取所述LU的全局IO访问特征。
结合第二方面的第一种可能的实施方式,在第二方面的第二种可能的实施方式中,所述LU中各数据块的IO访问特征,包括:所述各数据块的被访问顺序性、被访问重复度以及被访问次数。
结合第二方面的第二种可能的实施方式,在第二方面的第三种可能的实施方式中,所述各数据块的被访问顺序性,包括:顺序访问、随机访问或未知访问;其中,所述未知访问为除所述顺序访问和所述随机访问之外的IO访问。
结合第二方面的第三种可能的实施方式,在第二方面的第四种可能的实施方式中,所述获取模块,具体用于根据所述LU中各数据块的被访问顺序性,计算所述LU的全局顺序度;根据所述LU中各数据块的被访问重复度,计算所述LU的全局重复度;根据所述LU中各数据块的被访问次数,计算所述LU的全局聚簇度。
结合第二方面至第二方面的第四种可能的实施方式,在第二方面的第五种可能的实施方式中,所述切换模块,具体用于在所述IO负载模式由随机访问模式变化为顺序访问模式时,将所述LU使用的最近最少使用LRU淘汰算法切换为最近最多使用MRU淘汰算法。
结合第二方面的第五种可能的实施方式,在第二方面的第六种可能的实施方式中,所述切换模块,具体用于将所述LU的缓存中LRU淘汰算法所使用的链表的当前数据块淘汰方向切换为与所述当前数据块淘汰方向相反的方向。
结合第二方面至第二方面的第四种可能的实施方式,在第二方面的第七种可能的实施方式中,所述切换模块,具体用于在所述IO负载模式由聚簇访问模式变化为顺序访问模式时,将所述LU使用的最不频繁使用LFU淘汰算法切换为最近最多使用MRU淘汰算法。
结合第二方面的第七种可能的实施方式,在第二方面的第八种可能的实施方式中,所述切换模块,具体用于将所述LU的缓存中LFU淘汰算法所使用的多级链表合并为1个链表,作为所述MRU淘汰算法使用的链表。
结合第二方面至第二方面的第四种可能的实施方式,在第二方面的第九种可能的实施方式中,所述切换模块,具体用于在所述IO负载模式由无特征访问模式变化为顺序访问模式时,将所述LU使用的自适应缓存ARC淘汰算法切换为最近最多使用MRU淘汰算法。
结合第二方面的第九种可能的实施方式,在第二方面的第十种可能的实施方式中,所述切换模块,具体用于将所述LU的缓存中所述ARC淘汰算法所使用的第一链表和第二链表中用于存储淘汰历史记录数据的数据块丢弃,并将所述第一链表和第二链表合并为1个链表,作为所述MRU淘汰算法使用的链表;其中,所述第一链表中用于缓存数据的数据块被访问次数为1,所述第二链表中用于缓存数据的数据块被访问次数大于或等于2。
结合第二方面至第二方面的第四种可能的实施方式,在第二方面的第十一种可能的实施方式中,所述切换模块,具体用于在所述IO负载模式由顺序访问模式变化为随机访问模式时,将所述LU使用的最近最多使用MRU淘汰算法切换为最近最少使用LRU淘汰算法。
结合第二方面的第十一种可能的实施方式,在第二方面的第十二种可能的实施方式中,所述切换模块,具体用于将所述LU的缓存中MRU淘汰算法所使用的链表的当前数据块淘汰方向切换为与所述当前数据块淘汰方向相反的方向。
结合第二方面至第二方面的第四种可能的实施方式,在第二方面的第十三种可能的实施方式中,所述切换模块,具体用于在所述IO负载模式由聚簇访问模式变化为随机访问模式时,将所述LU使用的最不频繁使用LFU淘汰算法切换为最近最少使用LRU淘汰算法。
结合第二方面的第十三种可能的实施方式,在第二方面的第十四种可能的实施方式中,所述切换模块,具体用于将所述LU的缓存中LFU淘汰算法所使用的多级链表合并为1个链表,作为所述LRU淘汰算法使用的链表。
结合第二方面至第一方面的第四种可能的实施方式,在第二方面的第十五种可能的实施方式中,所述切换模块,具体用于在所述IO负载模式由无特征访问模式变化为随机访问模式时,将所述LU使用的自适应缓存ARC淘汰算法切换为最近最少使用LRU淘汰算法。
结合第二方面的第十五种可能的实施方式,在第二方面的第十六种可能的实施方式中,所述切换模块,具体用于将所述LU的缓存中所述ARC淘汰算法所使用的第一链表和第二链表中用于存储淘汰历史记录数据的数据块丢弃,并将所述第一链表和第二链表合并为1个链表,作为所述LRU淘汰算法使用的链表;其中,所述第一链表中用于缓存数据的数据块被访问次数为1,所述第二链表中用于缓存数据的数据块被访问数据大于或等于2。
结合第二方面至第二方面的第四种可能的实施方式,在第二方面的第十七种可能的实施方式中,所述切换模块,具体用于在所述IO负载模式由顺序访问模式变化为聚簇访问模式时,将所述LU使用的最近最多使用MRU淘汰算法切换为最不频繁使用LFU淘汰算法。
结合第二方面的第十七种可能的实施方式,在第二方面的第十八种可能的实施方式中,所述切换模块,具体用于遍历所述LU的缓存中MRU淘汰算法所使用链表中的数据块,将所述MRU淘汰算法所使用链表中各数据块的被访问次数置1;创建LFU淘汰算法使用的链表;将所述MRU淘汰算法所使用链表插入所述LFU淘汰算法使用的链表中被访问次数为1的链表节点下。
结合第二方面至第二方面的第四种可能的实施方式,在第二方面的第十九种可能的实施方式中,所述切换模块,具体用于在所述IO负载模式由随机访问模式变化为聚簇访问模式时,将所述LU使用的最近最少使用LRU淘汰算法切换为最不频繁使用LFU淘汰算法。
结合第二方面的第十九种可能的实施方式,在第二方面的第二十种可能的实施方式中,所述切换模块,具体用于遍历所述LU的缓存中LRU淘汰算法所使用链表中的数据块,将所述LRU淘汰算法所使用链表中各数据块的被访问次数置1;创建LFU淘汰算法使用的链表;将所述LRU淘汰算法所使用链表插入所述LFU淘汰算法使用的链表中被访问次数为1的链表节点下。
结合第二方面至第二方面的第四种可能的实施方式,在第二方面的第二十一种可能的实施方式中,所述切换模块,具体用于在所述IO负载模式由无特征访问模式变化为聚簇访问模式时,将所述LU使用的自适应缓存ARC淘汰算法切换为最不频繁使用LFU淘汰算法。
结合第二方面的第二十一种可能的实施方式,在第二方面的第二十二种可能的实施方式中,所述切换模块,具体用于将所述LU的缓存中所述ARC淘汰算法所使用的第一链表和第二链表中用于存储淘汰历史记录数据的数据块丢弃,其中,所述第一链表中用于缓存数据的数据块被访问次数为1,所述第二链表中用于缓存数据的数据块被访问数据大于或等于2;将所述第二链表中用于缓存数据的各数据块的被访问次数置2;创建LFU淘汰算法使用的链表;将所述第一链表插入所述LFU淘汰算法使用的链表中被访问次数为1的链表节点下,将所述第二链表插入所述LFU淘汰算法使用的链表中被访问次数为2的链表节点下。
结合第二方面至第二方面的第四种可能的实施方式,在第二方面的第二十三种可能的实施方式中,所述切换模块,具体用于在所述IO负载模式由顺序访问模式变化为无特征访问模式时,将所述LU使用的最近最多使用MRU淘汰算法切换为自适应缓存ARC淘汰算法。
结合第二方面的第二十三种可能的实施方式,在第二方面的第二十四种可能的实施方式中,所述切换模块,具体用于将所述LU的缓存中MRU淘汰算法所使用的链表中的数据块分为第一部分和第二部分,其中,所述第二部分被访问时间早于所述第一部分的被访问时间;创建ARC淘汰算法使用的链表,将所述第一部分插入所述ARC淘汰算法使用的链表的第一链表中,并将所述第二部分插入所述ARC淘汰算法使用的链表的第二链表中。
结合第二方面至第二方面的第四种可能的实施方式,在第二方面的第二十五种可能的实施方式中,所述切换模块,具体用于在所述IO负载模式由随机访问模式变化为无特征访问模式时,将所述LU使用的最近最少使用LRU淘汰算法切换为自适应缓存ARC淘汰算法。
结合第二方面的第二十五种可能的实施方式,在第二方面的第二十六种可能的实施方式中,所述切换模块,具体用于将所述LU的缓存中LRU淘汰算法所使用链表中的数据块分为第一部分和第二部分,其中,所述第二部分被访问时间早于所述第一部分的被访问时间;创建ARC淘汰算法使用的链表,将所述第一部分插入所述ARC淘汰算法使用的链表的第一链表中,并将所述第二部分插入所述ARC淘汰算法使用的链表的第二链表中。
结合第二方面至第二方面的第四种可能的实施方式,在第二方面的第二十七种可能的实施方式中,所述切换模块,具体用于在所述IO负载模式由聚簇访问模式变化为无特征访问模式时,将所述LU使用的LFU淘汰算法切换为自适应缓存ARC淘汰算法。
结合第二方面的第二十七种可能的实施方式,在第二方面的第二十八种可能的实施方式中,所述切换模块,具体用于将所述LU的缓存中LFU淘汰算法所使用链表中的数据块分为第一部分和第二部分,其中,所述第二部分被访问次数大于所述第一部分的被访问次数;创建ARC淘汰算法使用的链表,将所述第一部分插入所述ARC淘汰算法使用的链表的第一链表中,并将所述第二部分插入所述ARC淘汰算法使用的链表的第二链表中。
本发明第三方面提供一种缓存淘汰算法切换处理装置所述处理装置包括中央处理器和内存,所述中央处理器和所述内存通过总线通信,所述内存中存储计算机指令,当所述中央处理器执行所述内存中存储的计算机指令时,执行上述第一方面任一实施方式中的方法。
本发明实施例中,通过统计对LU的IO访问信息,进而获取LU的全局IO访问特征,根据LU的全局IO访问特征确定LU的IO负载模式由第一负载模式变化为第二IO负载模式,于是将LU使用的第一IO负载模式对应的第一淘汰算法切换为上述第二IO负载模式对应的第二缓存淘汰算法,实现了根据IO负载模式自适应的匹配合适的淘汰算法,并完成切换,进而摆脱场景局限性,保证了缓存的运行效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明提供的缓存淘汰算法切换处理方法实施例一的流程示意图;
图2为本发明提供的缓存淘汰算法切换处理方法实施例二的缓存链表示意图;
图3为本发明提供的缓存淘汰算法切换处理方法实施例三的缓存链表示意图;
图4为本发明提供的缓存淘汰算法切换处理方法实施例四的缓存链表示意图;
图5为本发明提供的缓存淘汰算法切换处理方法实施例五的缓存链表示意图;
图6为本发明提供的缓存淘汰算法切换处理方法实施例六的缓存链表示意图;
图7为本发明提供的缓存淘汰算法切换处理方法实施例七的缓存链表示意图;
图8为本发明提供的缓存淘汰算法切换处理方法实施例八的缓存链表示意图;
图9为本发明提供的缓存淘汰算法切换处理方法实施例九的缓存链表示意图;
图10为本发明提供的缓存淘汰算法切换处理方法实施例十的缓存链表示意图;
图11为本发明提供的缓存淘汰算法切换处理方法实施例十一的缓存链表示意图;
图12为本发明提供的缓存淘汰算法切换处理方法实施例十二的缓存链表示意图;
图13为本发明提供的缓存淘汰算法切换处理装置实施例一的结构示意图;
图14为本发明提供的缓存淘汰算法切换处理装置实施例二的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例的公式中“*”表示乘号,“/”表示除号。
常见的IO负载模式有:顺序访问模式、随机访问模式、聚簇访问模式等,同一逻辑单元(Logical Unit,简称LU)中所承载的IO负载因访问场景、访问时间、访问习惯、用户数等因素而差异巨大,可能随这些因素而导致IO负载模式变化。本发明实施例提出的方法就是为了实现根据IO负载模式的不同,自适应且无缝切换到最合适的Cache淘汰算法。
图1为本发明提供的缓存淘汰算法切换处理方法实施例一的流程示意图,如图1所示,该方法包括:
S101、统计对LU的IO访问信息,获取IO访问信息统计结果。
具体地,可以是按照感知时间窗周期性地进行统计。该对LU的IO访问信息包括:感知时间窗内对该LU进行的IO访问的访问类型、访问区域、IO访问次数、访问时间等。
将LU以固定大小如4MB切分为连续数据块,切分后得到数据块(chunk),以数据块为对象对IO访问行为进行统计。统计过程中,还对IO行为特征的感知,具体地,按照感知时间窗来进行,即基于一个感知时间窗内数据块上IO访问行为感知出该数据块的相关特性信息,下一个感知时间窗再重新进行感知,就可以感知出该数据块上IO访问行为是否发生变化。
感知过程中获得的信息为感知元数据,该感知元数据包括:数据块标识(Identity,简称ID)、页面位图、时间戳、访问总数据量以及访问次数等。其中,数据块ID用于标识上述LU空间切分后的数据块,一个数据块中可以包括多个页面,假设一个数据块的大小为4兆字节(MB),可以用chunk0标识LU中的[0-4MB)地址空间,chunk1标识LU中的[4-8MB),以此类推。页面位图信息用于标识数据块内哪些页面被访问过。时间戳用于记录数据块在上述感知时间窗内首次被访问的时间以及最近一次被访问的时间,并在每次IO访问该数据块时刷新最近访问时间戳。如果最近访问时间戳与数据块首次访问时间戳所记录的时间差超过上述感知时间窗,则启动数据块局部感知,即对各数据块进行感知。访问总数据量,即某数据块在上述感知时间窗内所有IO访问数据大小的总和,可用于计算平均IO访问大小。访问次数,即某数据块在一个感知时间窗内IO访问的次数。
S102、根据上述IO访问信息统计结果,获取上述LU的全局IO访问特征。
其中,全局IO访问特征,即整个LU的访问特征。
S103、根据上述LU的全局IO访问特征,确定上述LU的IO负载模式由第一IO负载模式变化为第二IO负载模式。
由于S101中的统计是采用上述感知时间窗周期性地进行,根据每个感知时间窗获取的统计结果,获取对应的全局IO访问特征,就可以确定当前的IO负载模式,再跟之前的IO负载模式进行比较,就可以确定出IO负载模式是否发生变化。
本发明实施例中,IO负载模式主要包括:顺序访问模式、随机访问模式、聚簇访问模式以及无特征访问模式,其中,无特征访问模式为除顺序访问模式、随机访问模式、聚簇访问模式之外的访问模式,即将除这三种访问模式之外的访问模式统称为无特征访问模式。
S104、将上述LU使用的第一IO负载模式对应的第一淘汰算法切换为上述第二IO负载模式对应的第二缓存淘汰算法。
具体地,针对不同的IO负载模式,确定适合的淘汰算法,再根据LU的全局IO访问特征,确定了上述LU的IO负载模式发生变化后,就切换到对应的淘汰算法。例如顺序访问模式下,选择MRU淘汰算法较优,那么当确定IO负载模式变化为顺序访问模式后,将淘汰算法切换为MRU淘汰算法,当然,如果当前使用的就是MRU淘汰算法则无需切换。
本实施例中,通过统计对LU的IO访问信息,进而获取LU的全局IO访问特征,根据LU的全局IO访问特征确定LU的IO负载模式由第一负载模式变化为第二IO负载模式,于是将第一IO负载模式对应的第一淘汰算法切换为上述第二IO负载模式对应的第二缓存淘汰算法,实现了根据IO负载模式自适应的匹配合适的淘汰算法,并完成切换,进而摆脱场景局限性,保证了缓存的运行效率。
进一步地,上述根据上述IO访问信息统计结果,获取上述LU的全局IO访问特征,具体可以为:根据IO访问信息统计结果,确定上述LU中各数据块的访问特征;然后,根据上述LU中各数据块的IO访问特征,获取上述LU的全局IO访问特征。
其中,上述各数据块的访问特征,可以包括:各数据块的被访问顺序性、被访问重复度以及被访问次数。以便后续使用这些数据获取全局IO访问特征。
更具体地,上述各数据块的被访问顺序性可以具体为顺序访问、随机访问或未知访问。其中,未知访问为除顺序访问、随机访问之外的IO访问。
具体实现过程中,根据前述访问信息统计结果,针对具体的某个数据块,可以预设满足下述两个条件中任一个则确定该数据块中为顺序访问:(1)上述感知时间窗内,该数据块内的IO访问次数大于或等于预设个数(例如200个),且这些IO的所访问的区域之间的间距小于或等于预设个数的扇区(例如8个扇区)。需要说明的是,如果两个被访问的区域之间的间隔为5个扇区,说明这5个扇区在上述预设时间内没有被访问过。(2)上述感知时间窗内,该数据块内的访问覆盖率大于或等于75%。即该数据块内大于或等于75%的空间被访问,假设该数据块的大小为4MB,那么预设时间内该数据块内被访问过的空间大于或等于3MB。其中,访问覆盖率可以根据访问信息中的访问区域等信息来获取。
具体实现过程中,根据前述访问信息统计结果,针对具体的某个数据块,先确定该数据块在上述感知时间窗内访问覆盖率大于等于10%且小于等于75%,如果满足此条件则进一步判断是否满足下述三个条件中任一个,若满足其中任一个则确定该数据块中为随机访问:(1)上述感知时间窗内,该数据块内的多个访问IO之间的最大间距大于预设间距(如256KB)。(2)上述感知时间窗内,该数据块内的多个访问IO之间的平均间距大于预设平均间距(如32KB)。(3)上述感知时间窗内,该数据块内的多个访问IO中非顺序IO的个数大于预设个数(如8个)。
当然,并不以上述确定顺序性的方法为限,可以根据具体的应用进行调整。
进一步地,对于各数据块的被访问重复度的计算,可以是根据IO访问信息统计结果,获取上述感知时间窗内每个数据块中访问总数据量,具体一个数据块的访问总数量记为IOSize。并统计每个数据块被访问数据的覆盖范围,其中不包含重复访问部分,记为:ckRange,假设有两次访问都读取某数据块中的“0-1M”位置,则该数据块的ckRange为1M。最后,计算各数据块的被访问重复度,具体某个数据块的被访问重复度(ckRepeatSize)为:ckRepeatSize=ioSize–ckRange。
进一步地,上述根据各数据块的IO访问特征,获取上述LU的全局IO访问特征,具体有3个方面,这3方面的计算没有先后顺序之分:
(1)根据上述LU中各数据块的被访问顺序性,计算该LU的全局顺序度。统计上述预设时间段内,该LU中确定被访问顺序性为顺序访问的数据块的个数、确定被访问顺序性为随机访问的数据块的个数,然后进行计算,全局顺序度=(顺序访问的数据块的个数*100)/(随机访问的数据块的个数+顺序访问的数据块的个数)。需要说明的是,在统计过程中,对于不符合顺序访问特征也不符合随机访问特征的数据块,也作为随机访问的数据块,并代入公式进行计算。
(2)根据上述LU中各数据块的被访问重复度,计算上述LU的全局重复度。具体为统计该LU中数据块的总个数n,然后根据前述各数据块在预设时间段内的被访问重复度(ckRepeatSize)以及被访问数据的覆盖范围(ckRange)进行计算。其中该LU总的被访问数据的覆盖范围totalCkRange=ckRange1+…+ckRangen,其中ckRange1表示该LU中数据块1的被访问数据的覆盖范围,以此类推。该LU总的被访问重复度totalCkRepeatSize=ckRepeatSize1+…+ckRepeatSizen,其中ckRepeatSize1表示该LU中数据块1的重复度,以此类推。进而,上述LU的全局重复度LURepeatRatio=(totalCkRepeatSize*100)/totalCkRange。
(3)根据上述各LU中各数据块的被访问次数,计算上述LU的全局聚簇度。具体为统计该LU中数据块的总个数n,以及每个数据块的被访问次数。然后,先计算LU中所有数据块的平均被访问数:其中X1表示该LU中数据块1的被访问次数,以此类推。然后计算该LU中所有数据块被访问次数的均方差(即聚簇度):后续步骤中,将均方差与预设阈值进行比较,若大于预设阈值,则表明对缓存中某些数据块的反复访问情形比较突出,即对缓存的访问呈现出局部高度点特征,也就是聚簇访问特征,可以确定IO负载模式为聚簇访问模式。
更进一步地,根据LU的全局IO访问特征,确定LU的IO负载模式由第一IO负载模式变化为第二IO负载模式,可以是根据LU的全局IO访问特征确定上述LU的当前IO负载模式,进而确定当前IO负载模式为第二IO负载模式,而前次确定的IO负载模式为第一IO负责模式,则确定由第一IO负载模式变化为第二IO负载模式,具体地:
1)全局顺序度大于第一预设阈值时,确定LU的当前IO负载模式为顺序访问模式。或者,
2)全局顺序度小于第二预设阈值且全局重复度小于第三预设阈值时,确定LU的当前IO负载模式为随机访问模式。或者,
3)全局顺序度小于第四预设阈值且全局聚簇度大于第五预设阈值时,确定上述LU的当前IO负载模式为聚簇访问模式。
另外,不满足上述这些条件的,在本发明实施例中作为无特征访问模式。需要说明的是,上述第二预设阈值小于第一预设阈值,且,第四预设阈值也小于第一预设阈值,其中,第二预设阈值和第四预设阈值可以相等。需要说明的是,本实施例中可以以上述感知时间窗为周期确定IO负载模式是否发生变化。
举例说明,可以按照表1中的预设策略确定缓存淘汰算法,但并不以此为限。
表1
IO负载模式 全局IO访问特征 Cache淘汰算法
顺序访问模式 顺序度>65% MRU淘汰算法
随机访问模式 顺序度<35%且重复度<35% LRU淘汰算法
聚簇访问模式 顺序度<35%且聚簇度>1000 LFU淘汰算法
无特征访问模式 其它 ARC淘汰算法
图2为本发明提供的缓存淘汰算法切换处理方法实施例二的缓存链表示意图;图3为本发明提供的缓存淘汰算法切换处理方法实施例三的缓存链表示意图;图4为本发明提供的缓存淘汰算法切换处理方法实施例四的缓存链表示意图;图5为本发明提供的缓存淘汰算法切换处理方法实施例五的缓存链表示意图;图6为本发明提供的缓存淘汰算法切换处理方法实施例六的缓存链表示意图;图7为本发明提供的缓存淘汰算法切换处理方法实施例七的缓存链表示意图;图8为本发明提供的缓存淘汰算法切换处理方法实施例八的缓存链表示意图;图9为本发明提供的缓存淘汰算法切换处理方法实施例九的缓存链表示意图;图10为本发明提供的缓存淘汰算法切换处理方法实施例十的缓存链表示意图;图11为本发明提供的缓存淘汰算法切换处理方法实施例十一的缓存链表示意图;图12为本发明提供的缓存淘汰算法切换处理方法实施例十二的缓存链表示意图。
需要说明的是,在这些链表示意图中标有“p1”、“p2”等的小格子表示具体地一个数据块。
进一步地,在确定当前IO负载模式由第一IO负载模式变化为第二负载模式后,要将当前第一IO负载模式对应的第一缓存淘汰算法切换为第二IO负载模式对应的第二缓存淘汰算法,具体为:
1)IO负载模式由第一IO负载模式变化为第二负载模式为:IO负载模式由随机访问模式变化为顺序访问模式,相应地,上述将LU使用的第一IO负载模式对应的第一缓存淘汰算法切换为第二IO负载模式对应的第二缓存淘汰算法为:将LU使用的LRU淘汰算法切换为MRU淘汰算法。
更具体地,将LU使用的LRU淘汰算法切换为MRU淘汰算法可以是:将LU的缓存中LRU淘汰算法所使用的链表的当前数据块淘汰方向切换为与该当前数据块淘汰方向相反的方向。参照图2,链表01表示LRU淘汰算法中的链表,其中靠近“表头”的数据块被访问的时间早于靠近表尾的数据块,某数据块被再次访问后,该数据块会插入表尾,即在LRU淘汰算法中,从表尾方向插入最新被访问的数据,并从表头方向淘汰数据,即优先淘汰最久未被访问的数据;而MRU淘汰算法是将最近访问的对象优先淘汰,因而从LRU淘汰算法切换到MRU淘汰算法时,只需要将淘汰的方向切换为从表尾方向淘汰即可,链表中其它内容都无需作任何处理,即切换为如链表02所示的MRU链表,可以实现自动、快速、无缝的切换。
2)IO负载模式由第一IO负载模式变化为第二负载模式为:IO负载模式由聚簇访问模式变化为顺序访问模式。相应地,上述将LU使用的第一IO负载模式对应的第一缓存淘汰算法切换为第二IO负载模式对应的第二缓存淘汰算法为:将LU使用的LFU淘汰算法切换为MRU淘汰算法。更具体地,将LFU淘汰算法切换为MRU淘汰算法可以是:将LU的缓存中LFU淘汰算法所使用的多级链表合并为1个链表,将合并后的链表作为MRU淘汰算法使用的链表。参照图3,举例说明,LFU淘汰算法使用的链表11可以包括二级,其中一级为链表头链表,包括:一个二级链表头,和多个不同访问次数的链表表头节点(例如“ref=1”节点、“ref=2”节点);二级链表挂载具有相同访问次数的数据块节点集。如图3中,“ref=1”表示这一链表中所有数据块中的数据都是新插入缓存、且被访问次数为1的数据块节点,其中任一个数据块被访问命中后,需要更新到访问次数为2的链表,例如“ref=1”链表中数据块“P9”被访问命中,则将“P9”从“ref=1”链表中移除,插入“ref=2”链表中“P4”下面,需要说明的是,如果此时不存在“ref=2”链表头,则先创建再插入;同样,如“ref=2”链表中“P3”被访问命中,则将“P3”从“ref=2”链表中移除,插入“ref=3”链表中“P1”下面。淘汰时从访问次数最少的链表(一般从“ref=1”链表)的表头处淘汰一个数据块节点。切换合并LFU链表时,依次将后一访问次数链表中的首节点挂接在前一访问次数链表最后一个节点后面,例如将“ref=2”链表中的首个数据块挂接在“ref=1”链表最后的数据块后面,具体地将“P2”挂接在“P10”后面。具体实现过程中,合并链表操作需要加锁保护,参照上例,合并过程中只需要对多个二级链表的表头节点重新链接,因而只需花费很短的时间。合并后的链表12使用MRU淘汰算法进行管理,插入、淘汰都从表尾进行。
3)IO负载模式由第一IO负载模式变化为第二负载模式为:IO负载模式由无特征访问模式变化为顺序访问模式。相应地,上述将LU使用的当前第一IO负载模式对应的第一缓存淘汰算法切换为第二IO负载模式对应的第二缓存淘汰算法为:将LU使用的ARC淘汰算法切换为MRU淘汰算法。更具体地,将LU使用的ARC淘汰算法切换为MRU淘汰算法可以是:将LU的缓存中ARC淘汰算法所使用的第一链表和第二链表中用于存储淘汰历史记录数据的数据块丢弃,并将该第一链表和第二链表中合并为1个链表,作为MRU淘汰算法使用的链表。需要说明的是第一链表中用于缓存数据的数据块(如图4中的T1部分)被访问次数为1,第二链表中用于缓存数据的数据块(如图4中的T2部分)被访问数据大于或等于2。参照图4,即ARC淘汰算法所使用的链表具体包括两个LRU链表,其中第一链表21中T1部分的数据块都是新插入且被访问次数为1的数据块,第二链表22中的数据块是被访问次数大于或等于2的数据块。如图4中第一链表21中的B1对应的2个数据块和第二链表22中的B2对应的2个数据块是用于保存淘汰历史记录数据的。在MRU淘汰算法使用的链表中不保存淘汰历史记录数据,合并时将B1和B2对应的数据块丢弃,第一链表21中的数据块节点间相对位置保持不变,如图4中的P8、P9、P10的位置不变,然后将第一链表中靠近原链表表头的数据块节点(如P8)链接到第二链表22中靠近链表尾部数据块节点(如P7)上,合并得到如图4所示的链表23。
4)IO负载模式由第一IO负载模式变化为第二负载模式为:IO负载模式由顺序访问模式变化为随机访问模式。相应地,上述将LU使用的第一IO负载模式对应的第一缓存淘汰算法切换为第二IO负载模式对应的第二缓存淘汰算法为:将LU使用的MRU淘汰算法切换为LRU淘汰算法。
具体地,参照图2,将LU使用的MRU淘汰算法切换为LRU淘汰算法可以是:将LU的缓存中MRU淘汰算法所使用的链表02的当前数据块淘汰方向切换为与当前数据块淘汰方向相反的方向,得到LRU淘汰算法链表01。与前述LRU淘汰算法切换到MRU淘汰算法类似,只需改变数据淘汰的方向即可。
5)IO负载模式由第一IO负载模式变化为第二负载模式为:IO负载模式由聚簇访问模式变化为随机访问模式。相应地,上述将LU使用的第一IO负载模式对应的第一缓存淘汰算法切换为第二IO负载模式对应的第二缓存淘汰算法为:将LU使用的LFU淘汰算法切换为MRU淘汰算法。具体地,将LU使用的LFU淘汰算法切换为MRU淘汰算法可以是:将LU的缓存中LFU淘汰算法所使用的多级链表合并为1个链表,作为LRU淘汰算法使用的链表。参照图5,举例说明,LFU淘汰算法对应的链表31可以包括二级,其中一级为链表头链表,包括:一个二级链表头,和多个不同访问次数的链表表头节点(例如“ref=1”节点、“ref=2”节点);二级链表挂载具有相同被访问次数的数据块节点集。如图5中,包括3个不同访问次数的二级链表,“ref=1”链表中所有数据块都是新插入且被访问次数为1的。合并时,依次将后一访问次数链表挂接在前一访问次数链表后,例如将“ref=2”链表中的数据块挂接在“ref=1”链表表后,像将“P4”接在“P5”后面。具体实现过程中,合并链表操作需要加锁保护。
6)IO负载模式由第一IO负载模式变化为第二负载模式为:IO负载模式由无特征访问模式变化为随机访问模式。相应地,上述将LU使用的第一IO负载模式对应的第一缓存淘汰算法切换为第二IO负载模式对应的第二缓存淘汰算法为:将LU使用的ARC淘汰算法切换为LRU淘汰算法。具体地,将LU使用的ARC淘汰算法切换为LRU淘汰算法可以是:将LU的缓存中ARC淘汰算法所使用的第一链表和第二链表中用于存储淘汰历史记录数据的数据块丢弃,并将上述第一链表和第二链表中合并为1个链表,作为上述LRU淘汰算法使用的链表。需要说明的是第一链表中用于缓存数据的数据块(如图6中的T1部分)被访问次数为1,第二链表中用于缓存数据的数据块(如图6中的T2部分)被访问数据大于或等于2。参照图6,第一链表41中B1对应的2个数据块和第二链表42中的B2对应的2个数据块是用于保存淘汰历史记录数据的。在LRU淘汰算法中不保存淘汰历史记录数据,合并时将B1和B2对应的数据块丢弃,第一链表41中的T1部分对应的数据块节点间相对位置保持不变,如图6中的P8、P9、P10的位置不变,然后将第一链表41靠近原链表表头的数据块节点(如P8)接到第二链表42中靠近链表尾部数据块节点(如P7)上,合并得到如图6所示的链表43。
7)IO负载模式由第一IO负载模式变化为第二负载模式为:IO负载模式由顺序访问模式变化为聚簇访问模式。相应地,上述将LU使用的第一IO负载模式对应的第一缓存淘汰算法切换为第二IO负载模式对应的第二缓存淘汰算法为:将LU使用的MRU淘汰算法切换为LFU淘汰算法。具体地,将LU使用的MRU淘汰算法切换为LFU淘汰算法可以是:先遍历LU的缓存中MRU淘汰算法所使用链表中的数据块,将该MRU淘汰算法所使用链表中各数据块的被访问次数置1,然后创建LFU淘汰算法使用的链表,将MRU淘汰算法所使用链表插入该LFU淘汰算法使用的链表中被访问次数为1的链表节点下。如图7所示,遍历链表71中的所有数据块,将这些数据块的访问次数都设为1,初始创建的LFU淘汰算法使用的链表72为一个二级链表,且只包括“ref=1”链表,将原MRU淘汰算法链表整体插入到“ref=1”节点下。当然,完全切换到LFU淘汰算法后,根据IO访问的具体情况,可以逐步向后延伸出其它被访问次数的链表,例如“ref=2”、“ref=3”等对应的链表。
8)IO负载模式由第一IO负载模式变化为第二负载模式为:IO负载模式由随机访问模式变化为聚簇访问模式。相应地,上述将LU使用的第一IO负载模式对应的第一缓存淘汰算法切换为第二IO负载模式对应的第二缓存淘汰算法为:将LU使用的LRU淘汰算法切换为MRU淘汰算法。具体地,将LU使用的LRU淘汰算法切换为MRU淘汰算法可以是:先遍历LU的缓存中LRU淘汰算法所使用链表中的数据块,将LRU淘汰算法所使用链表中各数据块的被访问次数置1,进而创建LFU淘汰算法使用的链表,将上述LRU淘汰算法所使用链表插入该LFU淘汰算法使用的链表中被访问次数为1的链表节点下。参照图8,遍历链表81中的所有数据块,将这些数据块的被访问次数都设为1,初始创建的LFU淘汰算法使用的链表82只是一个二级链表,且只包括“ref=1”链表,将MRU淘汰算法所使用链表整体插入到“ref=1”节点下。当然,完全切换到LFU淘汰算法后,根据IO访问的具体情况,可以逐步向后延伸出其它被访问次数的链表,例如“ref=2”、“ref=3”等对应的链表。
9)IO负载模式由第一IO负载模式变化为第二负载模式为:IO负载模式由无特征访问模式变化为聚簇访问模式。相应地,上述将LU使用的第一IO负载模式对应的第一缓存淘汰算法切换为第二IO负载模式对应的第二缓存淘汰算法为:将LU使用的ARC淘汰算法切换为MRU淘汰算法。具体地,将LU使用的ARC淘汰算法切换为MRU淘汰算法可以是:将LU的缓存中ARC淘汰算法所使用的第一链表和第二链表中用于存储淘汰历史记录数据的数据块丢弃,需要说明的是,原来第一链表中用于缓存数据的数据块(如图9中的T1部分)被访问次数为1,第二链表中用于缓存数据的数据块(如图9中的T2部分)被访问数据大于或等于2;将上述第二链表中用于缓存数据的各数据块(如图9中的T2部分)的被访问次数置2,进而创建LFU淘汰算法使用的链表;将上述第一链表插入LFU淘汰算法使用的链表中被访问次数为1的链表节点下,此时的第一链表中不包括B1对应的数据块,且其中各数据块的被访问次数为1;将上述第二链表插入该LFU淘汰算法使用的链表中被访问次数为2的链表节点下,此时的第二链表中不包括B2对应的数据块,且其中各数据块的被访问次数为2。参照图9,第一链表91中的B1对应的2个数据块和第二链表92中的B2对应的2个数据块是用于保存淘汰历史记录数据的。合并时,将B1和B2对应的数据块丢弃,然后将第二链表92中的T2部分数据块的被访问次数都设为2,初始创建的LFU包含“ref=1”链表和“ref=2”链表,将第一链表91插入到“ref=1”节点下,具体地,P8、P9、P10整体插入“ref=1”节点下,将第二链表92插入“ref=2”节点下,具体地,P4、P5、P6、P7整体插入“ref=2”节点下。当然,完全切换到LFU淘汰算法后,根据IO访问的具体情况,可以逐步向后延伸出其它访问次数的链表。
10)IO负载模式由第一IO负载模式变化为第二负载模式为:IO负载模式由顺序访问模式变化为无特征访问模式。相应地,上述将LU使用的第一IO负载模式对应的第一缓存淘汰算法切换为第二IO负载模式对应的第二缓存淘汰算法为:将LU使用的MRU淘汰算法切换为ARC淘汰算法。其中,本发明实施例中,无特征访问模式为除顺序访问模式、随机访问模式、聚簇访问模式之外的访问模式,即将这些访问模式之外那些没有明显特征的访问统称为无特征访问模式。
具体地,将LU使用的MRU淘汰算法切换为ARC淘汰算法可以是:将LU的缓存中MRU淘汰算法所使用链表中的数据块分为第一部分和第二部分,其中,上述第二部分的数据块被访问时间早于第一部分的数据块被访问时间;进而创建ARC淘汰算法使用的链表,将上述第一部分插入上述ARC淘汰算法使用的链表的第一链表中,并将上述第二部分插入上述ARC淘汰算法使用的链表的第二链表中。一般地,在划分MRU淘汰算法使用的链表中的数据块时采用平均划分的方法,但如果MRU淘汰算法使用的链表中的数据块个数为奇数时,第一部分比第二部分多一个数据块或少一个数据块可以根据情况具体规定,在此不作限定。如图10所示,在MRU淘汰算法链表001中,靠近表头侧的数据块被访问时间较早,分为两部分后,靠近表头的那部分(如图10中所示的T2部分)插入到创建的ARC淘汰算法使用的第二链表003中,另一部分(如图10中所示的T1部分)插入第一链表002中,切换过程中ARC淘汰算法链表暂时没有淘汰历史数据,B1、B2为空。
11)IO负载模式由第一IO负载模式变化为第二负载模式为:IO负载模式由随机访问模式变化为无特征访问模式。相应地,上述将LU使用的第一IO负载模式对应的第一缓存淘汰算法切换为第二IO负载模式对应的第二缓存淘汰算法为:将LU使用的LRU淘汰算法切换为MRU淘汰算法。具体地,将LU使用的LRU淘汰算法切换为MRU淘汰算法可以是:将LU的缓存中LRU淘汰算法所使用链表中的数据块分为第一部分和第二部分,其中,上述第二部分的数据块被访问时间早于第一部分的数据块被访问时间;进而创建ARC淘汰算法使用的链表,将上述第一部分插入上述ARC淘汰算法使用的链表的第一链表中,并将上述第二部分插入上述ARC淘汰算法使用的链表的第二链表中。一般地,在划分LRU淘汰所使用链表中的数据块时采用平均划分的方法,但如果LRU淘汰所使用链表中的数据块个数为奇数时,第一部分比第二部分多一个数据块或少一个数据块可以根据情况具体规定,在此不作限定。如图11所示,在LRU淘汰算法所使用的链表111中,靠近表头侧的数据块被访问时间较早,分为两部分后,靠近表头的那部分(如图11中所示的T2部分:P4、P5、P6、P7)插入到创建的ARC淘汰算法使用的第二链表113中,另一部分(如图11中所示的T2部分:P8、P9、P10)插入第一链表112中,切换过程中ARC淘汰算法使用的链表暂时没有淘汰历史数据,B1、B2为空。
12)IO负载模式由第一IO负载模式变化为第二负载模式为:IO负载模式由聚簇访问模式变化为无特征访问模式。相应地,上述将LU使用的第一IO负载模式对应的第一缓存淘汰算法切换为第二IO负载模式对应的第二缓存淘汰算法为:将LU使用的LFU淘汰算法切换为MRU淘汰算法。具体地,将LU使用的LFU淘汰算法切换为MRU淘汰算法可以是:将LU的缓存中LFU淘汰算法所使用链表中的数据块分为第一部分和第二部分,其中第二部分的数据块被访问次数大于第一部分的数据块被访问次数。具体划分时,将该LFU淘汰算法所使用链表中被访问次数相同的数据块划分在同一部分中,即被访问次数相同的数据块要么都划分在第一部分,要么都划分在第二部分。进而创建ARC淘汰算法链表,将上述第一部分插入上述ARC淘汰算法链表的第一链表中,并将上述第二部分插入上述ARC淘汰算法链表的第二链表中。如图12所示,LFU淘汰算法使用的二级链表121包括“ref=1”链表和“ref=2”链表,数据在进行划分时,要将同一被访问次数的数据块分到同一部分,例如“ref=1”链表中的P8、P9、P10不会分开到两部分,以图12为例,“ref=1”链表中的数据块(如图12所示的T1部分)插入到新的ARC淘汰算法使用的第一链表122中,而“ref=2”链表中的数据块(如图12所示的T2部分)插入到新的ARC淘汰算法使用的第二链表123中。
图13为本发明提供的缓存淘汰算法切换处理装置实施例一的结构示意图,如图13所示,该装置包括:统计模块1301、获取模块1302、确定模块1303和切换模块1304。其中:
统计模块1301,用于统计对逻辑单元LU的输入输出IO访问信息,获取IO访问信息统计结果。
获取模块1302,用于根据所述IO访问信息统计结果,获取所述LU的全局IO访问特征。
确定模块1303,用于根据所述LU的全局IO访问特征,确定所述LU的IO负载模式由第一IO负载模式变化为第二IO负载模式。
切换模块1304,用于将所述LU使用的所述第一IO负载模式对应的第一缓存淘汰算法切换为所述第二IO负载模式对应的第二缓存淘汰算法。
进一步地,获取模块1302,用于根据所述IO访问信息统计结果,确定所述LU中各数据块的IO访问特征;根据所述LU中各数据块的IO访问特征,获取所述LU的全局IO访问特征。
所述LU中各数据块的IO访问特征,包括:所述各数据块的被访问顺序性、被访问重复度以及被访问次数。
所述各数据块的被访问顺序性,包括:顺序访问、随机访问或未知访问;其中,所述未知访问为除所述顺序访问和所述随机访问之外的IO访问。
在上述实施例的基础上,获取模块1302,具体用于根据所述LU中各数据块的被访问顺序性,计算所述LU的全局顺序度;根据所述LU中各数据块的被访问重复度,计算所述LU的全局重复度;根据所述LU中各数据块的被访问次数,计算所述LU的全局聚簇度。
所述IO负载模式,包括:顺序访问模式、随机访问模式、聚簇访问模式以及无特征访问模式,其中,所述无特征访问模式为除顺序访问模式、随机访问模式、聚簇访问模式之外的访问。
切换模块1304,具体用于在所述IO负载模式由所述随机访问模式变化为所述顺序访问模式时,将所述LU使用的最近最少使用LRU淘汰算法切换为最近最多使用MRU淘汰算法。更具体地,切换模块1304,将所述LU的缓存中LRU淘汰算法所使用的链表的当前数据块淘汰方向切换为与所述当前数据块淘汰方向相反的方向。
切换模块1304,具体用于在所述IO负载模式由所述聚簇访问模式变化为所述顺序访问模式时,将所述LU使用的最不频繁使用LFU淘汰算法切换为最近最多使用MRU淘汰算法。更具体地,切换模块1304,将所述LU的缓存中LFU淘汰算法所使用的多级链表合并为1个链表,作为所述MRU淘汰算法使用的链表。
切换模块1304,具体用于在所述IO负载模式由所述无特征访问模式变化为所述顺序访问模式时,将所述LU使用的ARC淘汰算法切换为MRU淘汰算法。更具体地,切换模块1304,将所述LU的缓存中所述ARC淘汰算法所使用的第一链表和第二链表中用于存储淘汰历史记录数据的数据块丢弃,并将所述第一链表和第二链表合并为1个链表,作为所述MRU淘汰算法使用的链表;其中,所述第一链表中用于缓存数据的数据块被访问次数为1,所述第二链表中用于缓存数据的数据块被访问次数大于或等于2。
切换模块1304,具体用于在所述IO负载模式由所述顺序访问模式变化为所述随机访问模式时,将所述LU使用的最近最多使用MRU淘汰算法切换为最近最少使用LRU淘汰算法。更具体地,切换模块1304,将所述LU的缓存中MRU淘汰算法所使用的链表的当前数据块淘汰方向切换为与所述当前数据块淘汰方向相反的方向。
切换模块1304,具体用于在所述IO负载模式由所述聚簇访问模式变化为所述随机访问模式时,将所述LU使用的最不频繁使用LFU淘汰算法切换为最近最少使用LRU淘汰算法。更具体地,切换模块1304,将所述LU的缓存中LFU淘汰算法所使用的多级链表合并为1个链表,作为所述LRU淘汰算法使用的链表。
切换模块1304,具体用于在所述IO负载模式由所述无特征访问模式变化为所述随机访问模式时,将所述LU使用的ARC淘汰算法切换为LRU淘汰算法。更具体地,切换模块1304,将所述LU的缓存中所述ARC淘汰算法所使用的第一链表和第二链表中用于存储淘汰历史记录数据的数据块丢弃,并将所述第一链表和第二链表合并为1个链表,作为所述LRU淘汰算法使用的链表;其中,所述第一链表中用于缓存数据的数据块被访问次数为1,所述第二链表中用于缓存数据的数据块被访问数据大于或等于2。
切换模块1304,具体用于在所述IO负载模式由所述顺序访问模式变化为所述聚簇访问模式时,将所述LU使用的最近最多使用MRU淘汰算法切换为最不频繁使用LFU淘汰算法。更具体地,切换模块1304,具体用于遍历所述LU的缓存中MRU淘汰算法所使用链表中的数据块,将所述MRU淘汰算法所使用链表中各数据块的被访问次数置1;创建LFU淘汰算法使用的链表;将所述MRU淘汰算法所使用链表插入所述LFU淘汰算法使用的链表中被访问次数为1的链表节点下。
切换模块1304,具体用于在所述IO负载模式由所述随机访问模式变化为所述聚簇访问模式时,将所述LU使用的LRU淘汰算法切换为LFU淘汰算法。更具体地,切换模块1304,遍历所述LU的缓存中LRU淘汰算法所使用链表中的数据块,将所述LRU淘汰算法所使用链表中各数据块的被访问次数置1;创建LFU淘汰算法使用的链表;将所述LRU淘汰算法所使用链表插入所述LFU淘汰算法使用的链表中被访问次数为1的链表节点下。
切换模块1304,具体用于在所述IO负载模式由所述无特征访问模式变化为所述聚簇访问模式时,将所述LU使用的ARC淘汰算法切换为LFU淘汰算法。更具体地,切换模块1304,将所述LU的缓存中所述ARC淘汰算法所使用的第一链表和第二链表中用于存储淘汰历史记录数据的数据块丢弃,其中,所述第一链表中用于缓存数据的数据块被访问次数为1,所述第二链表中用于缓存数据的数据块被访问数据大于或等于2;将所述第二链表中用于缓存数据的各数据块的被访问次数置2;创建LFU淘汰算法使用的链表;将所述第一链表插入所述LFU淘汰算法使用的链表中被访问次数为1的链表节点下,将所述第二链表插入所述LFU淘汰算法使用的链表中被访问次数为2的链表节点下。
切换模块1304,具体用于在所述IO负载模式由所述顺序访问模式变化为所述无特征访问模式时,将所述LU使用的MRU淘汰算法切换为ARC淘汰算法。更具体地,切换模块1304,将所述LU的缓存中MRU淘汰算法所使用的链表中的数据块分为第一部分和第二部分,其中,所述第二部分被访问时间早于所述第一部分的被访问时间;创建ARC淘汰算法使用的链表,将所述第一部分插入所述ARC淘汰算法使用的链表的第一链表中,并将所述第二部分插入所述ARC淘汰算法使用的链表的第二链表中。
切换模块1304,具体用于在所述IO负载模式由所述随机访问模式变化为所述无特征访问模式时,将所述LU使用的最近最少使用LRU淘汰算法切换为ARC淘汰算法。更具体地,切换模块1304,将所述LU的缓存中LRU淘汰算法所使用链表中的数据块分为第一部分和第二部分,其中,所述第二部分被访问时间早于所述第一部分的被访问时间;创建ARC淘汰算法使用的链表,将所述第一部分插入所述ARC淘汰算法使用的链表的第一链表中,并将所述第二部分插入所述ARC淘汰算法使用的链表的第二链表中。
切换模块1304,具体用于在所述IO负载模式由所述聚簇访问模式变化为所述无特征访问模式时,将所述LU使用的LFU淘汰算法切换为ARC淘汰算法。更具体地,切换模块1304,将所述LU的缓存中LFU淘汰算法所使用链表中的数据块分为第一部分和第二部分,其中,所述第二部分被访问次数大于所述第一部分的被访问次数;创建ARC淘汰算法使用的链表,将所述第一部分插入所述ARC淘汰算法使用的链表的第一链表中,并将所述第二部分插入所述ARC淘汰算法使用的链表的第二链表中。
图14为本发明提供的缓存淘汰算法切换处理装置实施例二的结构示意图,如图14所示,该装置包括:中央处理器1和内存2。其中,中央处理器1和内存2通过总线3通信,该内存2中存储计算机指令,当中央处理器1执行内存2中存储的计算机指令时,中央处理器1具体执行前述方法实施例。
具体地,中央处理器1,用于对逻辑单元LU的输入输出IO访问信息,获取IO访问信息统计结果;根据所述IO访问信息统计结果,获取所述LU的全局IO访问特征;根据所述LU的全局IO访问特征,确定所述LU的IO负载模式由第一IO负载模式变化为第二IO负载模式;将所述LU使用的所述第一IO负载模式对应的第一缓存淘汰算法切换为所述第二IO负载模式对应的第二缓存淘汰算法。
中央处理器1,具体用于根据所述IO访问信息统计结果,确定所述LU中各数据块的IO访问特征;根据所述LU中各数据块的IO访问特征,获取所述LU的全局IO访问特征。
所述LU中各数据块的IO访问特征,包括:所述各数据块的被访问顺序性、被访问重复度以及被访问次数。所述各数据块的被访问顺序性,包括:顺序访问、随机访问或未知访问;其中,所述未知访问为除所述顺序访问和所述随机访问之外的IO访问。
中央处理器1,具体用于根据所述LU中各数据块的被访问顺序性,计算所述LU的全局顺序度;根据所述LU中各数据块的被访问重复度,计算所述LU的全局重复度;根据所述LU中各数据块的被访问次数,计算所述LU的全局聚簇度。
具体实施过程中,中央处理器1,在所述IO负载模式由随机访问模式变化为顺序访问模式时,将所述LU使用的LRU淘汰算法切换为MRU淘汰算法。更具体地,中央处理器1,将所述LU的缓存中LRU淘汰算法所使用的链表的当前数据块淘汰方向切换为与所述当前数据块淘汰方向相反的方向。
中央处理器1,在所述IO负载模式由聚簇访问模式变化为顺序访问模式时,将所述LU使用的LFU淘汰算法切换为MRU淘汰算法。更具体地,中央处理器1,将所述LU的缓存中LFU淘汰算法所使用的多级链表合并为1个链表,作为所述MRU淘汰算法使用的链表。
中央处理器1,在所述IO负载模式由无特征访问模式变化为顺序访问模式时,将所述LU使用的ARC淘汰算法切换为MRU淘汰算法。更具体地,中央处理器1,用于将所述LU的缓存中所述ARC淘汰算法所使用的第一链表和第二链表中用于存储淘汰历史记录数据的数据块丢弃,并将所述第一链表和第二链表合并为1个链表,作为所述MRU淘汰算法使用的链表;其中,所述第一链表中用于缓存数据的数据块被访问次数为1,所述第二链表中用于缓存数据的数据块被访问次数大于或等于2。
中央处理器1,在所述IO负载模式由顺序访问模式变化为随机访问模式时,将所述LU使用的MRU淘汰算法切换为LRU淘汰算法。更具体地,中央处理器1,用于将所述LU的缓存中MRU淘汰算法所使用的链表的当前数据块淘汰方向切换为与所述当前数据块淘汰方向相反的方向。
中央处理器1,在所述IO负载模式由聚簇访问模式变化为随机访问模式时,将所述LU使用的LFU淘汰算法切换为LRU淘汰算法。更具体地,中央处理器1,将所述LU的缓存中LFU淘汰算法所使用的多级链表合并为1个链表,作为所述LRU淘汰算法使用的链表。
中央处理器1,在所述IO负载模式由无特征访问模式变化为随机访问模式时,将所述LU使用的ARC淘汰算法切换为LRU淘汰算法。更具体地,中央处理器1,将所述LU的缓存中所述ARC淘汰算法所使用的第一链表和第二链表中用于存储淘汰历史记录数据的数据块丢弃,并将所述第一链表和第二链表合并为1个链表,作为所述LRU淘汰算法使用的链表;其中,所述第一链表中用于缓存数据的数据块被访问次数为1,所述第二链表中用于缓存数据的数据块被访问数据大于或等于2。
中央处理器1,在所述IO负载模式由顺序访问模式变化为聚簇访问模式时,将所述LU使用的MRU淘汰算法切换为LFU淘汰算法。更具体地,中央处理器1,遍历所述LU的缓存中MRU淘汰算法所使用链表中的数据块,将所述MRU淘汰算法所使用链表中各数据块的被访问次数置1;创建LFU淘汰算法使用的链表;将所述MRU淘汰算法所使用链表插入所述LFU淘汰算法使用的链表中被访问次数为1的链表节点下。
中央处理器1,在所述IO负载模式由随机访问模式变化为聚簇访问模式时,将所述LU使用的LRU淘汰算法切换为LFU淘汰算法。更具体地,中央处理器1,遍历所述LU的缓存中LRU淘汰算法所使用链表中的数据块,将所述LRU淘汰算法所使用链表中各数据块的被访问次数置1;创建LFU淘汰算法使用的链表;将所述LRU淘汰算法所使用链表插入所述LFU淘汰算法使用的链表中被访问次数为1的链表节点下。
中央处理器1,在所述IO负载模式由无特征访问模式变化为聚簇访问模式时,将所述LU使用的ARC淘汰算法切换为LFU淘汰算法。更具体地,中央处理器1,将所述LU的缓存中所述ARC淘汰算法所使用的第一链表和第二链表中用于存储淘汰历史记录数据的数据块丢弃,其中,所述第一链表中用于缓存数据的数据块被访问次数为1,所述第二链表中用于缓存数据的数据块被访问数据大于或等于2;将所述第二链表中用于缓存数据的各数据块的被访问次数置2;创建LFU淘汰算法使用的链表;将所述第一链表插入所述LFU淘汰算法使用的链表中被访问次数为1的链表节点下,将所述第二链表插入所述LFU淘汰算法使用的链表中被访问次数为2的链表节点下。
中央处理器1,在所述IO负载模式由顺序访问模式变化为无特征访问模式时,将所述LU使用的MRU淘汰算法切换为ARC淘汰算法。更具体地,中央处理器1,将所述LU的缓存中MRU淘汰算法所使用的链表中的数据块分为第一部分和第二部分,其中,所述第二部分被访问时间早于所述第一部分的被访问时间;创建ARC淘汰算法使用的链表,将所述第一部分插入所述ARC淘汰算法使用的链表的第一链表中,并将所述第二部分插入所述ARC淘汰算法使用的链表的第二链表中。
中央处理器1,在所述IO负载模式由随机访问模式变化为无特征访问模式时,将所述LU使用的LRU淘汰算法切换为ARC淘汰算法。更具体地,中央处理器1,将所述LU的缓存中LRU淘汰算法所使用链表中的数据块分为第一部分和第二部分,其中,所述第二部分被访问时间早于所述第一部分的被访问时间;创建ARC淘汰算法使用的链表,将所述第一部分插入所述ARC淘汰算法使用的链表的第一链表中,并将所述第二部分插入所述ARC淘汰算法使用的链表的第二链表中。
中央处理器1,在所述IO负载模式由聚簇访问模式变化为无特征访问模式时,将所述LU使用的LFU淘汰算法切换为自适应缓存ARC淘汰算法。更具体地,中央处理器1,将所述LU的缓存中LFU淘汰算法所使用链表中的数据块分为第一部分和第二部分,其中,所述第二部分被访问次数大于所述第一部分的被访问次数;创建ARC淘汰算法使用的链表,将所述第一部分插入所述ARC淘汰算法使用的链表的第一链表中,并将所述第二部分插入所述ARC淘汰算法使用的链表的第二链表中。
在本发明所提供的几个实施例中,应该理解到,所披露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

Claims (55)

1.一种缓存淘汰算法切换处理方法,其特征在于,包括:
统计对逻辑单元LU的输入输出IO访问信息,获取IO访问信息统计结果;
根据所述IO访问信息统计结果,获取所述LU的全局IO访问特征;
根据所述LU的全局IO访问特征,确定所述LU的IO负载模式由第一IO负载模式变化为第二IO负载模式;
将所述LU使用的所述第一IO负载模式对应的第一缓存淘汰算法切换为所述第二IO负载模式对应的第二缓存淘汰算法;
所述根据所述IO访问信息统计结果,获取所述LU的全局IO访问特征,包括:
根据所述IO访问信息统计结果,确定所述LU中各数据块的IO访问特征;
根据所述LU中各数据块的IO访问特征,获取所述LU的全局IO访问特征;
所述LU中各数据块的IO访问特征,包括:所述各数据块的被访问顺序性、被访问重复度以及被访问次数,其中,被访问重复度由IO访问信息的统计结果计算得出。
2.根据权利要求1所述的方法,其特征在于,所述各数据块的被访问顺序性,包括:顺序访问、随机访问或未知访问;其中,所述未知访问为除所述顺序访问和所述随机访问之外的IO访问。
3.根据权利要求2所述的方法,其特征在于,所述根据所述LU中各数据块的IO访问特征,获取所述LU的全局IO访问特征,包括:
根据所述LU中各数据块的被访问顺序性,计算所述LU的全局顺序度;
根据所述LU中各数据块的被访问重复度,计算所述LU的全局重复度;
根据所述LU中各数据块的被访问次数,计算所述LU的全局聚簇度。
4.根据权利要求1-3任一项所述的方法,其特征在于,所述IO负载模式由第一IO负载模式变化为第二负载模式,包括:
所述IO负载模式由随机访问模式变化为顺序访问模式;相应地,
所述将所述LU使用的所述第一IO负载模式对应的第一缓存淘汰算法切换为所述第二IO负载模式对应的第二缓存淘汰算法,包括:
将所述LU使用的最近最少使用LRU淘汰算法切换为最近最多使用MRU淘汰算法。
5.根据权利要求4所述的方法,其特征在于,所述将所述LU使用的LRU淘汰算法切换为MRU淘汰算法,包括:
将所述LU的缓存中LRU淘汰算法所使用的链表的当前数据块淘汰方向切换为与所述当前数据块淘汰方向相反的方向。
6.根据权利要求1-3任一项所述的方法,其特征在于,所述IO负载模式由第一IO负载模式变化为第二负载模式,包括:
所述IO负载模式由聚簇访问模式变化为顺序访问模式;相应地,
所述将所述LU使用的所述第一IO负载模式对应的第一缓存淘汰算法切换为所述第二IO负载模式对应的第二缓存淘汰算法,包括:
将所述LU使用的最不频繁使用LFU淘汰算法切换为最近最多使用MRU淘汰算法。
7.根据权利要求6所述的方法,其特征在于,所述将所述LU使用的LFU淘汰算法切换为MRU淘汰算法,包括:
将所述LU的缓存中LFU淘汰算法所使用的多级链表合并为1个链表,作为所述MRU淘汰算法使用的链表。
8.根据权利要求1-3任一项所述的方法,其特征在于,所述IO负载模式由第一IO负载模式变化为第二负载模式,包括:
所述IO负载模式由无特征访问模式变化为顺序访问模式;相应地,
所述将所述LU使用的所述第一IO负载模式对应的第一缓存淘汰算法切换为所述第二IO负载模式对应的第二缓存淘汰算法,包括:
将所述LU使用的自适应缓存ARC淘汰算法切换为最近最多使用MRU淘汰算法。
9.根据权利要求8所述的方法,其特征在于,所述将所述LU使用的ARC淘汰算法切换为MRU淘汰算法,包括:
将所述LU的缓存中所述ARC淘汰算法所使用的第一链表和第二链表中用于存储淘汰历史记录数据的数据块丢弃,并将所述第一链表和第二链表合并为1个链表,作为所述MRU淘汰算法使用的链表;
其中,所述第一链表中用于缓存数据的数据块被访问次数为1,所述第二链表中用于缓存数据的数据块被访问次数大于或等于2。
10.根据权利要求1-3任一项所述的方法,其特征在于,所述IO负载模式由第一IO负载模式变化为第二负载模式,包括:
所述IO负载模式由顺序访问模式变化为随机访问模式;相应地,
所述将所述LU使用的所述第一IO负载模式对应的第一缓存淘汰算法切换为所述第二IO负载模式对应的第二缓存淘汰算法,包括:
将所述LU使用的最近最多使用MRU淘汰算法切换为最近最少使用LRU淘汰算法。
11.根据权利要求10所述的方法,其特征在于,所述将所述LU使用的MRU淘汰算法切换为LRU淘汰算法,包括:
将所述LU的缓存中MRU淘汰算法所使用的链表的当前数据块淘汰方向切换为与所述当前数据块淘汰方向相反的方向。
12.根据权利要求1-3任一项所述的方法,其特征在于,所述IO负载模式由第一IO负载模式变化为第二负载模式,包括:
所述IO负载模式由聚簇访问模式变化为随机访问模式;相应地,
所述将所述LU使用的所述第一IO负载模式对应的第一缓存淘汰算法切换为所述第二IO负载模式对应的第二缓存淘汰算法,包括:
将所述LU使用的最不频繁使用LFU淘汰算法切换为最近最少使用LRU淘汰算法。
13.根据权利要求12所述的方法,其特征在于,所述将所述LU使用的LFU淘汰算法切换为LRU淘汰算法,包括:
将所述LU的缓存中LFU淘汰算法所使用的多级链表合并为1个链表,作为所述LRU淘汰算法使用的链表。
14.根据权利要求1-3任一项所述的方法,其特征在于,所述IO负载模式由第一IO负载模式变化为第二负载模式,包括:
所述IO负载模式由无特征访问模式变化为随机访问模式;相应地,
所述将所述LU使用的所述第一IO负载模式对应的第一缓存淘汰算法切换为所述第二IO负载模式对应的第二缓存淘汰算法,包括:
将所述LU使用的自适应缓存ARC淘汰算法切换为最近最少使用LRU淘汰算法。
15.根据权利要求14所述的方法,其特征在于,所述将所述LU使用的ARC淘汰算法切换为LRU淘汰算法,包括:
将所述LU的缓存中所述ARC淘汰算法所使用的第一链表和第二链表中用于存储淘汰历史记录数据的数据块丢弃,并将所述第一链表和第二链表合并为1个链表,作为所述LRU淘汰算法使用的链表;
其中,所述第一链表中用于缓存数据的数据块被访问次数为1,所述第二链表中用于缓存数据的数据块被访问数据大于或等于2。
16.根据权利要求1-3任一项所述的方法,其特征在于,所述IO负载模式由第一IO负载模式变化为第二负载模式,包括:
所述IO负载模式由顺序访问模式变化为聚簇访问模式;相应地,
所述将所述LU使用的所述第一IO负载模式对应的第一缓存淘汰算法切换为所述第二IO负载模式对应的第二缓存淘汰算法,包括:
将所述LU使用的最近最多使用MRU淘汰算法切换为最不频繁使用LFU淘汰算法。
17.根据权利要求16所述的方法,其特征在于,所述将所述LU使用的最近最多使用MRU淘汰算法切换为LFU淘汰算法,包括:
遍历所述LU的缓存中MRU淘汰算法所使用链表中的数据块,将所述MRU淘汰算法所使用链表中各数据块的被访问次数置1;
创建LFU淘汰算法使用的链表;
将所述MRU淘汰算法所使用链表插入所述LFU淘汰算法使用的链表中被访问次数为1的链表节点下。
18.根据权利要求1-3任一项所述的方法,其特征在于,所述IO负载模式由第一IO负载模式变化为第二负载模式,包括:
所述IO负载模式由随机访问模式变化为聚簇访问模式;相应地,
所述将所述LU使用的所述第一IO负载模式对应的第一缓存淘汰算法切换为所述第二IO负载模式对应的第二缓存淘汰算法,包括:
将所述LU使用的LRU淘汰算法切换为LFU淘汰算法。
19.根据权利要求18所述的方法,其特征在于,所述将所述LU使用的LRU淘汰算法切换为LFU淘汰算法,包括:
遍历所述LU的缓存中LRU淘汰算法所使用链表中的数据块,将所述LRU淘汰算法所使用链表中各数据块的被访问次数置1;
创建LFU淘汰算法使用的链表;
将所述LRU淘汰算法所使用链表插入所述LFU淘汰算法使用的链表中被访问次数为1的链表节点下。
20.根据权利要求1-3任一项所述的方法,其特征在于,所述IO负载模式由第一IO负载模式变化为第二负载模式,包括:
所述IO负载模式由无特征访问模式变化为聚簇访问模式;相应地,
所述将所述LU使用的所述第一IO负载模式对应的第一缓存淘汰算法切换为所述第二IO负载模式对应的第二缓存淘汰算法,包括:
将所述LU使用的自适应缓存ARC淘汰算法切换为最不频繁使用LFU淘汰算法。
21.根据权利要求20所述的方法,其特征在于,所述将所述LU使用的ARC淘汰算法切换为LFU淘汰算法,包括:
将所述LU的缓存中所述ARC淘汰算法所使用的第一链表和第二链表中用于存储淘汰历史记录数据的数据块丢弃,其中,所述第一链表中用于缓存数据的数据块被访问次数为1,所述第二链表中用于缓存数据的数据块被访问数据大于或等于2;
将所述第二链表中用于缓存数据的各数据块的被访问次数置2;
创建LFU淘汰算法使用的链表;
将所述第一链表插入所述LFU淘汰算法使用的链表中被访问次数为1的链表节点下,将所述第二链表插入所述LFU淘汰算法使用的链表中被访问次数为2的链表节点下。
22.根据权利要求1-3任一项所述的方法,其特征在于,所述IO负载模式由第一IO负载模式变化为第二负载模式,包括:
所述IO负载模式由顺序访问模式变化为无特征访问模式;相应地,
所述将所述LU使用的所述第一IO负载模式对应的第一缓存淘汰算法切换为所述第二IO负载模式对应的第二缓存淘汰算法,包括:
将所述LU使用的最近最多使用MRU淘汰算法切换为自适应缓存ARC淘汰算法。
23.根据权利要求22所述的方法,其特征在于,所述将所述LU使用的MRU淘汰算法切换为ARC淘汰算法,包括:
将所述LU的缓存中MRU淘汰算法所使用的链表中的数据块分为第一部分和第二部分,其中,所述第二部分被访问时间早于所述第一部分的被访问时间;
创建ARC淘汰算法使用的链表,将所述第一部分插入所述ARC淘汰算法使用的链表的第一链表中,并将所述第二部分插入所述ARC淘汰算法使用的链表的第二链表中。
24.根据权利要求1-3任一项所述的方法,其特征在于,所述IO负载模式由第一IO负载模式变化为第二负载模式,包括:
所述IO负载模式由随机访问模式变化为无特征访问模式;相应地,
所述将所述LU使用的所述第一IO负载模式对应的第一缓存淘汰算法切换为所述第二IO负载模式对应的第二缓存淘汰算法,包括:
将所述LU使用的最近最少使用LRU淘汰算法切换为自适应缓存ARC淘汰算法。
25.根据权利要求24所述的方法,其特征在于,所述将LRU淘汰算法切换为ARC淘汰算法,包括:
将所述LU的缓存中LRU淘汰算法所使用链表中的数据块分为第一部分和第二部分,其中,所述第二部分被访问时间早于所述第一部分的被访问时间;
创建ARC淘汰算法使用的链表,将所述第一部分插入所述ARC淘汰算法使用的链表的第一链表中,并将所述第二部分插入所述ARC淘汰算法使用的链表的第二链表中。
26.根据权利要求1-3任一项所述的方法,其特征在于,所述IO负载模式由第一IO负载模式变化为第二负载模式,包括:
所述IO负载模式由聚簇访问模式变化为无特征访问模式;相应地,
所述将所述LU使用的所述第一IO负载模式对应的第一缓存淘汰算法切换为所述第二IO负载模式对应的第二缓存淘汰算法,包括:
将所述LU使用的最不频繁使用LFU淘汰算法切换为自适应缓存ARC淘汰算法。
27.根据权利要求26所述的方法,其特征在于,所述将所述LU使用的LFU淘汰算法切换为ARC淘汰算法,包括:
将所述LU的缓存中LFU淘汰算法所使用链表中的数据块分为第一部分和第二部分,其中,所述第二部分被访问次数大于所述第一部分的被访问次数;
创建ARC淘汰算法使用的链表,将所述第一部分插入所述ARC淘汰算法使用的链表的第一链表中,并将所述第二部分插入所述ARC淘汰算法使用的链表的第二链表中。
28.一种缓存淘汰算法切换处理装置,其特征在于,包括:
统计模块,用于统计对逻辑单元LU的输入输出IO访问信息,获取IO访问信息统计结果;
获取模块,用于根据所述IO访问信息统计结果,获取所述LU的全局IO访问特征;
确定模块,用于根据所述LU的全局IO访问特征,确定所述LU的IO负载模式由第一IO负载模式变化为第二IO负载模式;
切换模块,用于将所述LU使用的所述第一IO负载模式对应的第一缓存淘汰算法切换为所述第二IO负载模式对应的第二缓存淘汰算法;
所述获取模块,具体用于根据所述IO访问信息统计结果,确定所述LU中各数据块的IO访问特征;根据所述LU中各数据块的IO访问特征,获取所述LU的全局IO访问特征;
所述LU中各数据块的IO访问特征,包括:所述各数据块的被访问顺序性、被访问重复度以及被访问次数,其中,被访问重复度由IO访问信息的统计结果计算得出。
29.根据权利要求28所述的装置,其特征在于,所述各数据块的被访问顺序性,包括:顺序访问、随机访问或未知访问;其中,所述未知访问为除所述顺序访问和所述随机访问之外的IO访问。
30.根据权利要求29所述的装置,其特征在于,所述获取模块,具体用于根据所述LU中各数据块的被访问顺序性,计算所述LU的全局顺序度;根据所述LU中各数据块的被访问重复度,计算所述LU的全局重复度;根据所述LU中各数据块的被访问次数,计算所述LU的全局聚簇度。
31.根据权利要求28-30任一项所述的装置,其特征在于,所述切换模块,具体用于在所述IO负载模式由随机访问模式变化为顺序访问模式时,将所述LU使用的最近最少使用LRU淘汰算法切换为最近最多使用MRU淘汰算法。
32.根据权利要求31所述的装置,其特征在于,所述切换模块,具体用于将所述LU的缓存中LRU淘汰算法所使用的链表的当前数据块淘汰方向切换为与所述当前数据块淘汰方向相反的方向。
33.根据权利要求28-30任一项所述的装置,其特征在于,所述切换模块,具体用于在所述IO负载模式由聚簇访问模式变化为顺序访问模式时,将所述LU使用的最不频繁使用LFU淘汰算法切换为最近最多使用MRU淘汰算法。
34.根据权利要求33所述的装置,其特征在于,所述切换模块,具体用于将所述LU的缓存中LFU淘汰算法所使用的多级链表合并为1个链表,作为所述MRU淘汰算法使用的链表。
35.根据权利要求28-30任一项所述的装置,其特征在于,所述切换模块,具体用于在所述IO负载模式由无特征访问模式变化为顺序访问模式时,将所述LU使用的自适应缓存ARC淘汰算法切换为最近最多使用MRU淘汰算法。
36.根据权利要求35所述的装置,其特征在于,所述切换模块,具体用于将所述LU的缓存中所述ARC淘汰算法所使用的第一链表和第二链表中用于存储淘汰历史记录数据的数据块丢弃,并将所述第一链表和第二链表合并为1个链表,作为所述MRU淘汰算法使用的链表;其中,所述第一链表中用于缓存数据的数据块被访问次数为1,所述第二链表中用于缓存数据的数据块被访问次数大于或等于2。
37.根据权利要求28-30任一项所述的装置,其特征在于,所述切换模块,具体用于在所述IO负载模式由顺序访问模式变化为随机访问模式时,将所述LU使用的最近最多使用MRU淘汰算法切换为最近最少使用LRU淘汰算法。
38.根据权利要求37所述的装置,其特征在于,所述切换模块,具体用于将所述LU的缓存中MRU淘汰算法所使用的链表的当前数据块淘汰方向切换为与所述当前数据块淘汰方向相反的方向。
39.根据权利要求28-30任一项所述的装置,其特征在于,所述切换模块,具体用于在所述IO负载模式由聚簇访问模式变化为随机访问模式时,将所述LU使用的最不频繁使用LFU淘汰算法切换为最近最少使用LRU淘汰算法。
40.根据权利要求39所述的装置,其特征在于,所述切换模块,具体用于将所述LU的缓存中LFU淘汰算法所使用的多级链表合并为1个链表,作为所述LRU淘汰算法使用的链表。
41.根据权利要求28-30任一项所述的装置,其特征在于,所述切换模块,具体用于在所述IO负载模式由无特征访问模式变化为随机访问模式时,将所述LU使用的自适应缓存ARC淘汰算法切换为最近最少使用LRU淘汰算法。
42.根据权利要求41所述的装置,其特征在于,所述切换模块,具体用于将所述LU的缓存中所述ARC淘汰算法所使用的第一链表和第二链表中用于存储淘汰历史记录数据的数据块丢弃,并将所述第一链表和第二链表合并为1个链表,作为所述LRU淘汰算法使用的链表;其中,所述第一链表中用于缓存数据的数据块被访问次数为1,所述第二链表中用于缓存数据的数据块被访问数据大于或等于2。
43.根据权利要求28-30任一项所述的装置,其特征在于,所述切换模块,具体用于在所述IO负载模式由顺序访问模式变化为聚簇访问模式时,将所述LU使用的最近最多使用MRU淘汰算法切换为最不频繁使用LFU淘汰算法。
44.根据权利要求43所述的装置,其特征在于,所述切换模块,具体用于遍历所述LU的缓存中MRU淘汰算法所使用链表中的数据块,将所述MRU淘汰算法所使用链表中各数据块的被访问次数置1;创建LFU淘汰算法使用的链表;将所述MRU淘汰算法所使用链表插入所述LFU淘汰算法使用的链表中被访问次数为1的链表节点下。
45.根据权利要求28-30任一项所述的装置,其特征在于,所述切换模块,具体用于在所述IO负载模式由随机访问模式变化为聚簇访问模式时,将所述LU使用的最近最少使用LRU淘汰算法切换为最不频繁使用LFU淘汰算法。
46.根据权利要求45所述的装置,其特征在于,所述切换模块,具体用于遍历所述LU的缓存中LRU淘汰算法所使用链表中的数据块,将所述LRU淘汰算法所使用链表中各数据块的被访问次数置1;创建LFU淘汰算法使用的链表;将所述LRU淘汰算法所使用链表插入所述LFU淘汰算法使用的链表中被访问次数为1的链表节点下。
47.根据权利要求28-30任一项所述的装置,其特征在于,所述切换模块,具体用于在所述IO负载模式由无特征访问模式变化为聚簇访问模式时,将所述LU使用的自适应缓存ARC淘汰算法切换为最不频繁使用LFU淘汰算法。
48.根据权利要求47所述的装置,其特征在于,所述切换模块,具体用于将所述LU的缓存中所述ARC淘汰算法所使用的第一链表和第二链表中用于存储淘汰历史记录数据的数据块丢弃,其中,所述第一链表中用于缓存数据的数据块被访问次数为1,所述第二链表中用于缓存数据的数据块被访问数据大于或等于2;将所述第二链表中用于缓存数据的各数据块的被访问次数置2;创建LFU淘汰算法使用的链表;将所述第一链表插入所述LFU淘汰算法使用的链表中被访问次数为1的链表节点下,将所述第二链表插入所述LFU淘汰算法使用的链表中被访问次数为2的链表节点下。
49.根据权利要求28-30任一项所述的装置,其特征在于,所述切换模块,具体用于在所述IO负载模式由顺序访问模式变化为无特征访问模式时,将所述LU使用的最近最多使用MRU淘汰算法切换为自适应缓存ARC淘汰算法。
50.根据权利要求49所述的装置,其特征在于,所述切换模块,具体用于将所述LU的缓存中MRU淘汰算法所使用的链表中的数据块分为第一部分和第二部分,其中,所述第二部分被访问时间早于所述第一部分的被访问时间;创建ARC淘汰算法使用的链表,将所述第一部分插入所述ARC淘汰算法使用的链表的第一链表中,并将所述第二部分插入所述ARC淘汰算法使用的链表的第二链表中。
51.根据权利要求28-30任一项所述的装置,其特征在于,所述切换模块,具体用于在所述IO负载模式由随机访问模式变化为无特征访问模式时,将所述LU使用的最近最少使用LRU淘汰算法切换为自适应缓存ARC淘汰算法。
52.根据权利要求51所述的装置,其特征在于,所述切换模块,具体用于将所述LU的缓存中LRU淘汰算法所使用链表中的数据块分为第一部分和第二部分,其中,所述第二部分被访问时间早于所述第一部分的被访问时间;创建ARC淘汰算法使用的链表,将所述第一部分插入所述ARC淘汰算法使用的链表的第一链表中,并将所述第二部分插入所述ARC淘汰算法使用的链表的第二链表中。
53.根据权利要求28-30任一项所述的装置,其特征在于,所述切换模块,具体用于在所述IO负载模式由聚簇访问模式变化为无特征访问模式时,将所述LU使用的LFU淘汰算法切换为自适应缓存ARC淘汰算法。
54.根据权利要求53所述的装置,其特征在于,所述切换模块,具体用于将所述LU的缓存中LFU淘汰算法所使用链表中的数据块分为第一部分和第二部分,其中,所述第二部分被访问次数大于所述第一部分的被访问次数;创建ARC淘汰算法使用的链表,将所述第一部分插入所述ARC淘汰算法使用的链表的第一链表中,并将所述第二部分插入所述ARC淘汰算法使用的链表的第二链表中。
55.一种缓存淘汰算法切换处理装置,其特征在于,所述处理装置包括中央处理器和内存,所述中央处理器和所述内存通过总线通信,所述内存中存储计算机指令,当所述中央处理器执行所述内存中存储的计算机指令时,执行权利要求1-27任一项所述的方法。
CN201410334478.8A 2014-07-14 2014-07-14 缓存淘汰算法切换处理方法及装置 Active CN104077241B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410334478.8A CN104077241B (zh) 2014-07-14 2014-07-14 缓存淘汰算法切换处理方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410334478.8A CN104077241B (zh) 2014-07-14 2014-07-14 缓存淘汰算法切换处理方法及装置

Publications (2)

Publication Number Publication Date
CN104077241A CN104077241A (zh) 2014-10-01
CN104077241B true CN104077241B (zh) 2017-10-17

Family

ID=51598508

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410334478.8A Active CN104077241B (zh) 2014-07-14 2014-07-14 缓存淘汰算法切换处理方法及装置

Country Status (1)

Country Link
CN (1) CN104077241B (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106941451B (zh) * 2016-01-04 2019-10-22 中国科学院声学研究所 一种基于网络感知和覆盖率阈值矩阵的文件智能缓存方法
CN106383792B (zh) * 2016-09-20 2019-07-12 北京工业大学 一种基于缺失感知的异构多核缓存替换方法
CN109375878A (zh) * 2018-10-26 2019-02-22 郑州云海信息技术有限公司 一种缓存资源处理方法、装置以及计算机可读存储介质
CN110399316B (zh) * 2019-06-28 2021-10-01 苏州浪潮智能科技有限公司 一种用于业务系统性能优化的方法和装置
WO2023165543A1 (zh) * 2022-03-02 2023-09-07 华为技术有限公司 共享缓存的管理方法、装置及存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101236530A (zh) * 2008-01-30 2008-08-06 清华大学 高速缓存替换策略的动态选择方法
CN101866318A (zh) * 2010-06-13 2010-10-20 北京北大众志微系统科技有限责任公司 一种高速缓存替换策略的管理系统及方法
CN102137139A (zh) * 2010-09-26 2011-07-27 华为技术有限公司 缓存替换策略的选择方法、装置、代理服务器和系统
CN103282891A (zh) * 2010-08-16 2013-09-04 甲骨文国际公司 用于使用神经网络来进行有效的缓存的系统和方法
CN103885890A (zh) * 2012-12-21 2014-06-25 华为技术有限公司 高速缓冲存储器cache中cache块的替换处理方法和装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101236530A (zh) * 2008-01-30 2008-08-06 清华大学 高速缓存替换策略的动态选择方法
CN101866318A (zh) * 2010-06-13 2010-10-20 北京北大众志微系统科技有限责任公司 一种高速缓存替换策略的管理系统及方法
CN103282891A (zh) * 2010-08-16 2013-09-04 甲骨文国际公司 用于使用神经网络来进行有效的缓存的系统和方法
CN102137139A (zh) * 2010-09-26 2011-07-27 华为技术有限公司 缓存替换策略的选择方法、装置、代理服务器和系统
CN103885890A (zh) * 2012-12-21 2014-06-25 华为技术有限公司 高速缓冲存储器cache中cache块的替换处理方法和装置

Also Published As

Publication number Publication date
CN104077241A (zh) 2014-10-01

Similar Documents

Publication Publication Date Title
CN104077241B (zh) 缓存淘汰算法切换处理方法及装置
KR101575062B1 (ko) 클러스터 시스템에서의 데이터 처리 방법 및 장치
CN107943867B (zh) 支持异构存储的高性能层次化存储系统
CN105589812B (zh) 磁盘碎片整理方法、装置及主机
CN108810041A (zh) 一种分布式缓存系统的数据写入及扩容方法、装置
CN103544269B (zh) 目录的存储方法、查询方法及节点控制器
US20030220951A1 (en) Dynamic disk space management by multiple database server instances in a cluster configuration
CN108197181A (zh) 一种时序数据的压缩存储方法、电子设备及存储介质
CN103186554A (zh) 分布式数据镜像方法及存储数据节点
CN104281535B (zh) 一种映射表在内存中的处理方法和装置
KR20010014824A (ko) 참조의 국한성에 대한 고효율의 동적 추적 방법 및 장치
CN107169009A (zh) 一种分布式存储系统的数据分裂方法及装置
CN103902473B (zh) 一种数据处理方法及数据缓存系统
CN107347039A (zh) 一种共享缓存空间的管理方法及装置
CN104346404B (zh) 一种访问数据的方法、设备及系统
CN112749198A (zh) 一种基于版本号的多级数据缓存方法及装置
CN108304259A (zh) 内存管理方法及系统
CN104714898B (zh) 一种Cache的分配方法和装置
CN109445693A (zh) 一种数据压缩方法和装置
CN107506466A (zh) 一种小文件存储方法及系统
CN112817540B (zh) 一种基于磁盘阵列扩展的数据块重分布方法及装置
CN104050189B (zh) 页面共享处理方法及装置
CN107948229A (zh) 分布式存储的方法、装置及系统
CN112995257B (zh) 基于云存储架构的缓存扩容方法、装置以及存储介质
CN108733584B (zh) 用于优化数据缓存的方法和设备

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant