CN113282523B - 一种缓存分片的动态调整方法、装置以及存储介质 - Google Patents
一种缓存分片的动态调整方法、装置以及存储介质 Download PDFInfo
- Publication number
- CN113282523B CN113282523B CN202110500319.0A CN202110500319A CN113282523B CN 113282523 B CN113282523 B CN 113282523B CN 202110500319 A CN202110500319 A CN 202110500319A CN 113282523 B CN113282523 B CN 113282523B
- Authority
- CN
- China
- Prior art keywords
- cache
- added
- fragments
- adjacent
- data
- 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
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/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0871—Allocation or management of cache space
-
- 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
本发明公开了一种缓存分片的动态调整方法,所述方法通过在程序的每一个运行周期运行时,计算相邻的缓存分片的缓存缺失率之差的绝对值,并在缓存缺失率之差的绝对值大于预设缓存缺失精度时,在两个相邻缓存分片之间添加新的缓存分片,其能够在程序运行的周期内对已配置的缓存分片进行检测,并实时添加构建满足系统定义的精度内的MRC所缺失的缓存分片,保证应用程序在整个运行过程中构建的MRC都满足系统所需要的精确性。此外,本发明还相应提供一种缓存分片的动态调整装置以及计算机可读存储介质。
Description
技术领域
本发明涉及计算机缓存体系技术领域,尤其涉及一种缓存分片的动态调整方法、装置以及计算机可读存储介质。
背景技术
基于效用的缓存分区技术(UTIL)管理共享缓存的基本思想是根据应用程序获得额外的缓存空间时带来的性能提升程度将缓存空间动态的分配给每个应用。其中对性能提升的评估通常使用缓存缺失率(MRC)来实现,MRC描述了工作负载在特定缓存容量下的缓存缺失情况。图1显示了UTIL的整体架构,该架构主要包含四个模块,分别是监视模块,分析模块,优化模块和分配模块。在程序的运行过程中,监控器连续从各个应用程序接收I/O请求,分析器根据每个应用程序的I/O请求构造对应的MRC,优化器根据每个应用程序的MRC制定分配策略以满足自定义的服务目标,分配器根据制定的分配策略执行缓存空间的再分配。在实际的程序运行过程中,UTIL将应用程序的的完整运行过程分为一系列周期以适应工作负载行为的变化,在每个周期结束时构建应用程序的MRC,并根据构建的MRC进行缓存空间的重新分配。在UTIL管理缓存空间的整个过程中,各个应用程序的MRC起着至关重要的作用,MRC反映了程序在任意可能的缓存容量下具有的缓存性能,其准确性决定了缓存分区策略制定的有效性和缓存分区的有效性。
为了充分发挥UTIL对共享缓存的高效管理,提升共享存储系统的访问性能,需要准确构造各个应用程序在运行过程中的MRC。但在实际生产中MRC的构造非常昂贵,其展示了应用在系统所能提供的所有可能缓存大小下的缓存缺失情况,因此对MRC的构建需要消耗大量的缓存资源和计算资源,在过去的很长一段时间内只能离线构造。此外,不同类型的缓存替换算法,构建MRC的方法不同,共享缓存系统很难在面对不同缓存替换算法时拥有灵活的扩展性和良好的适应性。对此,研究人员进行了广泛的研究。
为了支持任何缓存算法的建模,研究人员提出了一种微型模拟的技术,微型模拟提出对于给定的缓存大小,可以在一个将原缓存缩小的微型缓存上运行完整的、未修改的算法对基于空间哈希采样后的请求样本进行建模的方法。图2展示了微型模拟的原理,图中左边的Cache表示真实的缓存大小和真实的访问数据流reqs,图中箭头的大小表示了对访问流中的数据进行哈希计算后得到的不同哈希值的数量大小。传统的方式是使完整的访问流在真实的缓存上运行,得到数据在缓存中的访问情况,以进行相关的计算。图2中右边是使用微型模拟方法的结果,展示了将缓存大小和输入数据流缩小2倍和缩小128倍的例子。整体来说,微型模拟使用采样率R对大小为S的缓存建模,将缓存大小缩小到R×S并使用具有采样率R的基于哈希的空间过滤器采样访问流,使采样后的访问流在缩小的缓存上运行,获得数据在缓存中的访问情况,并计算缺失率作为真实缺失率的近似值。例如,对于应用程序A的一段访问流T,需要获取其在缓存大小为1GB时的缺失率,传统做法是将访问流T在1GB缓存上运行,获得缓存数据访问的信息,并计算缺失率。微型模拟则是同时以R的比例缩小访问流T和缓存大小,选择R=0.01时,并采用空间哈希近似重用距离对访问流T进行采样,将采样后的数据在1GB×0.01大小的缓存上运行,以此模拟真实的缓存情况,并计算近似的缺失率。与传统的全尺寸模拟相比,微型模拟实现了空间和时间的大幅减少。
微型模拟在一定程度上缓解了对缓存空间的消耗,例如,在线构建程序在10GB缓存容量下的MRC时,假如需要计算1GB,2GB,3GB三个缓存大小的缺失率,则需要消耗6GB的缓存空间用作缓存缺失率的计算,这严重消耗了珍贵的缓存资源,使得程序实际可用的缓存空间大大减少。若以R的采样率对访问流过滤和缩小缓存,则在上述情况下微型模拟只需要R×6GB的缓存空间。当R=0.01时,即只需要设置0.01GB,0.02GB,0.03GB三个小缓存来分别计算1GB,2GB,3GB缓存下的缺失率。微型模拟把这些按比例缩小后的微型缓存叫做缓存分片。图3展示了实时环境下构建非堆栈缓存替换算MRC的方法。在程序的运行中,访问数据流同时运行于用于计算缺失率的缓存分片和真实的缓存上,在任意时刻,访问与每个缓存分片相关联的缺失率,就可以按需生成MRC。
本发明人在实施本发明的过程中发现,虽然采用微型模拟技术能够在一定程度上缓解了对缓存空间的消耗,但是现有使用的方法是在程序运行之前设置固定数量和固定大小的缓存分片,而由于无法在程序运行前很好的了解程序的访存行为,程序运行前缓存分片的配置具有一定的盲目性,不能很好的适配程序的真实访问模式。这会导致缺少一部分有效的缓存分片,即缺失一些关键的缓存大小,从而构造的MRC不那么准确,影响UTIL对缓存分区策略的有效制定,降低缓存分区的效率和共享缓存的效率。
发明内容
本发明提供一种缓存分片的动态调整方法、装置以及计算机可读存储介质,其能根据程序的访问行为实时进行缺失缓存分片的判断和添加,从而使得构建的MRC更加准确。
本发明实施例提供的缓存分片的动态调整方法,包括:
在程序的每一个运行周期运行时,计算初始已配置好的缓存分片组中的每个缓存分片的缓存缺失率;
根据已配置好的每个缓存分片的缓存缺失率,按照缓存大小从小到大的顺序计算相邻的缓存分片的缓存缺失率之差的绝对值,得到每一组相邻缓存分片的缓存缺失率之差的绝对值;
当检测到任意一组相邻缓存分片的缓存缺失率之差的绝对值大于预设缓存缺失精度时,在该组相邻缓存分片中的两个相邻缓存分片之间添加新的缓存分片。
优选的,所述当检测到任意一组相邻缓存分片的缓存缺失率之差的绝对值大于预设缓存缺失精度时,在该组相邻缓存分片中的两个相邻缓存分片之间添加新的缓存分片,具体包括:
当检测到任意一组相邻缓存分片的缓存缺失率之差的绝对值大于预设缓存缺失精度时,判定该组相邻缓存分片中需添加缓存分片,并对待添加的缓存分片进行计算;
计算待添加的缓存分片的大小;
计算待添加的缓存分片的缺失数;
还原待添加的缓存分片的缓存数据;
根据待添加的缓存分片的大小、待添加的缓存分片的缺失数和待添加的缓存分片的缓存数据,确定该组相邻缓存分片中所添加的新的带有存储数据的缓存分片,并在该组相邻缓存分片中的两个相邻缓存分片之间添加新的缓存分片。
优选的,所述计算待添加的缓存分片的大小,具体为:
根据相邻的两个缓存分片的缓存大小,计算相邻的两个缓存分片的缓存大小的平均值,并将该平均值作为待添加的缓存分片的大小。
优选的,所述计算待添加的缓存分片的缺失数,具体包括:
获取待添加的缓存分片的缓存大小、当前时刻之前的整个运行周期已经出现的访问引用流的工作集数量;
当待添加的缓存分片的缓存大小大于等于所述工作集数量时,所述待添加的缓存分片的缺失数等于所述工作集数量;
当待添加的缓存分片的缓存大小小于所述工作集数量时,所述待添加的缓存分片的缺失数等于所述工作集合数量与待添加的缓存分片中由于数据替换引起的数据缺失数之和。
优选的,所述待添加的缓存分片中由于数据替换引起的数据缺失数,通过以下公式计算:
优选的,所述还原待添加的缓存分片的缓存数据,具体包括:
计算相邻的两个缓存分片中缓存较大的缓存分片的缓存中每一部分特征数据占其对应的缓存空间的比率;
根据相邻的缓存分片中缓存较大的缓存分片的缓存中每一部分特征数据占其对应的缓存空间的比率和待添加的缓存分片的缓存大小,计算相邻的缓存分片中缓存较大的缓存分片中各部分特征数据在待添加的缓存分片中所占的缓存空间比例;
根据相邻的缓存分片中缓存较大的缓存分片中各部分特征数据在待添加的缓存分片中所占的缓存空间比例,从相邻的缓存分片中缓存较大的缓存分片中选取各部分特征数据中的热数据依次复制到待添加的缓存分片管理的各部分特征数据中,对待添加的缓存分片的缓存数据进行还原。
本发明另一实施例对应提供了一种缓存分片的动态调整装置,包括:
缓存缺失率计算模块,用于在程序的每一个运行周期运行中,计算初始已配置好的缓存分片组中的每个缓存分片的缓存缺失率;
缓存缺失率之差计算模块,用于根据已配置好的每个缓存分片的缓存缺失率,按照缓存大小从小到大的顺序计算相邻的缓存分片的缓存缺失率之差的绝对值,得到每一组相邻缓存分片的缓存缺失率之差的绝对值;
缓存分片添加模块,用于当检测到任意一组相邻缓存分片的缓存缺失率之差的绝对值大于预设缓存缺失精度时,在该组相邻缓存分片中的两个相邻缓存分片之间添加新的缓存分片。
优选的,所述缓存分片添加模块,具体用于:
当检测到任意一组相邻缓存分片的缓存缺失率之差的绝对值大于预设缓存缺失精度时,判定该组相邻缓存分片中需添加缓存分片,并对待添加的缓存分片进行计算;
计算待添加的缓存分片的大小;
计算待添加的缓存分片的缺失数;
还原待添加的缓存分片的缓存数据;
根据待添加的缓存分片的大小、待添加的缓存分片的缺失数和待添加的缓存分片的缓存数据,确定该组相邻缓存分片中所添加的新的带有存储数据的缓存分片,并在该组相邻缓存分片中的两个相邻缓存分片之间添加新的缓存分片。
本发明另一实施例提供了一种计算机可读存储介质,所述计算机可读存储介质包括存储的计算机程序,其中,在所述计算机程序运行时控制所述计算机可读存储介质所在设备执行上述发明实施例所述的缓存分片的动态调整方法。
与现有技术相比,本发明实施例提供的缓存分片的动态调整方法通过在程序的每一个运行周期运行时,计算相邻的缓存分片的缓存缺失率之差的绝对值,并在缓存缺失率之差的绝对值大于预设缓存缺失精度时,在两个相邻缓存分片之间添加新的缓存分片,其能够在程序运行的周期内对已配置的缓存分片进行检测,并实时添加构建满足系统定义的精度内的MRC所缺失的缓存分片,保证应用程序在整个运行过程中构建的MRC都满足系统所需要的精确性。此外,本发明实施例还相应提供一种缓存分片的动态调整装置以及计算机可读存储介质。
附图说明
图1是UTIL的整体架构图;
图2是微型模拟的原理图;
图3是实时环境下构建非堆栈缓存替换算MRC的流程框图;
图4是本发明实施例提供的缓存分片的动态调整方法的流程示意图;
图5是本发明实施例提供的缓存分片的动态调整方法中从Si+1复制数据到Sk的过程框图;
图6是本发明实施例提供的缓存分片的动态调整装置的结构框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
参见图4,其是本发明实施例提供的缓存分片的动态调整方法的流程示意图。本发明实施例提供的缓存分片的动态调整方法,包括步骤S10到步骤S12:
步骤S10,在程序的每一个运行周期运行时,计算初始已配置好的缓存分片组中的每个缓存分片的缓存缺失率。
可以理解的是,在基于效用的缓存分区(UTIL)中通常把程序的完整运行过程划分成一个一个的周期,在每个周期结束时对缓存空间进行再分配。在本发明实施例中,不同的应用程序在运行前就已配置好缓存分片组,包括缓存分片1~缓存分片n。由于程序在运行时存在着某些应用程序的访问局部性很差,或者访问模式突然发生了变化,导致完全偏离了以前的访问模式的情况,这时按照以前的访问模式配置的缓存分片与当前的访问模式并不完全匹配。此外,对程序的运行过程划分运行周期时,如果划分的周期间隔过大,已经超出了程序访问模式所具有局部性的范围,在这种情况下按照上一周期配置的缓存分片也无法与当前运行周期进行很好的匹配。因此,在本发明实施例对缓存空间的优化分配,是在程序的在运行过程中对缺失缓存分片的实时添加,以提升MRC的精度。
步骤S11,根据已配置好的每个缓存分片的缓存缺失率,按照缓存大小从小到大的顺序计算相邻的缓存分片的缓存缺失率之差的绝对值,得到每一组相邻缓存分片的缓存缺失率之差的绝对值。
在本发明实施例中,相邻的缓存分片是指在配置的缓存分片组中,两个具有相邻缓存大小的缓存分片。使用Si表示第i个缓存分片,Si+1表示第i个分片相邻的缓存分片,MRi表示Si的缓存缺失率,ΔMissratio表示两个相邻缓存分片Si和Si+1之间的缓存缺失率之差,三者之间的关系如式(1)所示:
ΔMissratio=|MRi-MRi+1| (1)
步骤S12,当检测到任意一组相邻缓存分片的缓存缺失率之差的绝对值大于预设缓存缺失精度时,在该组相邻缓存分片中的两个相邻缓存分片之间添加新的缓存分片。
本发明实施例提供的缓存分片的动态调整方法通过在程序的每一个运行周期运行时,计算相邻的缓存分片的缓存缺失率之差的绝对值,并在缓存缺失率之差的绝对值大于预设缓存缺失精度时,在两个相邻缓存分片之间添加新的缓存分片,其能够在程序运行的周期内对已配置的缓存分片进行检测,并实时添加构建满足系统定义的精度内的MRC所缺失的缓存分片,保证应用程序在整个运行过程中构建的MRC都满足系统所需要的精确性。
在本发明实施例中,程序的一个运行周期内的任何时刻检测到两个相邻缓存分片的缺失率差异超过了预设缓存缺失精度α时,就添加一个新的缓存分片。对于新添加的缓存分片,由于并不是在该运行周期一开始就存在的,所以该缓存分片并未记录在当前运行周期已经有的访问数据流,即缓存中无数据,也没有记录缓存访问相关的缺失数。如果后续直接在空缓存中进行数据的存储以及数据的替换,并在此基础上进行该缓存分片数据访问命中和缺失情况的统计,则得到的访问缺失情况与真实的访问缺失会有很大的出入,在此基础上计算的缓存缺失率并不是真实的缺失率。因此,为了能够准确模拟出该缓存分片真实的数据访问情况,需要确定该缓存分片从该运行周期开始就存在一直程序运行到现在时刻缓存分片的数据缺失情况,以及缓存内部的数据存储情况,以使后续的数据访问在一个正确的缓存基础上进行。
进而,在一种可选的实施方式中,所述步骤S12“当检测到任意一组相邻缓存分片的缓存缺失率之差的绝对值大于预设缓存缺失精度时,在该组相邻缓存分片中的两个相邻缓存分片之间添加新的缓存分片”,具体包括:
当检测到任意一组相邻缓存分片的缓存缺失率之差的绝对值大于预设缓存缺失精度时,判定该组相邻缓存分片中需添加缓存分片,并对待添加的缓存分片进行计算;
计算待添加的缓存分片的大小;
计算待添加的缓存分片的缺失数;
还原待添加的缓存分片的缓存数据;
根据待添加的缓存分片的大小、待添加的缓存分片的缺失数和待添加的缓存分片的缓存数据,确定该组相邻缓存分片中所添加的新的带有存储数据的缓存分片,并在该组相邻缓存分片中的两个相邻缓存分片之间添加新的缓存分片。
在一种可选的实施方式中,所述计算待添加的缓存分片的大小,具体为:
根据相邻的两个缓存分片的缓存大小,计算相邻的两个缓存分片的缓存大小的平均值,并将该平均值作为待添加的缓存分片的大小。
在一种可选的实施方式中,所述计算待添加的缓存分片的缺失数,具体包括:
获取待添加的缓存分片的缓存大小、当前时刻之前的整个运行周期已经出现的访问引用流的工作集数量;
当待添加的缓存分片的缓存大小大于等于所述工作集数量时,所述待添加的缓存分片的缺失数等于所述工作集数量;
当待添加的缓存分片的缓存大小小于所述工作集数量时,所述待添加的缓存分片的缺失数等于所述工作集合数量与待添加的缓存分片中由于数据替换引起的数据缺失数之和。
在本发明实施例中,当待添加的缓存分片的缓存大小大于等于所述工作集数量W时,这意味着,如果添加的缓存分片从该运行周期开始就一直存在,那么程序运行到此时刻,该缓存分片的缓存空间还没有被完全占满,缓存分片还没有发生任何的数据替换。在这种情况下,待添加的缓存分片的缓存缺失数就是工作集的数量W,即
如果待添加的缓存分片的缓存大小小于工作集数量W,即这意味着如果待添加的缓存分片Sk从该运行周期开始就一直存在,那么程序运行到此时刻,该缓存分片的缓存空间已经被完全占满,并且已经发生了数据替换,Sk产生的缓存缺失数大于W,即这时,Sk的缺失数由两部分组成:工作集数量W和由于缓存空间已满进行的数据替换引起的数据缺失,缓存空间已满进行数据替换引起的数据缺失数部分用P表示,此时存在如式(2)所示的关系:
使用一种近似方法估计P的值,使用ΔMisscount表示了两个相邻缓存分片Si和Si+1的缓存缺失数之差,计算方法如式(3)所示:
公式(4)成立的原因是,对于任意大小的一个缓存,在缓存满之前,每次缓存缺失就会把该缺失的数据放入到缓存。当缓存满了之后,每有一次数据缺失,首先会删除缓存中的某个数据,然后将缺失的数据放入缓存,整个过程就发生了一次缓存数据替换。所以,除了在缓存未满之前的缺失次数不会发生数据替换,缓存满之后的每次数据缺失都会发生一次数据替换。因此,数据替换的次数就是缓存的总缺失数减去缓存大小。对于Si和Si+1,因为Si+1的缓存大小大于Si,所以Si+1的缓存缺失数小于Si,同时Si+1的缓存数据替换次数小于Si。在此处可以近似的认为,因为Si进行的次数据替换,导致了Si比Si+1多了ΔMisscount次数据缺失,据此可以近似估算出Si平均每一次数据替换带来次数据缺失。同理,根据该结论可以确定新添加的缓存分片的缓存缺失数,对于待添加的缓存分片Sk,同样满足关系(5):
根据以上的理论,Sk由数据替换引起的数据缺失数可以按照公式(6)进行计算:
则Sk应有的访存缺失数为:
在一种可选的实施方式中,所述还原待添加的缓存分片的缓存数据,具体包括:
计算相邻的两个缓存分片中缓存较大的缓存分片的缓存中每一部分特征数据占其对应的缓存空间的比率;
根据相邻的缓存分片中缓存较大的缓存分片的缓存中每一部分特征数据占其对应的缓存空间的比率和待添加的缓存分片的缓存大小,计算相邻的缓存分片中缓存较大的缓存分片中各部分特征数据在待添加的缓存分片中所占的缓存空间比例;
根据相邻的缓存分片中缓存较大的缓存分片中各部分特征数据在待添加的缓存分片中所占的缓存空间比例,从相邻的缓存分片中缓存较大的缓存分片中选取各部分特征数据中的热数据依次复制到待添加的缓存分片管理的各部分特征数据中,对待添加的缓存分片的缓存数据进行还原。
在本发明实施例中,是根据待添加的缓存分片的相邻缓存分片中较大缓存分片Si+1内部的数据布局情况来近似处理待添加的缓存分Sk的数据存储。处理的方式是以较大缓存分片Si+1中数据的存储布局情况按照相同的比例复制到Sk。实现的过程主要分为以下三个步骤,首先是确定缓存分片Sk中负责管理不同特征数据的各个部分所占用的缓存比例,其次是确定较大缓存分片Si+1管理的各部分特征数据中哪些需要复制到新添加的缓存分片,最后将相关数据复制到新的缓存分片Sk。
参见上表1,表1描述了待添加的缓存分片的缓存数据还原的过程。
表1
两个相邻缓存分片分别为Si和Si+1,两者之间新添加的缓存分片为Sk,各自的缓存大小分别为 和其中L1,L2,L3,……,Ln,分别表示缓存分片Si+1中管理的各个不同特征数据的部分,如果是LRU算法,只有一个LRU链表作为L1,如果是ARC算法,则包括了L1,L2,L3和L4(其中L3和L4分别是ARC算法中负责保留ghost数据的B1和B2)。Lk1,Lk2,Lk3,……,Lkn表示添加的缓存分片Sk中对应的各个部分。Ri表示缓存分片Si+1中第i部分即Li占Si+1缓存总空间的比例。首先对于缓存分片Si+1,分别计算其缓存中每一部分特征数据所占缓存总空间的比率,计算方式如式(8)所示:
然后根据公式(9)以相同比例近似计算Si+1中各部分特征数据在Sk中所占用的缓存空间大小:
在确定Sk中各部分不同的特征数据所占缓存空间的大小后,由于Sk的缓存空间小于Si+1,不能完全容纳Si+1中存储的数据,因此需要从Si+1中选择Sk每个部分应存储的内容。不同的缓存替换算法尽管管理数据的方式不同,但最终的目的都是把算法定义的最热的数据保留在缓存中,对于缓存中管理的不同特征的数据,只需要把每个部分的热数据保留到新缓存分片即可。对于以LRU链表或者是LRU栈管理的数据,链表中的MRU端以及入栈端是热数据端,对于以队列管理的数据,则队列的入队端是热数据端。在共享缓存的系统中,各个应用程序使用的是相同的缓存替换算法,则每个缓存分片在运行时对数据的删除和替换测策略都是一样的,即所对数据的冷热定义是相同的。因此,在执行的过程中从缓存分片Si+1中每个部分的热数据端开始依次复制Lki大小的数据到Sk对应的管理部分。以ARC算法为例,Si+1的缓存大小是10,Sk的缓存大小是4,图5显示了缓存分片Si+1内部的数据布局以及从Si+1复制数据到Sk的过程。
图5中缓存分片Si+1管理各部分不同特征数据的缓存大小分别是T1=6,T2=4,B1=3,B2=5。ARC算法的四个部分都是通过LRU链表来管理数据,其中T1和T2是真实的缓存空间,其中,T1部分存储的是初次被访问的数据,T2中存储的是被访问两次及以上的数据。而B1和B2是算法定义的ghost链表,存储的是最近被淘汰出去的页面信息,不占用真实的缓存空间,一般放在内存中。
算法中各个链表的MRU端和LRU端如图5所示,其中MRU端是最新存储的数据,数据从MRU端向LRU端移动,即越靠近LRU端的数据,其热度相对越低。添加的缓存分片Sk的各部分特征数据缓存大小分别是Tk1=3,Tk2=2,Bk1=2,Bk2=3,Tk1的数据来源于Si+1中的T1,从T1的MRU端开始,将数据复制到Tk1,直到Tk1的缓存空间被占满。同样的,Sk中的Tk2的数据来源于Si+1中的T2,从T2的MRU端开始,将数据复制到Tk2,直到Tk2的缓存空间被占满。在ARC算法中,B1和B2存储的是从T1和T2中被淘汰出去的数据的信息,则Si+1中原本存储在T1和T2由于Sk的缓存容量小而无法被存储的数据,在Sk中相当于从Tk1和Tk2中被淘汰出去了,因此这部分数据应该存在于Sk中的B1和B2。Sk中的B1存储的数据信息由两部分来源,一部分是Si+1的T1中没有被Tk1存储的数据,其次是是Si+1中B1存储的内容,数据复制的方向同样是从MRU端开始一直到Bk1的空间被占满。Sk中的B2同理。
综上,本发明实施例在对添加的缓存分片进行构建时,是结合对添加的缓存分片Sk缓存缺失数的计算,和对Sk缓存数据的还原进行计算的。该缓存分片就可作为其对应缓存大小的微型缓存进行后续的数据访问,并记录缓存分片的数据访问情况,以在任何需要的时刻计算其对应的缓存缺失率,并与其他缓存分片计算的缺失率一起构建程序完整的MRC。
参见图2,是本发明实施例相应提供的缓存分片的动态调整装置的结构框图。本发明实施例提供的缓存分片的动态调整装置,用于执行上述实施例提供的缓存分片的动态调整方法的全部步骤和流程,包括:
缓存缺失率计算模块100,用于在程序的每一个运行周期运行中,计算初始已配置好的缓存分片组中的每个缓存分片的缓存缺失率;
缓存缺失率之差计算模块110,用于根据已配置好的每个缓存分片的缓存缺失率,按照缓存大小从小到大的顺序计算相邻的缓存分片的缓存缺失率之差的绝对值,得到每一组相邻缓存分片的缓存缺失率之差的绝对值;
缓存分片添加模块120,用于当检测到任意一组相邻缓存分片的缓存缺失率之差的绝对值大于预设缓存缺失精度时,在该组相邻缓存分片中的两个相邻缓存分片之间添加新的缓存分片。
在一种可选的实施方式中,所述缓存分片添加模块120,具体用于:
当检测到任意一组相邻缓存分片的缓存缺失率之差的绝对值大于预设缓存缺失精度时,判定该组相邻缓存分片中需添加缓存分片,并对待添加的缓存分片进行计算;
计算待添加的缓存分片的大小;
计算待添加的缓存分片的缺失数;
还原待添加的缓存分片的缓存数据;
根据待添加的缓存分片的大小、添加的缓存分片的缺失数和待添加的缓存分片的缓存数据,确定该组相邻缓存分片中所添加的新的缓存分片的布局,并在该组相邻缓存分片中的两个相邻缓存分片之间添加新的缓存分片。
在一种可选的实施方式中,所述计算待添加的缓存分片的大小,具体为:根据相邻的两个缓存分片的缓存大小,计算相邻的两个缓存分片的缓存大小的平均值,并将该平均值作为待添加的缓存分片的大小。
在一种可选的实施方式中,所述计算待添加的缓存分片的缺失数,具体包括:
获取待添加的缓存分片的缓存大小、当前时刻之前的整个运行周期已经出现的访问引用流的工作集数量;
当待添加的缓存分片的缓存大小大于等于所述工作集数量时,所述待添加的缓存分片的缺失数等于所述工作集数量;
当待添加的缓存分片的缓存大小小于所述工作集数量时,所述待添加的缓存分片的缺失数等于所述工作集合数量与待添加的缓存分片中由于数据替换引起的数据缺失数之和。
在一种可选的实施方式中,所述待添加的缓存分片中由于数据替换引起的数据缺失数,通过以下公式计算:
在一种可选的实施方式中,所述还原待添加的缓存分片的缓存数据,具体包括:
计算相邻的两个缓存分片中缓存较大的缓存分片的缓存中每一部分特征数据占其对应的缓存空间的比率;
根据相邻的缓存分片中缓存较大的缓存分片的缓存中每一部分特征数据占其对应的缓存空间的比率和待添加的缓存分片的缓存大小,计算相邻的缓存分片中缓存较大的缓存分片中各部分特征数据在待添加的缓存分片中所占的缓存空间比例;
根据相邻的缓存分片中缓存较大的缓存分片中各部分特征数据在待添加的缓存分片中所占的缓存空间比例,从相邻的缓存分片中缓存较大的缓存分片中选取各部分特征数据中的热数据依次复制到待添加的缓存分片管理的各部分特征数据中,对待添加的缓存分片的缓存数据进行还原。
需要说明的是,本发明实施例提供的缓存分片的动态调整装置用于执行所述缓存分片的动态调整方法的全部步骤,两者的工作原理和作用一一对应,这里不再作过多的赘述。
此外,以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。另外,本发明提供的装置实施例附图中,模块之间的连接关系表示它们之间具有通信连接,具体可以实现为一条或多条通信总线或信号线。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
本发明又一实施例相应提供一种计算机可读存储介质,所述计算机可读存储介质包括存储的计算机程序,其中,在所述计算机程序运行时控制所述计算机可读存储介质所在设备执行如上述实施例提供的所述的缓存分片配置的优化方法。
其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random AccessMemory)、电载波信号、电信信号以及软件分发介质等。
以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围。
Claims (6)
1.一种缓存分片的动态调整方法,其特征在于,包括:
在程序的每一个运行周期运行时,计算初始已配置好的缓存分片组中的每个缓存分片的缓存缺失率;
根据已配置好的每个缓存分片的缓存缺失率,按照缓存大小从小到大的顺序计算相邻的缓存分片的缓存缺失率之差的绝对值,得到每一组相邻缓存分片的缓存缺失率之差的绝对值;
当检测到任意一组相邻缓存分片的缓存缺失率之差的绝对值大于预设缓存缺失精度时,在该组相邻缓存分片中的两个相邻缓存分片之间添加新的缓存分片;
其中,所述当检测到任意一组相邻缓存分片的缓存缺失率之差的绝对值大于预设缓存缺失精度时,在该组相邻缓存分片中的两个相邻缓存分片之间添加新的缓存分片,具体包括:
当检测到任意一组相邻缓存分片的缓存缺失率之差的绝对值大于预设缓存缺失精度时,判定该组相邻缓存分片中需添加缓存分片,并对待添加的缓存分片进行计算;
计算待添加的缓存分片的大小;
计算待添加的缓存分片的缺失数;
还原待添加的缓存分片的缓存数据;
根据待添加的缓存分片的大小、待添加的缓存分片的缺失数和待添加的缓存分片的缓存数据,确定该组相邻缓存分片中所添加的新的带有存储数据的缓存分片,并在该组相邻缓存分片中的两个相邻缓存分片之间添加新的缓存分片;
其中,所述计算待添加的缓存分片的大小,具体为:
根据相邻的两个缓存分片的缓存大小,计算相邻的两个缓存分片的缓存大小的平均值,并将该平均值作为待添加的缓存分片的大小。
2.如权利要求1所述的缓存分片的动态调整方法,其特征在于,所述计算待添加的缓存分片的缺失数,具体包括:
获取待添加的缓存分片的缓存大小、当前时刻之前的整个运行周期已经出现的访问引用流的工作集数量;
当待添加的缓存分片的缓存大小大于等于所述工作集数量时,所述待添加的缓存分片的缺失数等于所述工作集数量;
当待添加的缓存分片的缓存大小小于所述工作集数量时,所述待添加的缓存分片的缺失数等于所述工作集数量与待添加的缓存分片中由于数据替换引起的数据缺失数之和。
4.如权利要求1所述的缓存分片的动态调整方法,其特征在于,所述还原待添加的缓存分片的缓存数据,具体包括:
计算相邻的两个缓存分片中缓存较大的缓存分片的缓存中每一部分特征数据占其对应的缓存空间的比率;
根据相邻的缓存分片中缓存较大的缓存分片的缓存中每一部分特征数据占其对应的缓存空间的比率和待添加的缓存分片的缓存大小,计算相邻的缓存分片中缓存较大的缓存分片中各部分特征数据在待添加的缓存分片中所占的缓存空间比例;
根据相邻的缓存分片中缓存较大的缓存分片中各部分特征数据在待添加的缓存分片中所占的缓存空间比例,从相邻的缓存分片中缓存较大的缓存分片中选取各部分特征数据中的热数据依次复制到待添加的缓存分片管理的各部分特征数据中,对待添加的缓存分片的缓存数据进行还原。
5.一种缓存分片的动态调整装置,其特征在于,包括:
缓存缺失率计算模块,用于在程序的每一个运行周期运行中,计算初始已配置好的缓存分片组中的每个缓存分片的缓存缺失率;
缓存缺失率之差计算模块,用于根据已配置好的每个缓存分片的缓存缺失率,按照缓存大小从小到大的顺序计算相邻的缓存分片的缓存缺失率之差的绝对值,得到每一组相邻缓存分片的缓存缺失率之差的绝对值;
缓存分片添加模块,用于当检测到任意一组相邻缓存分片的缓存缺失率之差的绝对值大于预设缓存缺失精度时,在该组相邻缓存分片中的两个相邻缓存分片之间添加新的缓存分片;
其中,所述当检测到任意一组相邻缓存分片的缓存缺失率之差的绝对值大于预设缓存缺失精度时,在该组相邻缓存分片中的两个相邻缓存分片之间添加新的缓存分片,具体包括:
当检测到任意一组相邻缓存分片的缓存缺失率之差的绝对值大于预设缓存缺失精度时,判定该组相邻缓存分片中需添加缓存分片,并对待添加的缓存分片进行计算;
计算待添加的缓存分片的大小;
计算待添加的缓存分片的缺失数;
还原待添加的缓存分片的缓存数据;
根据待添加的缓存分片的大小、待添加的缓存分片的缺失数和待添加的缓存分片的缓存数据,确定该组相邻缓存分片中所添加的新的带有存储数据的缓存分片,并在该组相邻缓存分片中的两个相邻缓存分片之间添加新的缓存分片;
其中,所述计算待添加的缓存分片的大小,具体为:
根据相邻的两个缓存分片的缓存大小,计算相邻的两个缓存分片的缓存大小的平均值,并将该平均值作为待添加的缓存分片的大小。
6.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质包括存储的计算机程序,其中,在所述计算机程序运行时控制所述计算机可读存储介质所在设备执行如权利要求1至4中任意一项所述的缓存分片的动态调整方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110500319.0A CN113282523B (zh) | 2021-05-08 | 2021-05-08 | 一种缓存分片的动态调整方法、装置以及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110500319.0A CN113282523B (zh) | 2021-05-08 | 2021-05-08 | 一种缓存分片的动态调整方法、装置以及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113282523A CN113282523A (zh) | 2021-08-20 |
CN113282523B true CN113282523B (zh) | 2022-09-30 |
Family
ID=77278213
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110500319.0A Active CN113282523B (zh) | 2021-05-08 | 2021-05-08 | 一种缓存分片的动态调整方法、装置以及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113282523B (zh) |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1566341A (zh) * | 2003-06-12 | 2005-01-19 | 北京安波特基因工程技术有限公司 | 一种用于抗体改形的体外分子定向进化方法 |
CN101142774A (zh) * | 2003-09-09 | 2008-03-12 | 高通股份有限公司 | Mimo通信系统中的递增冗余传输 |
CN101682497A (zh) * | 2007-06-08 | 2010-03-24 | 高通股份有限公司 | 单载波频分多址中对通信信道的分层调制 |
CN102156665A (zh) * | 2011-04-13 | 2011-08-17 | 杭州电子科技大学 | 一种虚拟化系统竞争资源差异化服务方法 |
CN107003919A (zh) * | 2014-12-24 | 2017-08-01 | 英特尔公司 | 容错自动双列直插存储器模块刷新 |
CN109947672A (zh) * | 2019-03-21 | 2019-06-28 | 南京审计大学 | 一种基于概率分布的mlc stt-ram缓存数据管理方法 |
CN110147331A (zh) * | 2019-05-16 | 2019-08-20 | 重庆大学 | 缓存数据处理方法、系统及可读存储介质 |
CN110879797A (zh) * | 2019-10-31 | 2020-03-13 | 西安交通大学 | 高速可重构处理器配置信息缓存替换方法及存储体系结构 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9336141B2 (en) * | 2013-03-13 | 2016-05-10 | Cloud Physics, Inc. | Hash-based spatial sampling for efficient cache utility curve estimation and cache allocation |
US20160357674A1 (en) * | 2015-06-07 | 2016-12-08 | Cloud Physics, Inc. | Unified Online Cache Monitoring and Optimization |
EP3388935B1 (en) * | 2016-01-06 | 2021-09-29 | Huawei Technologies Co., Ltd. | Cache management method, cache controller and computer system |
US9978118B1 (en) * | 2017-01-25 | 2018-05-22 | Microsoft Technology Licensing, Llc | No miss cache structure for real-time image transformations with data compression |
-
2021
- 2021-05-08 CN CN202110500319.0A patent/CN113282523B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1566341A (zh) * | 2003-06-12 | 2005-01-19 | 北京安波特基因工程技术有限公司 | 一种用于抗体改形的体外分子定向进化方法 |
CN101142774A (zh) * | 2003-09-09 | 2008-03-12 | 高通股份有限公司 | Mimo通信系统中的递增冗余传输 |
CN101682497A (zh) * | 2007-06-08 | 2010-03-24 | 高通股份有限公司 | 单载波频分多址中对通信信道的分层调制 |
CN102156665A (zh) * | 2011-04-13 | 2011-08-17 | 杭州电子科技大学 | 一种虚拟化系统竞争资源差异化服务方法 |
CN107003919A (zh) * | 2014-12-24 | 2017-08-01 | 英特尔公司 | 容错自动双列直插存储器模块刷新 |
CN109947672A (zh) * | 2019-03-21 | 2019-06-28 | 南京审计大学 | 一种基于概率分布的mlc stt-ram缓存数据管理方法 |
CN110147331A (zh) * | 2019-05-16 | 2019-08-20 | 重庆大学 | 缓存数据处理方法、系统及可读存储介质 |
CN110879797A (zh) * | 2019-10-31 | 2020-03-13 | 西安交通大学 | 高速可重构处理器配置信息缓存替换方法及存储体系结构 |
Non-Patent Citations (3)
Title |
---|
Efficient MRC Construction with SHARDS;Carl A. Waldspurger;《http://w.waldspurger.org/carl/papers/shards-fast15.pdf》;20151231;1-17 * |
片上多处理器体系结构中Cache一致性模型研究;李功明;《中国优秀博硕士学位论文全文数据库(博士)信息科技辑》;20131015(第10期);I137-15 * |
边缘存储的发展现状与挑战;刘铎;《中兴通讯技术》;20190531;第25卷(第03期);15-22 * |
Also Published As
Publication number | Publication date |
---|---|
CN113282523A (zh) | 2021-08-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8429346B1 (en) | Automated data relocation among storage tiers based on storage load | |
JP4405935B2 (ja) | マルチパス・コンピュータ・システムにおけるパス間でワークロードのバランスを取る方法および装置 | |
US7694070B2 (en) | Computer system for managing performances of storage apparatus and performance management method of the computer system | |
US6928451B2 (en) | Storage system having means for acquiring execution information of database management system | |
EP3089039B1 (en) | Cache management method and device | |
US7039766B1 (en) | Prescheduling sequential data prefetches in a preexisting LRU cache | |
US8850122B2 (en) | Cache optimization via predictive cache size modification | |
US5150472A (en) | Cache management method and apparatus for shared, sequentially-accessed, data | |
CN103795781B (zh) | 一种基于文件预测的分布式缓存方法 | |
US20130232310A1 (en) | Energy efficiency in a distributed storage system | |
JP2005285058A (ja) | 記憶装置のキャッシュ管理方法 | |
CN103959275B (zh) | 优化多处理器计算系统中的存储器存取的方法和系统 | |
CN110096350B (zh) | 基于集群节点负载状态预测的冷热区域划分节能存储方法 | |
US5857101A (en) | Program lunch acceleration | |
CN109840247B (zh) | 文件系统及数据布局方法 | |
CN113282523B (zh) | 一种缓存分片的动态调整方法、装置以及存储介质 | |
RU2672726C1 (ru) | Способ выполнения упреждающего чтения в системах хранения данных | |
US11449521B2 (en) | Database management system | |
Zhong et al. | LIRS2: an improved LIRS replacement algorithm | |
US7139872B1 (en) | System and method for assessing the effectiveness of a cache memory or portion thereof using FIFO or LRU using cache utilization statistics | |
WO2013075627A1 (zh) | 一种数据的缓存方法、装置和服务器 | |
CN115878677A (zh) | 分布式多级缓存的数据处理方法和装置 | |
CN113282524B (zh) | 一种缓存分片的配置方法、装置以及存储介质 | |
CN112445794B (zh) | 一种大数据系统的缓存方法 | |
Liu et al. | Cache replacement strategy based on user behaviour analysis for a massive small file storage system |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |