CN116185904A - 一种缓存管理方法、装置、设备及存储介质 - Google Patents
一种缓存管理方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN116185904A CN116185904A CN202211717772.8A CN202211717772A CN116185904A CN 116185904 A CN116185904 A CN 116185904A CN 202211717772 A CN202211717772 A CN 202211717772A CN 116185904 A CN116185904 A CN 116185904A
- Authority
- CN
- China
- Prior art keywords
- cache
- area
- cache area
- elimination
- region
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/123—Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/122—Replacement control using replacement algorithms of the least frequently used [LFU] type, e.g. with individual count value
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本申请公开了一种缓存管理方法、装置、设备及存储介质,涉及计算机技术领域。该方法包括:对缓存进行分割,得到第一缓存区域和第二缓存区域,并将所述第一缓存区域配置为第一缓存置换方式,将所述第二缓存区域配置为第二缓存置换方式;为所述第一缓存区域添加用于存储从所述第一缓存区域淘汰的数据块的第一淘汰表,并为所述第二缓存区域添加用于存储从所述第二缓存区域淘汰的数据块的第二淘汰表;根据系统对缓存的访问,分别统计访问命中所述第一淘汰表和所述第二淘汰表的命中率,并根据所述命中率调整所述第一缓存区域和所述第二缓存区域的大小。实现适应型的缓存空间置换,应于抗扫描、偶发性、周期性等批量业务操作,提升了缓存命中率。
Description
技术领域
本发明涉及计算机技术领域,特别涉及一种缓存管理方法、装置、设备及存储介质。
背景技术
目前,存储介质中,固态硬盘(SSD,Solid State Disk)和机械硬盘性能(HDD,HardDisk Drive)差距很大,访问效率依次提升,同时设备价格也不断升高,正是出于这个原因,现代计算机都会在性价比之间做个权衡。因为越高访问效率的存储介质越贵,所以这些介质都是有限的资源,为了在有限的资源内处理无限的数据,提出了置换的概念,最理想的情况是从缓存中置换出未来短期内不会被再次访问的数据,但是由于无法预知未来,所以只能从数据在过去的访问情况中寻找规律进行置换。
现有技术中,采用LFU(Least Frequently Used)缓存置换,即最不经常使用策略算法,该算法是基于数据访问频率(次数)来淘汰数据的,也就是说系统会记录一段时间内所有数据的访问次数,当缓存区满的时候,会优先淘汰访问次数最少的数据;其核心思想:如果一个数据在最近一段时间内访问次数很少,则在将来一段时间内被访问的可能性也很小;显然,这是一种合理的算法,因为到目前为止最少使用的页面,很可能也是将来最少访问的页面。缓存的每个数据都有引用计数,所有数据按照引用计数排序,具有相同引用计数的数据按照时间排序。但是,LFU存在缓存难失效问题,即偶发性多次操作使得缓存难以失效,降低了缓存命中率。
现有技术中,还采用LRU(Least Recently Used)缓存置换,即最近最少使用策略算法,即基于数据访问历史记录来执行淘汰策略,LRU是首先淘汰最长时间未被使用的页面,这种算法把近期最久没有被访问过的页面作为被替换的页面,与LFU不一样的是,LRU并不关注缓存数据的访问次数,它只关注该条数据的访问时间。核心思想:如果一个数据在最近一段时间内没被访问,则在将来一段时间内被访问的可能性也很小。但是,偶发性的、周期性的批量操作会导致LRU命中率急剧下降,降低了缓存命中率;其次对扫描读模式是没有抵抗性的。
发明内容
有鉴于此,本发明的目的在于提供一种缓存管理方法、装置、设备及介质,能够提升缓存命中率。其具体方案如下:
第一方面,本申请公开了一种缓存管理方法,包括:
对缓存进行分割,得到第一缓存区域和第二缓存区域,并将所述第一缓存区域配置为第一缓存置换方式,将所述第二缓存区域配置为第二缓存置换方式;
为所述第一缓存区域添加用于存储从所述第一缓存区域淘汰的数据块的第一淘汰表,并为所述第二缓存区域添加用于存储从所述第二缓存区域淘汰的数据块的第二淘汰表;
根据系统对缓存的访问,分别统计访问命中所述第一淘汰表和所述第二淘汰表的命中率,并根据所述命中率调整所述第一缓存区域和所述第二缓存区域的大小。
可选的,所述根据所述命中率调整所述第一缓存区域和所述第二缓存区域的大小,包括:
若所述第一淘汰表的命中率大于所述第二淘汰表的命中率,则扩大所述第一缓存区域并缩小所述第二缓存区域;
若所述第二淘汰表的命中率大于所述第一淘汰表的命中率,则扩大所述第二缓存区域并缩小所述第一缓存区域。
可选的,所述扩大所述第一缓存区域并缩小所述第二缓存区域,包括:
确定预设调整单位,所述预设调整单位为目标数量的数据块;
按照所述预设调整单位,通过下调所述第二缓存区域的大小,上调所述第一缓存区域的大小;
所述扩大所述第二缓存区域并缩小所述第一缓存区域,包括:
按照所述预设调整单位,通过下调所述第一缓存区域的大小,上调所述第二缓存区域的大小。
可选的,所述对缓存进行分割,得到第一缓存区域和第二缓存区域之后,还包括:
确定所述第一缓存区域和所述第二缓存区域之间分割线的位置;
相应的,所述扩大所述第一缓存区域并缩小所述第二缓存区域,包括:
以所述第二缓存区域为方向调整所述分割线的位置,以便扩大所述第一缓存区域并缩小所述第二缓存区域;
相应的,所述扩大所述第二缓存区域并缩小所述第一缓存区域,包括:
以所述第一缓存区域为方向调整所述分割线的位置,以便扩大所述第二缓存区域并缩小所述第一缓存区域。
可选的,所述对缓存进行分割,得到以分割线为界的第一缓存区域和第二缓存区域,包括:
对所述缓存进行平均分割,得到以分割线为界的大小相同的第一缓存区域和第二缓存区域;所述缓存以固定大小的数据块为单位。
可选的,所述第一缓存区域用于存储首次写入的数据块;所述第二缓存区域用于存储多次命中的数据块;
相应的,所述缓存管理方法,还包括:
当所述第一缓存区域中的目标数据块被再次命中时,将所述目标数据块移动到所述第二缓存区域中。
可选的,所述为所述第一缓存区域添加用于存储从所述第一缓存区域淘汰的数据块的第一淘汰表,并为所述第二缓存区域添加用于存储从所述第二缓存区域淘汰的数据块的第二淘汰表,包括:
基于布隆过滤器构建所述第一淘汰表和所述第二淘汰表;
对所述第一淘汰表和所述第二淘汰表进行区域划分,得到每个淘汰表对应的多个表区间,以便将淘汰的数据块按照顺序依次写入每个所述表区间,并在所述表区间存满后,按照写入顺序对最早写入数据的表区间进行清除。
可选的,所述统计访问命中所述第一淘汰表和所述第二淘汰表的命中率,包括:
确定所述第一淘汰表或所述第二淘汰表对应的布隆过滤器数据布局;所述布隆过滤器数据布局方式包括以列为表分区存储或以行为表分区存储;
按照哈希集合计算当前系统访问的目标缓存对应的每个目标哈希值;
若所述布隆过滤器是按照以列为表分区存储淘汰的数据块的哈希值,则确定所述目标哈希值在所述布隆过滤器数据布局中命中的所有目标行,基于所述目标行得到目标表格;
按列查询所述目标表格,根据列查询结果判断淘汰的数据块是否命中所述第一淘汰表或所述第二淘汰表。
第二方面,本申请公开了一种缓存管理装置,包括:
分割模块,用于对缓存进行分割,得到第一缓存区域和第二缓存区域,并将所述第一缓存区域配置为第一缓存置换方式,将所述第二缓存区域配置为第二缓存置换方式;
淘汰表添加模块,用于为所述第一缓存区域添加用于存储从所述第一缓存区域淘汰的数据块的第一淘汰表,并为所述第二缓存区域添加用于存储从所述第二缓存区域淘汰的数据块的第二淘汰表;
区域调整模块,用于根据系统访问缓存的记录,统计访问命中所述第一淘汰表和所述第二淘汰表的命中率,并根据所述命中率调整所述第一缓存区域和所述第二缓存区域的大小。
第三方面,本申请公开了一种电子设备,包括:
存储器,用于保存计算机程序;
处理器,用于执行所述计算机程序,以实现前述的缓存管理方法。
第四方面,本申请公开了一种计算机可读存储介质,用于存储计算机程序;其中计算机程序被处理器执行时实现前述的缓存管理方法。
本申请中,对缓存进行分割,得到第一缓存区域和第二缓存区域,并将所述第一缓存区域配置为第一缓存置换方式,将所述第二缓存区域配置为第二缓存置换方式;为所述第一缓存区域添加用于存储从所述第一缓存区域淘汰的数据块的第一淘汰表,并为所述第二缓存区域添加用于存储从所述第二缓存区域淘汰的数据块的第二淘汰表;根据系统对缓存的访问,分别统计访问命中所述第一淘汰表和所述第二淘汰表的命中率,并根据所述命中率调整所述第一缓存区域和所述第二缓存区域的大小。可见,通过分别构建第一缓存置换方式所在第一缓存区域的第一淘汰表,以及第二缓存置换方式所在第二缓存区域的第二淘汰表,第一淘汰表和第二淘汰表的命中率能够表征当前访问的倾向性,即倾向访问最近内容还是访问最频繁内容,再据此调整第一缓存区域和所述第二缓存区域的大小,使较多缓存区域符合当前缓存访问的倾向性,由此实现适应型的缓存空间置换,应于抗扫描、偶发性、周期性等批量业务操作,提升了缓存命中率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请提供的一种缓存管理方法流程图;
图2为本申请提供的一种具体的缓存分割结构示意图;
图3为本申请提供的一种具体的淘汰表构建方法流程图;
图4为本申请提供的一种具体的淘汰表数据填充方法流程图;
图5为本申请提供的一种具体淘汰表命中判断方法流程图;
图6为本申请提供的一种具体的布隆过滤器数据布局结构示意图;
图7为本申请提供的一种缓存管理装置结构示意图;
图8为本申请提供的一种电子设备结构图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
现有技术中,采用LFU缓存置换,但是,LFU存在缓存难失效问题,即偶发性多次操作使得缓存难以失效,降低了缓存命中率;还采用LRU缓存置换,但是,偶发性的、周期性的批量操作会导致LRU命中率急剧下降,其次对扫描读模式是没有抵抗性的,降低了缓存命中率。为克服上述技术问题,本申请提出一种缓存管理方法,能够提升缓存命中率。
本申请实施例公开了一种缓存管理方法,参见图1所示,该方法可以包括以下步骤:
步骤S11:对缓存进行分割,得到第一缓存区域和第二缓存区域,并将所述第一缓存区域配置为第一缓存置换方式,将所述第二缓存区域配置为第二缓存置换方式。
本实施例中,通过对缓存进行分割将缓存区域分为两部分,第一部分采用第一缓存置换方式进行缓存置换,另一部分采用第二缓存置换方式进行缓存置换,其中,上述第一缓存置换方式可以为LRU缓存置换方式,第二缓存置换方式可以为LFU缓存置换方式,即一部分按照LRU算法执行置换,另一部分按照LFU算法执行置换。缓存(cache),是指访问速度比一般随机存取存储器(RAM,Random Access Memory)快的一种高速存储器,通常它不像系统主存那样使用DRAM(Dynamic Random Access Memory,动态随机存取存储器)技术,而使用昂贵但较快速的SRAM(Static Random-Access Memory,静态随机存取存储器)技术,缓存的设置是所有现代计算机系统发挥高性能的重要因素之一。
本实施例中,所述对缓存进行分割,得到以分割线为界的第一缓存区域和第二缓存区域,可以包括:对所述缓存进行平均分割,得到以分割线为界的大小相同的第一缓存区域和第二缓存区域;所述缓存以固定大小的数据块为单位。即整个缓存空间按照固定块大小划分为若干个块,缓存中最小单元是以块为单位,因此以块为单位对缓存进行分割,由于此时并不知道缓存访问的倾向性,因此初始分割时可以为平均分割,即得到的第一缓存区域的大小与第二缓存区域的大小是一样的。其中,第一缓存区域对应一个缓存表定义为LRU表,用于记录第一缓存区域的访问记录,第二缓存区域对应一个缓存表定义为LFU表,用于记录第二缓存区域的访问记录。
本实施例中,所述第一缓存区域用于存储首次写入的数据块;所述第二缓存区域用于存储多次命中的数据块;相应的,所述缓存管理方法,还可以包括:当所述第一缓存区域中的目标数据块被再次命中时,将所述目标数据块移动到所述第二缓存区域中。可以理解的是,由于第一缓存区域配置为第一缓存置换方式,是基于数据访问时间进行淘汰的,并不关注频次问题,因此第一次cache miss(缓存不命中)的数据会放入LRU表;如果cachehit(缓存命中)LRU表,且LFU表中没有,则将相关内容放入LFU表。
步骤S12:为所述第一缓存区域添加用于存储从所述第一缓存区域淘汰的数据块的第一淘汰表,并为所述第二缓存区域添加用于存储从所述第二缓存区域淘汰的数据块的第二淘汰表。
本实施例中,为第一缓存区域添加用于存储从第一缓存区域淘汰的数据块的第一淘汰表,并为第二缓存区域添加用于存储从第二缓存区域淘汰的数据块的第二淘汰表。即第一缓存区域对应一个第一淘汰表,从第一缓存区域淘汰的数据块的信息保存在第一淘汰表中,同理,第二缓存区域对应一个第二淘汰表,从第二缓存区域淘汰的数据块的信息保存在第二淘汰表中。其中,第一淘汰表和第二淘汰表可以是链表。
例如图2所示,整个缓存空间对应LRU表和LFU表两部分,起始假定LRU表和LFU表各占一半,p值为两个区域的分割位置;LRU和LFU各自有一个淘汰表,即第一淘汰表(LRUGhost表)和第二淘汰表(LFU Ghost表)。具体的,第一淘汰表和第二淘汰表具体可以为Ghost影子链表,第一淘汰表和第二淘汰表中以key(键)的形式存储,即文件IO的offset(文件偏移量)、size(大小)和file_no(文件编号),例如:如果被淘汰的数据块来自LRU表的部分,则该单元对应的key会被放入LRU表对应的第一淘汰表。
另外,当缓存区域存满,在进行缓存置换淘汰数据块时,可以根据数据块的热度值从低到高进行淘汰。本实施例中,LRU表和LFU表可以分别使用按热度等级划分的集合,按照数字序列若共0-255个序列,则共256个热度值,如序列[0-127]为LRU表,序列[128-255]为LFU表。首次写入的数据进入LRU表,从序列0集依次递增填满[0-127]序列集(0(N/128)、1(N/128)...127(N/128));二次命中,则将数据块从LRU表移动到LFU表中(从序列128开始填充),三次或三次以上命中,则从LFU表依次向队尾移动,以增加该数据块的热度值,即访问频度越高,热度值越大。淘汰时,依次同时从LRU表和LFU表的低热度值向高热度值选择淘汰数据块,LFU表类似。至于LFU表和LRU表各自选择多少个块,则通过P值进行选择,即通过淘汰相应数量的数据块后使当前基于P值划分的第一缓存区域和第二缓存区域均没有实际数据量超出缓存容量的情况。
步骤S13:根据系统对缓存的访问,分别统计访问命中所述第一淘汰表和所述第二淘汰表的命中率,并根据所述命中率调整所述第一缓存区域和所述第二缓存区域的大小。
本实施例中,根据系统对缓存的访问,分别统计访问命中第一淘汰表和第二淘汰表的命中率,然后,根据命中率调整第一缓存区域和第二缓存区域的大小,即通过统计第一淘汰表和第二淘汰表的命中率,可以确定当前系统的缓存访问的倾向性,即倾向访问最近内容还是访问最频繁内容,命中率较大的为缓存访问倾向的访问方式。
本实施例中,所述根据所述命中率调整所述第一缓存区域和所述第二缓存区域的大小,可以包括:若所述第一淘汰表的命中率大于所述第二淘汰表的命中率,则扩大所述第一缓存区域并缩小所述第二缓存区域;若所述第二淘汰表的命中率大于所述第一淘汰表的命中率,则扩大所述第二缓存区域并缩小所述第一缓存区域。可以理解的是,命中率能够表征缓存访问的倾向,若第一淘汰表的命中率大于第二淘汰表的命中率,此时可以认为系统倾向于访问最近的内容,但是由于第一缓存区间没有足够的空间存储数据,导致访问命中第一淘汰表中从第一缓存区间淘汰的数据块,因此,需要适当扩大第一缓存区间,使更多的缓存按照LRU算法执行置换,第二淘汰表的命中率大于第一淘汰表的命中率的情况同理,提高了缓存命中率。
本实施例中,所述扩大所述第一缓存区域并缩小所述第二缓存区域,可以包括:确定预设调整单位,所述预设调整单位为目标数量的数据块;按照所述预设调整单位,通过下调所述第二缓存区域的大小,上调所述第一缓存区域的大小;所述扩大所述第二缓存区域并缩小所述第一缓存区域,包括:按照所述预设调整单位,通过下调所述第一缓存区域的大小,上调所述第二缓存区域的大小。即缓存中一数据块为单位,因此在调整两个区域的缓存的大小时,每次调整的大小可以设置为预设调整单位,具体的该预设调整单位可以为目标数据的数据块。
本实施例中,所述对缓存进行分割,得到第一缓存区域和第二缓存区域之后,还可以包括:确定所述第一缓存区域和所述第二缓存区域之间分割线的位置;相应的,所述扩大所述第一缓存区域并缩小所述第二缓存区域,包括:以所述第二缓存区域为方向调整所述分割线的位置,以便扩大所述第一缓存区域并缩小所述第二缓存区域;相应的,所述扩大所述第二缓存区域并缩小所述第一缓存区域,包括:以所述第一缓存区域为方向调整所述分割线的位置,以便扩大所述第二缓存区域并缩小所述第一缓存区域。例如图2所示,若第一淘汰表的命中率大于第二淘汰表的命中率,将p值减1,以便分割线的位置向左移动,若第二淘汰表的命中率大于第一淘汰表的命中率,将p值加1,以便分割线的位置向右移动,由此,通过调整p值实现对第一缓存区域和第二缓存区域的大小调整。
由此,通过结合第一缓存置换方式和第二缓存置换方式,并动态调整,当系统趋向于访问最近的内容,会更多地命中LRU Ghost表,这样会增大第一缓存区域的空间;当系统趋向于访问最频繁的内容,会更多地命中LFU Ghost表,这样会增加第二缓存区域的空间。
由上可见,本实施例中对缓存进行分割,得到第一缓存区域和第二缓存区域,并将所述第一缓存区域配置为第一缓存置换方式,将所述第二缓存区域配置为第二缓存置换方式;为所述第一缓存区域添加用于存储从所述第一缓存区域淘汰的数据块的第一淘汰表,并为所述第二缓存区域添加用于存储从所述第二缓存区域淘汰的数据块的第二淘汰表;根据系统对缓存的访问,分别统计访问命中所述第一淘汰表和所述第二淘汰表的命中率,并根据所述命中率调整所述第一缓存区域和所述第二缓存区域的大小。可见,通过分别构建第一缓存置换方式所在第一缓存区域的第一淘汰表,以及第二缓存置换方式所在第二缓存区域的第二淘汰表,第一淘汰表和第二淘汰表的命中率能够表征当前访问的倾向性,即倾向访问最近内容还是访问最频繁内容,再据此调整第一缓存区域和所述第二缓存区域的大小,使较多缓存区域符合当前缓存访问的倾向性,由此实现适应型的缓存空间置换,应于抗扫描、偶发性、周期性等批量业务操作,提升了缓存命中率。
本申请实施例公开了一种具体的淘汰表构建方法,参见图3所示,该方法可以包括以下步骤:
步骤S21:基于布隆过滤器构建所述第一淘汰表和所述第二淘汰表。
步骤S22:对所述第一淘汰表和所述第二淘汰表进行区域划分,得到每个淘汰表对应的多个表区间,以便将淘汰的数据块按照顺序依次写入每个所述表区间,并在所述表区间存满后,按照写入顺序对最早写入数据的表区间进行清除。
可以理解的是,现有技术中,使用传统链表方式对数据进行按顺序存储,存储时便捷,但是查找的复杂度较高,查找时间较长,并且会占用较多的内存资源。本实施例中,为了极大的优化内存,使用布隆过滤器(BloomFilter)作为淘汰表实现,布隆过滤器是一个很长的二进制向量和一系列随机映射函数,布隆过滤器可以用于检索一个元素是否在一个集合中。
本实施例中,利用布隆过滤器进行数据存储时,布隆过滤器作为第一淘汰表和第二淘汰表的索引,第一淘汰表/第二淘汰表有独立的Bloomfilter区间。现有技术中,BloomFilter不能删除元素,且数据插入的顺序未知。本实施例中,为了营造数据插入、删除的LRU效果,将给定的用作Bloomfilter空间化分为多个Bloomfilter区间,且散列固定数量的数据,每个Bloomfilter区间独立计算数据分布,依次填满所有区间,填满后再来新的数据时,按照LRU移除最早填满的区间,即对早填满的Bloomfilter区间清0。如下图4是淘汰表的数据填充过程,第一轮哈希后哈希值存储到第一区间,第二轮哈希后哈希值存储到第二区间。
相应的,本申请实施例公开了一种具体的淘汰表的命中判断方法,参见图5所示,该方法可以包括以下步骤:
步骤S31:确定所述第一淘汰表或所述第二淘汰表对应的布隆过滤器数据布局;所述布隆过滤器数据布局方式包括以列为表分区存储或以行为表分区存储。
步骤S32:按照哈希集合计算当前系统访问的目标缓存对应的每个目标哈希值。
步骤S33:若所述布隆过滤器是按照以列为表分区存储淘汰的数据块的哈希值,则确定所述目标哈希值在所述布隆过滤器数据布局中命中的所有目标行,基于所述目标行得到目标表格。
步骤S34:按列查询所述目标表格,根据列查询结果判断淘汰的数据块是否命中所述第一淘汰表或所述第二淘汰表。
根据布隆过滤器的原理可知,利用作散列表(又叫哈希表,Hash table)的数据结构,可以通过一个Hash函数将一个元素映射成一个位阵列(Bit array)中的一个点,这样一来,只要看看这个点是不是1就可以知道集合中有没有它了。而本实施中按区存储哈希值,因此首先需要确定是以行为区还是以列为区,确定后为了判断当前目标缓存是否存在,需要对目标缓存进行哈希,即目标缓存在首次存入时就是通过哈希值存入的,且相同数据利用相同的哈希函数计算得到的哈希值是相同的。且通常使用多个哈希函数计算得到多个哈希值。因此,通过再次计算目标哈希值,并确定目标哈希值对应在布隆过滤器数据布局的可能位置,从该位置进行查询判断是否已经存在,若存在即可判定为命中。
例如图6所示,布隆过滤器数据布局以列为表分区存储,划分为64区,由于,hash的Key值相同,每个hash函数hash值在不同的区域的相对位置也相同。如图6,把整个BloomFilter区间按照纵向等分,每一列作为1个bloomfilter Bit数组,每一行则是某个hash值存储位置。则在查询一个数据是否存在,只需要找到Hash(key)值对应的行,将这些行组成目标表格,再对目标表格按列进行与运算,非0则认为命中。
如图6,一个Key值初次写入时,若哈希集合中hash函数的数量为5,经过5次hash后,假设落入到第五列,并且哈希值对应在第2、6、10、14、18行,那么当再次判断该Key值是否存在时,对该Key值再次进行5次hash,同样能发现得到的哈希值对应在第2、6、10、14、18行,因此将这几行取出,并对每列中的5个标识进行与运算,当计算到第5列是结果非0,则认为数据存在,若这64列遍历后不存在非0结果,则认为数据不存在。数据填写及删除时,64个区域按照LRU方式管理,每个区域填满固定数据量后,填入下一个区,循环利用64个区,当64个区填满后,按照LRU删除第一个区。另外,删除将是一个相对耗时的操作,删除某一列地址不连续,所以对应的删除操作,可以放到专门线程或除查询外的工作线程进行。可见,通过布隆过滤器在保证了缓存置换算法的前提下,减少了内存资源占用;并且,通过分区存储实现数据删除功能。
布隆过滤器存在一定的判断错误率,影响布隆过滤器错误率的因素包括:插入布隆过滤器数据量(n)、布隆过滤器数组的长度(m)、hash函数的个数k,且n和m是线程关系。举例:假定每个块占用4Bytes内存,则m/n==32,k=22(32*0.69),则错误率f=0.000,即错误率可以忽略不计。基于此,为了减少hash次数,选定hash函数k_hash为5时,错误率为:0.000063;k_hash为3时,错误率为0.000717(0.7‰),故可以优选哈希集合中hash函数的数量为3。
由上可见,本实施例中,基于布隆过滤器构建所述第一淘汰表和所述第二淘汰表;对所述第一淘汰表和所述第二淘汰表进行区域划分,得到每个淘汰表对应的多个表区间,以便将淘汰的数据块按照顺序依次写入每个所述表区间,并在所述表区间存满后,按照写入顺序对最早写入数据的表区间进行清除;确定所述第一淘汰表或所述第二淘汰表对应的布隆过滤器数据布局;所述布隆过滤器数据布局方式包括以列为表分区存储或以行为表分区存储;按照哈希集合计算当前系统访问的目标缓存对应的每个目标哈希值;若所述布隆过滤器是按照以列为表分区存储淘汰的数据块的哈希值,则确定所述目标哈希值在所述布隆过滤器数据布局中命中的所有目标行,基于所述目标行得到目标表格;按列查询所述目标表格,根据列查询结果判断淘汰的数据块是否命中所述第一淘汰表或所述第二淘汰表。通过布隆过滤器在保证了缓存置换算法的前提下,减少了内存资源占用;并且,通过分区存储实现数据删除功能。
相应的,本申请实施例还公开了一种缓存管理装置,参见图7所示,该装置包括:
分割模块11,用于对缓存进行分割,得到第一缓存区域和第二缓存区域,并将所述第一缓存区域配置为第一缓存置换方式,将所述第二缓存区域配置为第二缓存置换方式;
淘汰表添加模块12,用于为所述第一缓存区域添加用于存储从所述第一缓存区域淘汰的数据块的第一淘汰表,并为所述第二缓存区域添加用于存储从所述第二缓存区域淘汰的数据块的第二淘汰表;
区域调整模块13,用于根据系统访问缓存的记录,统计访问命中所述第一淘汰表和所述第二淘汰表的命中率,并根据所述命中率调整所述第一缓存区域和所述第二缓存区域的大小。
由上可见,本实施例中对缓存进行分割,得到第一缓存区域和第二缓存区域,并将所述第一缓存区域配置为第一缓存置换方式,将所述第二缓存区域配置为第二缓存置换方式;为所述第一缓存区域添加用于存储从所述第一缓存区域淘汰的数据块的第一淘汰表,并为所述第二缓存区域添加用于存储从所述第二缓存区域淘汰的数据块的第二淘汰表;根据系统对缓存的访问,分别统计访问命中所述第一淘汰表和所述第二淘汰表的命中率,并根据所述命中率调整所述第一缓存区域和所述第二缓存区域的大小。可见,通过分别构建第一缓存置换方式所在第一缓存区域的第一淘汰表,以及第二缓存置换方式所在第二缓存区域的第二淘汰表,第一淘汰表和第二淘汰表的命中率能够表征当前访问的倾向性,即倾向访问最近内容还是访问最频繁内容,再据此调整第一缓存区域和所述第二缓存区域的大小,使较多缓存区域符合当前缓存访问的倾向性,由此实现适应型的缓存空间置换,应于抗扫描、偶发性、周期性等批量业务操作,提升了缓存命中率。
在一些具体实施例中,所述区域调整模块13具体可以包括:
第一调整单元,用于若所述第一淘汰表的命中率大于所述第二淘汰表的命中率,则扩大所述第一缓存区域并缩小所述第二缓存区域;
第二调整单元,用于若所述第二淘汰表的命中率大于所述第一淘汰表的命中率,则扩大所述第二缓存区域并缩小所述第一缓存区域。
在一些具体实施例中,所述第一调整单元具体可以包括:
预设调整单位确定单元,用于确定预设调整单位,所述预设调整单位为目标数量的数据块;
调整单元,用于按照所述预设调整单位,通过下调所述第二缓存区域的大小,上调所述第一缓存区域的大小;
在一些具体实施例中,所述第二调整单元具体可以包括:
调整单元,用于按照所述预设调整单位,通过下调所述第一缓存区域的大小,上调所述第二缓存区域的大小。
在一些具体实施例中,所述缓存管理装置具体可以包括:
分割线位置确定单元,用于确定所述第一缓存区域和所述第二缓存区域之间分割线的位置;
相应的,所述第一调整单元具体可以包括:
第一分割线调整单元,用于以所述第二缓存区域为方向调整所述分割线的位置,以便扩大所述第一缓存区域并缩小所述第二缓存区域;
相应的,所述第二调整单元具体可以包括:
第二分割线调整单元,用于以所述第一缓存区域为方向调整所述分割线的位置,以便扩大所述第二缓存区域并缩小所述第一缓存区域。
在一些具体实施例中,所述分割模块11具体可以包括:
平均分割单元,用于对所述缓存进行平均分割,得到以分割线为界的大小相同的第一缓存区域和第二缓存区域;所述缓存以固定大小的数据块为单位。
在一些具体实施例中,所述第一缓存区域用于存储首次写入的数据块;所述第二缓存区域用于存储多次命中的数据块;
相应的,所述缓存管理装置,还包括:
数据块移动单元,用于当所述第一缓存区域中的目标数据块被再次命中时,将所述目标数据块移动到所述第二缓存区域中。
在一些具体实施例中,所述淘汰表添加模块12具体可以包括:
链表构建单元,用于基于布隆过滤器构建所述第一淘汰表和所述第二淘汰表;
区间划分单元,用于对所述第一淘汰表和所述第二淘汰表进行区域划分,得到每个淘汰表对应的多个表区间,以便将淘汰的数据块按照顺序依次写入每个所述表区间,并在所述表区间存满后,按照写入顺序对最早写入数据的表区间进行清除。
在一些具体实施例中,所述区域调整模块13具体可以包括:
数据布局确定单元,用于确定所述第一淘汰表或所述第二淘汰表对应的布隆过滤器数据布局;所述布隆过滤器数据布局方式包括以列为表分区存储或以行为表分区存储;
哈希计算单元,用于按照哈希集合计算当前系统访问的目标缓存对应的每个目标哈希值;
目标表格确定单元,用于若所述布隆过滤器是按照以列为表分区存储淘汰的数据块的哈希值,则确定所述目标哈希值在所述布隆过滤器数据布局中命中的所有目标行,基于所述目标行得到目标表格;
判断单元,用于按列查询所述目标表格,根据列查询结果判断淘汰的数据块是否命中所述第一淘汰表或所述第二淘汰表。
进一步的,本申请实施例还公开了一种电子设备,参见图8所示,图中的内容不能被认为是对本申请的使用范围的任何限制。
图8为本申请实施例提供的一种电子设备20的结构示意图。该电子设备20,具体可以包括:至少一个处理器21、至少一个存储器22、电源23、通信接口24、输入输出接口25和通信总线26。其中,所述存储器22用于存储计算机程序,所述计算机程序由所述处理器21加载并执行,以实现前述任一实施例公开的缓存管理方法中的相关步骤。
本实施例中,电源23用于为电子设备20上的各硬件设备提供工作电压;通信接口24能够为电子设备20创建与外界设备之间的数据传输通道,其所遵循的通信协议是能够适用于本申请技术方案的任意通信协议,在此不对其进行具体限定;输入输出接口25,用于获取外界输入数据或向外界输出数据,其具体的接口类型可以根据具体应用需要进行选取,在此不进行具体限定。
另外,存储器22作为资源存储的载体,可以是只读存储器、随机存储器、磁盘或者光盘等,其上所存储的资源包括操作系统221、计算机程序222及包括命中率在内的数据223等,存储方式可以是短暂存储或者永久存储。
其中,操作系统221用于管理与控制电子设备20上的各硬件设备以及计算机程序222,以实现处理器21对存储器22中海量数据223的运算与处理,其可以是Windows Server、Netware、Unix、Linux等。计算机程序222除了包括能够用于完成前述任一实施例公开的由电子设备20执行的缓存管理方法的计算机程序之外,还可以进一步包括能够用于完成其他特定工作的计算机程序。
进一步的,本申请实施例还公开了一种计算机存储介质,所述计算机存储介质中存储有计算机可执行指令,所述计算机可执行指令被处理器加载并执行时,实现前述任一实施例公开的缓存管理方法步骤。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上对本发明所提供的一种缓存管理方法、装置、设备及介质进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (11)
1.一种缓存管理方法,其特征在于,包括:
对缓存进行分割,得到第一缓存区域和第二缓存区域,并将所述第一缓存区域配置为第一缓存置换方式,将所述第二缓存区域配置为第二缓存置换方式;
为所述第一缓存区域添加用于存储从所述第一缓存区域淘汰的数据块的第一淘汰表,并为所述第二缓存区域添加用于存储从所述第二缓存区域淘汰的数据块的第二淘汰表;
根据系统对缓存的访问,分别统计访问命中所述第一淘汰表和所述第二淘汰表的命中率,并根据所述命中率调整所述第一缓存区域和所述第二缓存区域的大小。
2.根据权利要求1所述的缓存管理方法,其特征在于,所述根据所述命中率调整所述第一缓存区域和所述第二缓存区域的大小,包括:
若所述第一淘汰表的命中率大于所述第二淘汰表的命中率,则扩大所述第一缓存区域并缩小所述第二缓存区域;
若所述第二淘汰表的命中率大于所述第一淘汰表的命中率,则扩大所述第二缓存区域并缩小所述第一缓存区域。
3.根据权利要求2所述的缓存管理方法,其特征在于,所述扩大所述第一缓存区域并缩小所述第二缓存区域,包括:
确定预设调整单位,所述预设调整单位为目标数量的数据块;
按照所述预设调整单位,通过下调所述第二缓存区域的大小,上调所述第一缓存区域的大小;
所述扩大所述第二缓存区域并缩小所述第一缓存区域,包括:
按照所述预设调整单位,通过下调所述第一缓存区域的大小,上调所述第二缓存区域的大小。
4.根据权利要求2所述的缓存管理方法,其特征在于,所述对缓存进行分割,得到第一缓存区域和第二缓存区域之后,还包括:
确定所述第一缓存区域和所述第二缓存区域之间分割线的位置;
相应的,所述扩大所述第一缓存区域并缩小所述第二缓存区域,包括:
以所述第二缓存区域为方向调整所述分割线的位置,以便扩大所述第一缓存区域并缩小所述第二缓存区域;
相应的,所述扩大所述第二缓存区域并缩小所述第一缓存区域,包括:
以所述第一缓存区域为方向调整所述分割线的位置,以便扩大所述第二缓存区域并缩小所述第一缓存区域。
5.根据权利要求1所述的缓存管理方法,其特征在于,所述对缓存进行分割,得到以分割线为界的第一缓存区域和第二缓存区域,包括:
对所述缓存进行平均分割,得到以分割线为界的大小相同的第一缓存区域和第二缓存区域;所述缓存以固定大小的数据块为单位。
6.根据权利要求1所述的缓存管理方法,其特征在于,所述第一缓存区域用于存储首次写入的数据块;所述第二缓存区域用于存储多次命中的数据块;
相应的,所述缓存管理方法,还包括:
当所述第一缓存区域中的目标数据块被再次命中时,将所述目标数据块移动到所述第二缓存区域中。
7.根据权利要求1至6任一项所述的缓存管理方法,其特征在于,所述为所述第一缓存区域添加用于存储从所述第一缓存区域淘汰的数据块的第一淘汰表,并为所述第二缓存区域添加用于存储从所述第二缓存区域淘汰的数据块的第二淘汰表,包括:
基于布隆过滤器构建所述第一淘汰表和所述第二淘汰表;
对所述第一淘汰表和所述第二淘汰表进行区域划分,得到每个淘汰表对应的多个表区间,以便将淘汰的数据块按照顺序依次写入每个所述表区间,并在所述表区间存满后,按照写入顺序对最早写入数据的表区间进行清除。
8.根据权利要求7所述的缓存管理方法,其特征在于,所述统计访问命中所述第一淘汰表和所述第二淘汰表的命中率,包括:
确定所述第一淘汰表或所述第二淘汰表对应的布隆过滤器数据布局;所述布隆过滤器数据布局方式包括以列为表分区存储或以行为表分区存储;
按照哈希集合计算当前系统访问的目标缓存对应的每个目标哈希值;
若所述布隆过滤器是按照以列为表分区存储淘汰的数据块的哈希值,则确定所述目标哈希值在所述布隆过滤器数据布局中命中的所有目标行,基于所述目标行得到目标表格;
按列查询所述目标表格,根据列查询结果判断淘汰的数据块是否命中所述第一淘汰表或所述第二淘汰表。
9.一种缓存管理装置,其特征在于,包括:
分割模块,用于对缓存进行分割,得到第一缓存区域和第二缓存区域,并将所述第一缓存区域配置为第一缓存置换方式,将所述第二缓存区域配置为第二缓存置换方式;
淘汰表添加模块,用于为所述第一缓存区域添加用于存储从所述第一缓存区域淘汰的数据块的第一淘汰表,并为所述第二缓存区域添加用于存储从所述第二缓存区域淘汰的数据块的第二淘汰表;
区域调整模块,用于根据系统访问缓存的记录,统计访问命中所述第一淘汰表和所述第二淘汰表的命中率,并根据所述命中率调整所述第一缓存区域和所述第二缓存区域的大小。
10.一种电子设备,其特征在于,包括:
存储器,用于保存计算机程序;
处理器,用于执行所述计算机程序,以实现如权利要求1至8任一项所述的缓存管理方法。
11.一种计算机可读存储介质,其特征在于,用于存储计算机程序;其中计算机程序被处理器执行时实现如权利要求1至8任一项所述的缓存管理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211717772.8A CN116185904A (zh) | 2022-12-29 | 2022-12-29 | 一种缓存管理方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211717772.8A CN116185904A (zh) | 2022-12-29 | 2022-12-29 | 一种缓存管理方法、装置、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116185904A true CN116185904A (zh) | 2023-05-30 |
Family
ID=86447107
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211717772.8A Pending CN116185904A (zh) | 2022-12-29 | 2022-12-29 | 一种缓存管理方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116185904A (zh) |
-
2022
- 2022-12-29 CN CN202211717772.8A patent/CN116185904A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108763110B (zh) | 一种数据缓存方法及装置 | |
US6385699B1 (en) | Managing an object store based on object replacement penalties and reference probabilities | |
KR102043886B1 (ko) | 프로파일링 캐시 대체 | |
US6745295B2 (en) | Designing a cache with adaptive reconfiguration | |
Wu et al. | {AC-Key}: Adaptive caching for {LSM-based}{Key-Value} stores | |
CN111159066A (zh) | 一种动态调整的缓存数据管理及淘汰方法 | |
EP3388935B1 (en) | Cache management method, cache controller and computer system | |
US10409728B2 (en) | File access predication using counter based eviction policies at the file and page level | |
US20130173853A1 (en) | Memory-efficient caching methods and systems | |
US7818505B2 (en) | Method and apparatus for managing a cache memory in a mass-storage system | |
KR20190019805A (ko) | 데이터 객체 저장 방법, 장치, 및 이를 이용한 컴퓨터 프로그램이 저장되는 컴퓨터 판독가능한 저장 매체 | |
WO2009033419A1 (fr) | Procédé de traitement de mise en antémémoire de données, système et dispositif de mise en antémémoire de données | |
CN110119487B (zh) | 一种适用于发散数据的缓存更新方法 | |
US11809330B2 (en) | Information processing apparatus and method | |
CN104077242A (zh) | 一种缓存管理方法和装置 | |
US11593268B2 (en) | Method, electronic device and computer program product for managing cache | |
CN110413545B (zh) | 存储管理方法、电子设备和计算机程序产品 | |
CN111506604A (zh) | 访问数据的方法、装置和计算机程序产品 | |
CN114817195A (zh) | 一种分布式存储缓存管理的方法、系统、存储介质及设备 | |
CN109144431B (zh) | 数据块的缓存方法、装置、设备及存储介质 | |
CN109002400B (zh) | 一种内容感知型计算机缓存管理系统及方法 | |
JP2017162194A (ja) | データ管理プログラム、データ管理装置、及びデータ管理方法 | |
CN117573676A (zh) | 基于存储系统的地址处理方法、装置、存储系统及介质 | |
CN115080459A (zh) | 缓存管理方法及装置、计算机可读存储介质 | |
CN116185904A (zh) | 一种缓存管理方法、装置、设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |