CN113157605B - 一种两级缓存的资源分配方法、系统、存储介质及计算设备 - Google Patents
一种两级缓存的资源分配方法、系统、存储介质及计算设备 Download PDFInfo
- Publication number
- CN113157605B CN113157605B CN202110350744.6A CN202110350744A CN113157605B CN 113157605 B CN113157605 B CN 113157605B CN 202110350744 A CN202110350744 A CN 202110350744A CN 113157605 B CN113157605 B CN 113157605B
- Authority
- CN
- China
- Prior art keywords
- cache
- capacity
- partition
- cliff
- performance
- 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/0893—Caches characterised by their organisation or structure
- G06F12/0897—Caches characterised by their organisation or structure with two or more cache hierarchy levels
-
- 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/0877—Cache access modes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/22—Employing cache memory using specific memory technology
- G06F2212/225—Hybrid cache memory, e.g. having both volatile and non-volatile portions
-
- 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曲线;在构建的MRC曲线中定位缓存性能悬崖;根据确定的缓存性能悬崖对DRAM‑SSD组成的两级缓存进行划分,将整体缓存容量分为N个缓存区间,给出每个区间的容量和对应的存储介质,实现资源分配。本发明能够利用缓存性能悬崖现象,打破传统的两级缓存架构,将缓存按照业务MRC分配为N个缓存区间,以降低缓存层的整体延迟。
Description
技术领域
本发明属于计算机缓存技术领域,具体涉及一种两级缓存的资源分配方法、系统、存储介质及计算设备。
背景技术
云存储环境中,缓存是存储体系中的重要一环,其通常由成本高,速度快的介质组成,利用工作负载的局部性减少访问延迟。多个用户共享统一的缓存空间。
随着业务数据量的增长,缓存体系的容量需求和性能需求都在不断增长。单一的缓存很难满足要求,由多种介质构建的多级缓存成为主流。外部存储的多级缓存架构与CPU内部的L1,L2,L3构成的cache有相似之处,高速介质位于顶层,低速设备位于底层,数据从高到低向下流动。存储体系中每种缓存设备都有不同的延迟、吞吐量、价格和容量特征。存储体系中依据这些特性,在不同的场合中使用更具有针对性的存储介质。缓存资源的合理分配是发挥缓存性能的关键。然而缓存分配是NP难的问题,出于不同性能目标的考量会有不同的分配方式,多种分配方式之间甚至存在互斥的可能。
性能悬崖是缓存系统中与业务相关的一种现象,表现为在某些容量区域内,缓存性能随容量的微小变化而急剧改变。性能悬崖体现了缓存命中率随缓存容量的不均匀变化。本发明合理利用这种不均匀性,能够在不增加缓存成本的同时,显著提高缓存系统的整体性。
发明内容
本发明所要解决的技术问题在于针对上述现有技术中的不足,提供一种两级缓存的资源分配方法、系统、存储介质及计算设备,通过缓存性能进行分析,定位出缓存的性能悬崖区域,在不改变各层次缓存容量的情况下,提出一种兼容性能悬崖的缓存资源分配方式,改变缓存的层次结构,提升整体缓存系统的性能。
本发明采用以下技术方案:
一种两级缓存的资源分配方法,包括以下步骤:
S1、读取历史访问信息,模拟缓存计算栈距离,根据栈距离构建MRC曲线;
S2、在构建的MRC曲线中定位缓存性能悬崖;
S3、根据确定的缓存性能悬崖对DRAM-SSD组成的两级缓存进行划分,将整体缓存容量分为N个缓存区间,给出每个区间的容量和对应的存储介质,实现资源分配。
具体的,步骤S1中,根据每个容量下的缓存失效率构建MRC曲线如下:
其中,numi表示栈距离为i的请求数量,ni表示Si对应的栈距离阈值值,total_request表示整体请求数量。
具体的,步骤S1中,读取历史访问信息具体为:使用采样的方式对历史访问信息进行抽取,每次仅重放被抽取的请求,使用固定的采样率对请求进行抽取,抽取满足hash(Li)mod P<R*P的请求,P为固定阈值,R为采样率,Li为第i个请求位置;对于每个请求位置Li,如果当前的空间消耗|S|≤Smax,且Ti<Tmax时,采样请求Li;将<Li,Ti>插入到优先级队列D中,每处理完一个请求后,计算当前的空间消耗|S|;如果|S|>Smax,从D中删除T值最大的元组,并将Tmax设置为被删除元组中的T。
具体的,步骤S2具体为:
S201、使用凸包算法求解出MRC曲线的凸包集合convex_hull;convex_hull包含MRC曲线的左右端点,(0,1.0)和(Smax,Mmin);
S202、根据(0,1.0)和(Smax,Mmin)两个端点构成的连线,将整个convex_hull分为convex_upper和convex_down两部分;
S203、在convex_down部分进行性能悬崖的初步定位;
S204、在初步定位的基础上精确定位性能悬崖和容量分割点。
进一步的,步骤S204中,精确定位性能悬崖和容量分割点具体为:
对于每一个初步寻找到的容量区间,首先用直线l连接两个端点,遍历对应区间内所有的MRC点,找到距离l最大的点,记作分割点Spartition;利用分割点Spartition求出两个指标capacity_proportion和hit_rate_proportion,设容量区域为S1,平滑区域中起始位置的缓存未命中率为M1;悬崖区域的容量为S2,悬崖区域结束后的缓存未命中率为M2,寻找到的因此调整区域容量为S=S1+S2,整体的未命中率变化为M1-M2,按照最大距离方法寻找到的转折点为Spartition,利用capacity_proportion和hit_rate_proportion衡量转折点Spartition在分区内的相对位置,即在转折点之前的缓存占据整体容量的capacity_proportion,但只提供hit_rate_proportion的命中率;将符合要求的悬崖区域使用三元组<Sbegin,Spartition,Send>表示。
具体的,步骤S3中,每个悬崖区域分为<Sbegin,Spartition>和<Spartition,Send>两部分;<Sbegin,Spartition>分配SSD设备,分配容量为Spartition-Sbegin,<Spartition,Send>分配容量为Send-Spartition的DRAM设备;
非悬崖区域分配SSD设备。
具体的,步骤S4中,N级缓存的整体性能体现为各级缓存命中的情况,具体如下:
N级缓存维护的整体IO开销extra_io计算如下:
其中,Performance为整体延迟,ti为第i级缓存层的延迟,Extra_IOi为第i层命中时,额外的IO数量,hi为第i层的命中率。
本发明的另一技术方案是,一种两级缓存的资源分配系统,其特征在于,包括:
曲线模块,读取历史访问信息,模拟缓存计算栈距离,根据栈距离构建MRC曲线;
定位模块,在构建的MRC曲线中定位缓存性能悬崖;
划分模块,根据确定的缓存性能悬崖对DRAM-SSD组成的两级缓存进行划分,将整体缓存容量分为N个缓存区间,给出每个区间的容量和对应的存储介质,实现资源分配。
与现有技术相比,本发明至少具有以下有益效果:
本发明一种两级缓存的资源分配方法,考虑到缓存分配中的缓存性能悬崖现象,使用高速介质,如DRAM来承担悬崖区域的容量数据,使用慢速设备,如SSD来分配其余的缓存区间,以此来降低缓存层的整体延迟
进一步的,MRC曲线是分析缓存性能的主要手段,能够反映出缓存容量与命中率之间的关系。MRC曲线使用栈距离进行构造,每个请求都具有一个栈距离,指两次访问间其他块的个数。每个容量除以块大小得到对应栈距离的阈值,特定容量的命中率等于所有栈距离小于栈距离阈值的请求总数除以所有请求数。
进一步的,由于部分业务的访问具有周期性,周期性可通过历史访问信息反应。此类业务可以使用上一周期的特征来指导下一周期的缓存分配。本发明中,使用上一周期的MRC曲线来指导下一周期的缓存分配。
进一步的,在MRC曲线中定位缓存性能悬崖。具体指识别MRC中性能随容量快速变化的区域,每个区域需要包含3个要素,容量变化和命中率变化超过阈值,并且有明显的性能拐点。使用凸包算法可以定位出容量变化区域,对比每个容量变化区域的命中率,可以得到悬崖初步定位的结果。
进一步的,在初步定位的基础行进行拐点搜索,使用点到直线距离方式定位性能拐点,对每个拐点的相对位置进行判断,从而定位到真正的悬崖区域。
进一步的,识别出悬崖区域后,进行缓存容量的划分,以提升性能。将悬崖区域分配DRAM,其余区域分配SSD,这样更多请求可以在DRAM命中,降低缓存整体延迟。
进一步的,定性分析新型分配方式的优势和开销。相比于传统分配方式,新型方式将两级结构划分为N层结构,以引入额外的IO为代价,极大降低缓存层的整体性能。
综上所述,本发明能够利用缓存性能悬崖现象,打破传统的两级缓存架构,将缓存按照业务MRC分配为N个缓存区间,以降低缓存层的整体延迟。
下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。
附图说明
图1为MRC曲线上性能悬崖的表示示意图;
图2为多级缓存中层级之间的交互过程示意图;
图3为分配示意图,其中,(a)为传统缓存划分,(b)为本发明缓存划分;
图4为测量的理想性能图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
应当理解,当在本说明书和所附权利要求书中使用时,术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在本发明说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本发明。如在本发明说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。
还应当进一步理解,在本发明说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
在附图中示出了根据本发明公开实施例的各种结构示意图。这些图并非是按比例绘制的,其中为了清楚表达的目的,放大了某些细节,并且可能省略了某些细节。图中所示出的各种区域、层的形状及它们之间的相对大小、位置关系仅是示例性的,实际中可能由于制造公差或技术限制而有所偏差,并且本领域技术人员根据实际所需可以另外设计具有不同形状、大小、相对位置的区域/层。
本发明提供了一种两级缓存的资源分配方法,读取历史访问信息,模拟缓存计算栈距离,根据栈距离构建MRC曲线,构建MRC曲线;在构建的MRC曲线中定位缓存性能悬崖;根据确定的缓存性能悬崖DRAM-SSD组成的两级缓存进行划分,划分后得到N个容量区间和每个容量区间对应的介质类型;利用划分后的N级缓存架构来定性分析缓存分配带来的性能提升和维护开销,分析完得出的结果是什么,这个结果如何实现资源分配。
本发明一种两级缓存的资源分配方法,包括以下步骤:
S1、分析缓存性能,根据业务的访存历史信息,计算得到MRC曲线;
分析业务的历史访问信息,构建容量和未命中率之间的关系;缓存的性能由缓存替换算法和缓存容量决定。
从分析的角度,缓存替换算法分为两类,栈式算法和非栈式算法。具体来说性能分析分为历史访问信息读取,缓存模拟和栈距离计算,栈距离统计以及MRC(Miss)曲线构造四个过程。
S101、历史访问信息获取
历史访问信息的读取指从trace文件中获得业务的请求。每个请求包含时间戳(timestamp),请求类型(op),偏移地址(offset),和长度(length)。由于请求文件具有不同的格式,给些关键元素的字段位于不同的位置,需要针对不同类型的trace进行手动设置。之后进行请求的拆分。将offset和length按照以下公式转化成起始块号(begin_block_number)和结束块号(begin_block_number),其中block_size为块的大小。
加快信息获取的效率,使用采样的方式对历史访问信息进行抽取,每次仅重放被抽取的请求,降低输入的数据量。采样可分为速率采样和空间采样两种形式。
速率采样使用固定的采样率对请求进行抽取,设采样率为R,第i个请求位置为Li,和一个固定阈值P,通常取2的倍数,只抽取满足hash(Li)mod P<R*P的请求。
速率采样虽然能够极大降低内存消耗,但仍然存在内存无限增长的可能,无法在内存受限的场景下使用。空间采样以固定的内存开销进行请求的回放。同样假设第i个请求为Li,和一个固定值P,动态调整的值Tmax,内存消耗上限Smax,和优先级队列D。D中存放元组<Li,Ti>,其中,Ti=hash(Li)mod P;起始阶段Tmax可以取较大的值,例如Tmax=0.1*P。
对于每个请求位置Li,如果当前的空间消耗|S|≤Smax,且Ti<Tmax时,采样请求Li。将<Li,Ti>插入到优先级队列D中,增加当前的内存消耗。
每处理完一个请求后,计算当前的空间消耗|S|;如果|S|>Smax,从D中删除T值最大的元组,并将Tmax设置为被删除元组中的T,以此来维持空间消耗。
S102、缓存模拟和栈距离计算。根据传入的请求,计算在当前缓存替换算法下,请求块的栈距离。
缓存模拟指根据指定的缓存大小和缓存替换算法,块对象的移动方式。它依据传入的块号和时间信息,构建缓存序列。可认为缓存模拟内实现若干个缓存替换算法,除完成基本功能外,缓存模拟层还需要计算每次访问的重用距离,栈距离。
以LRU算法为例,当前请求访问块a时,首先变量整体LRU链表,寻找到块a的位置,块a距离LRU头部的距离就是栈距离。块a访问完成后,将a提升到LRU链表的头部,一次请求执行完成。
S103、栈距离的统计。统计每个传入栈距离的频度,为构造MRC曲线做准备。
栈距离统计过程主要构造栈距离和频度的对应关系。每个传入的重用距离,都会有一个统计值num。num初始化为0。每次收到一个栈距离后,都会将其num自增1。
对于使用采样方式得到的栈距离,每次自增情况需要有一定的调整。具体来说每个重用距离会额外对应一个阈值Tdis,其初始值设置为采样器中的T。每当该重用距离对应的计数值需要修改时,比较Tdis和当前的采样器阈值T,若不相等,执行num=num*T/Tdis,之后在执行num的自增,并且令Tdis=T。
S104、MRC曲线构造。统计完所有请求的栈距离后,依据统计结果来构造MRC曲线。
将容量S转化为栈距离的阈值n,具体n=S/block_szie。MRC曲线需要计算每个容量下的失效率,即对于每个容量Si,计算相应的M(Si)。计算过程如下所示:
其中,numi表示栈距离为i的请求数量,ni表示Si对应的栈距离阈值,total_request表示整体请求数量。
图1中给出了MRC曲线的例子,MRC曲线符合单调递减的性质,即对于任意0<S1<S2≤Smax,满足0<Mmi≤M(S2)≤M(S1)<1,其中Mmin为缓存最小的未命中率,Smax为最大的缓存容量。
S2、在MRC曲线中定位缓存性能悬崖。在构造业务MRC曲线后,定位性能悬崖。性能悬崖体现为在某一段容量内,性能随容量增加急剧下降;
按照以下步骤,从第一步统计的MRC曲线中,得到性能悬崖区域。
S201、使用凸包算法求解出MRC曲线的凸包集合convex_hull。根据凸包的定义可得,convex_hull包含MRC曲线的左右端点,(0,1.0)和(Smax,Mmin);
S202、根据这两个端点构成的连线,可以将整个convex_hull分为两部分,convex_upper和convex_down;
convex_down构成的连线位于整个离散点集的下方,即对于任意0<S<=Smax,满足Mconvex_down(S)<=M(S),convex_upper位于整个离散点集的上方,即对于任意0<S<=Smax,满足M(S)<=Mconvex_upper(S)。
S203、在convex_down进行性能悬崖的初步定位;
每一个性能悬崖都会在convex_down中体现,按照以下方式定位存在悬崖的区域:
首先遍历convex_down中所有相邻的节点i和i+1,寻找满足以下不等式的相邻节点:
可认为上述两个不等式区域存在性能悬崖,其中cliff_size_threshold、cliff_hit_rate_threshold是事先设定好的阈值,可动态进行调整,这两个值决定了悬崖识别的精度,只有容量和命中率变化超过阈值的区域,才具有容量分区的价值。
S204、在初步识别的基础上精确定位性能悬崖和容量分割点;
使用以下方式寻找分割点:
对于每一个初步寻找到的容量区间,首先用直线l连接两个端点,遍历该区间内的所有的MRC点,找到距离l最大的点,记作分割点Spartition。
请参阅图1,对分割点Spartition求出两个指标capacity_proportion和hit_rate_proportion,设容量区域为S1,平滑区域中起始位置的缓存未命中率为M1。悬崖区域的容量为S2,悬崖区域结束后的缓存未命中率为M2,寻找到的因此调整区域容量为S=S1+S2,整体的未命中率变化为M1-M2,按照最大距离方法寻找到的转折点为Spartition,那么按下式进行衡量:
这两个参数衡量转折点Spartition在分区内的相对位置,即在转折点之前的缓存占据整体容量的capacity_proportion,但只提供hit_rate_proportion的命中率。
同样,capacity_proportion和hit_rate_proportion都存在相应的阈值,每个业务可根据其MRC曲线,以及期望的加速效果来进行手动设置。
符合要求的悬崖区域使用三元组<Sbegin,Spartition,Send>表示。
S3、在确定性能悬崖的基础上进行缓存划分,给出每个缓存分区的容量以及对应的介质;
每个悬崖区域可分为两部分<Sbegin,Spartition>和<Spartition,Send>。<Sbegin,Spartition>分配SSD设备,分配容量为Spartition-Sbegin,<Spartition,Send>分配容量为Send-Spartition的DRAM设备;
对于非悬崖区域以分配低速SSD设备。
S4,在给出新型缓存分配结构后,进行性能和开销分析。
将两种操作定义为Promote(i,1)和Demote(i-1,i),简称P(i,1)和D(i-1,i),表示将块迁移到顶层的开销和写入上一层淘汰块的开销。
S401、整体性能评估;
N级缓存的整体性能体现为各级缓存命中的情况,可用以下公式表示:
S402、维护开销指在多个缓存层次之间根据访问情况,迁移数据,维护整体LRU链表。对于每一层缓存Cachei,每一层的额外IO数目Extra_IOi与缓存层次相关,公式如下所示:
用每一层的访问概率(即命中率)乘以每一层的开销,可得到缓存层命中时开销的期望值。当该访问在所有缓存层次不命中时,在每一层都触发块的淘汰,共删除2N+1个额外的IO请求。每次访问的期望开销可用以下公式计算:
本发明再一个实施例中,提供一种两级缓存的资源分配系统,该系统能够用于实现上述两级缓存的资源分配方法,具体的,该两级缓存的资源分配系统包括曲线模块、定位模块、划分模块以及分配模块。
其中,曲线模块,读取历史访问信息,模拟缓存计算栈距离,根据栈距离构建MRC曲线;
定位模块,在构建的MRC曲线中定位缓存性能悬崖;
划分模块,根据定位模块确定的缓存性能悬崖对DRAM-SSD两级缓存结构进行划分,将整体缓存容量分为N个缓存区间,给出每个区间的容量和对应的存储介质。
衡量模块,利用划分模块得到的划分结果来定性分析N级缓存带来的性能提升和维护开销。
本发明再一个实施例中,提供了一种终端设备,该终端设备包括处理器以及存储器,所述存储器用于存储计算机程序,所述计算机程序包括程序指令,所述处理器用于执行所述计算机存储介质存储的程序指令。处理器可能是中央处理单元(Central ProcessingUnit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor、DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable GateArray,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,其是终端的计算核心以及控制核心,其适于实现一条或一条以上指令,具体适于加载并执行一条或一条以上指令从而实现相应方法流程或相应功能;本发明实施例所述的处理器可以用于两级缓存的资源分配方法的操作,包括:
读取历史访问信息,模拟缓存计算栈距离,根据栈距离构建MRC曲线;在构建的MRC曲线中定位缓存性能悬崖;根据确定的缓存性能悬崖对DRAM-SSD组成的两级缓存进行划分,将整体缓存容量分为N个缓存区间,给出每个区间的容量和对应的存储介质,实现资源分配。
本发明再一个实施例中,本发明还提供了一种存储介质,具体为计算机可读存储介质(Memory),所述计算机可读存储介质是终端设备中的记忆设备,用于存放程序和数据。可以理解的是,此处的计算机可读存储介质既可以包括终端设备中的内置存储介质,当然也可以包括终端设备所支持的扩展存储介质。计算机可读存储介质提供存储空间,该存储空间存储了终端的操作系统。并且,在该存储空间中还存放了适于被处理器加载并执行的一条或一条以上的指令,这些指令可以是一个或一个以上的计算机程序(包括程序代码)。需要说明的是,此处的计算机可读存储介质可以是高速RAM存储器,也可以是非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。
可由处理器加载并执行计算机可读存储介质中存放的一条或一条以上指令,以实现上述实施例中有关两级缓存的资源分配方法的相应步骤;计算机可读存储介质中的一条或一条以上指令由处理器加载并执行如下步骤:
读取历史访问信息,模拟缓存计算栈距离,根据栈距离构建MRC曲线;在构建的MRC曲线中定位缓存性能悬崖;根据确定的缓存性能悬崖对DRAM-SSD组成的两级缓存进行划分,将整体缓存容量分为N个缓存区间,给出每个区间的容量和对应的存储介质,实现资源分配。
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。通常在此处附图中的描述和所示的本发明实施例的组件可以通过各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
下面给出新型方式和传统方式的对比。以一个包含性能悬崖的真实业务的MRC曲线为例。对比传统分配和兼容缓存性能悬崖分配方式的对比,分配情况如图3所示。假设SSD的读延迟为292us,写延迟为1138us,DRAM的读写延迟为0.0585us,后端存储的读延迟为2857。测量出来的理想性能如图4所示。相比于传统架构。新型分配方式的整体收益和缓存层收益都比传统方式好,具体指,与传统方法相比,新型分配方式在带来28%的多余内部流量的同时,将缓存层性能提高1.7倍,整体性能提高5%。
综上所述,本发明一种两级缓存的资源分配方法、系统、存储介质及计算设备,基于应用访问过程中产生的悬崖现象,利用悬崖产生的性能突变,将传统的两级缓存架构重新划分,每个块依据其在缓存中的位置进行动态迁移,以增加维护开销为代价,以实现相对于传统缓存分配方式更好的性能。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上内容仅为说明本发明的技术思想,不能以此限定本发明的保护范围,凡是按照本发明提出的技术思想,在技术方案基础上所做的任何改动,均落入本发明权利要求书的保护范围之内。
Claims (7)
1.一种两级缓存的资源分配方法,其特征在于,包括以下步骤:
S1、读取历史访问信息,模拟缓存计算栈距离,根据栈距离构建MRC曲线;
S2、在构建的MRC曲线中定位缓存性能悬崖,具体为:
S201、使用凸包算法求解出MRC曲线的凸包集合convex_hull;convex_hull包含MRC曲线的左右端点,(0,1.0)和(Smax,Mmin);
S202、根据(0,1.0)和(Smax,Mmin)两个端点构成的连线,将整个convex_hull分为convex_upper和convex_down两部分;
S203、在convex_down部分进行性能悬崖的初步定位;
S204、在初步定位的基础上精确定位性能悬崖和容量分割点,精确定位性能悬崖和容量分割点具体为:
对于每一个初步寻找到的容量区间,首先用直线l连接两个端点,遍历对应区间内所有的MRC点,找到距离l最大的点,记作分割点Spartition;利用分割点Spartition求出两个指标capacity_proportion和hit_rate_proportion,设容量区域为S1,平滑区域中起始位置的缓存未命中率为M1;悬崖区域的容量为S2,悬崖区域结束后的缓存未命中率为M2,寻找到的因此调整区域容量为S=S1+S2,整体的未命中率变化为M1-M2,按照最大距离方法寻找到的转折点为Spartition,利用capacity_proportion和hit_rate_proportion衡量转折点Spartition在分区内的相对位置,即在转折点之前的缓存占据整体容量的capacity_proportion,但只提供hit_rate_proportion的命中率;将符合要求的悬崖区域使用三元组<Sbegin,Spartition,Send>表示;
S3、根据确定的缓存性能悬崖对DRAM-SSD组成的两级缓存进行划分,将整体缓存容量分为N个缓存区间,给出每个区间的容量和对应的存储介质,实现资源分配,每个悬崖区域分为<Sbegin,Spartition>和<Spartition,Send>两部分;<Sbegin,Spartition>分配SSD设备,分配容量为Spartition-Sbegin,<Spartition,Send>分配容量为Send-Spartition的DRAM设备;
非悬崖区域分配SSD设备。
3.根据权利要求1所述的方法,其特征在于,步骤S1中,读取历史访问信息具体为:使用采样的方式对历史访问信息进行抽取,每次仅重放被抽取的请求,使用固定的采样率对请求进行抽取,抽取满足hash(Li)mod P<R*P的请求,P为固定阈值,R为采样率,Li为第i个请求位置;对于每个请求位置Li,如果当前的空间消耗|S|≤Smax,且Ti<Tmax时,采样请求Li;将<Li,Ti>插入到优先级队列D中,每处理完一个请求后,计算当前的空间消耗|S|;如果|S|>Smax,从D中删除T值最大的元组,并将Tmax设置为被删除元组中的T。
5.一种两级缓存的资源分配系统,其特征在于,包括:
曲线模块,读取历史访问信息,模拟缓存计算栈距离,根据栈距离构建MRC曲线;
定位模块,在构建的MRC曲线中定位缓存性能悬崖,具体为:
使用凸包算法求解出MRC曲线的凸包集合convex_hull;convex_hull包含MRC曲线的左右端点,(0,1.0)和(Smax,Mmin);根据(0,1.0)和(Smax,Mmin)两个端点构成的连线,将整个convex_hull分为convex_upper和convex_down两部分;在convex_down部分进行性能悬崖的初步定位;在初步定位的基础上精确定位性能悬崖和容量分割点;
精确定位性能悬崖和容量分割点具体为:
对于每一个初步寻找到的容量区间,首先用直线l连接两个端点,遍历对应区间内所有的MRC点,找到距离l最大的点,记作分割点Spartition;利用分割点Spartition求出两个指标capacity_proportion和hit_rate_proportion,设容量区域为S1,平滑区域中起始位置的缓存未命中率为M1;悬崖区域的容量为S2,悬崖区域结束后的缓存未命中率为M2,寻找到的因此调整区域容量为S=S1+S2,整体的未命中率变化为M1-M2,按照最大距离方法寻找到的转折点为Spartition,利用capacity_proportion和hit_rate_proportion衡量转折点Spartition在分区内的相对位置,即在转折点之前的缓存占据整体容量的capacity_proportion,但只提供hit_rate_proportion的命中率;将符合要求的悬崖区域使用三元组<Sbegin,Spartition,Send>表示;
划分模块,根据确定的缓存性能悬崖对DRAM-SSD组成的两级缓存进行划分,将整体缓存容量分为N个缓存区间,给出每个区间的容量和对应的存储介质,实现资源分配,每个悬崖区域分为<Sbegin,Spartition>和<Spartition,Send>两部分;<Sbegin,Spartition>分配SSD设备,分配容量为Spartition-Sbegin,<Spartition,Send>分配容量为Send-Spartition的DRAM设备;
非悬崖区域分配SSD设备。
6.一种存储一个或多个程序的计算机可读存储介质,其特征在于,所述一个或多个程序包括指令,所述指令当由计算设备执行时,使得所述计算设备执行根据权利要求1至4所述的方法中的任一方法。
7.一种计算设备,其特征在于,包括:
一个或多个处理器、存储器及一个或多个程序,其中一个或多个程序存储在所述存储器中并被配置为所述一个或多个处理器执行,所述一个或多个程序包括用于执行根据权利要求1至4所述的方法中的任一方法的指令。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110350744.6A CN113157605B (zh) | 2021-03-31 | 2021-03-31 | 一种两级缓存的资源分配方法、系统、存储介质及计算设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110350744.6A CN113157605B (zh) | 2021-03-31 | 2021-03-31 | 一种两级缓存的资源分配方法、系统、存储介质及计算设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113157605A CN113157605A (zh) | 2021-07-23 |
CN113157605B true CN113157605B (zh) | 2022-10-25 |
Family
ID=76885879
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110350744.6A Active CN113157605B (zh) | 2021-03-31 | 2021-03-31 | 一种两级缓存的资源分配方法、系统、存储介质及计算设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113157605B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115242729B (zh) * | 2022-09-22 | 2022-11-25 | 沐曦集成电路(上海)有限公司 | 基于多优先级的cache查询系统 |
CN118113633A (zh) * | 2022-11-30 | 2024-05-31 | 华为技术有限公司 | 一种数据处理方法以及相关设备 |
CN118295936B (zh) * | 2024-06-06 | 2024-08-02 | 北京开源芯片研究院 | 高速缓存替换策略的管理方法、装置及电子设备 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101719105A (zh) * | 2009-12-31 | 2010-06-02 | 中国科学院计算技术研究所 | 一种多核系统中对内存访问的优化方法和系统 |
CN111510479A (zh) * | 2020-04-08 | 2020-08-07 | 天津大学 | 一种异构缓存系统的资源分配方法及装置 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10114751B1 (en) * | 2015-06-05 | 2018-10-30 | Nutanix, Inc. | Method and system for implementing cache size estimations |
US20160357674A1 (en) * | 2015-06-07 | 2016-12-08 | Cloud Physics, Inc. | Unified Online Cache Monitoring and Optimization |
CN107273308A (zh) * | 2017-06-12 | 2017-10-20 | 上海优刻得信息科技有限公司 | 一种基于cat的共享缓存分配方法、装置、介质以及设备 |
CN108762671A (zh) * | 2018-05-23 | 2018-11-06 | 中国人民解放军陆军工程大学 | 基于pcm和dram的混合内存系统及其管理方法 |
CN110933140B (zh) * | 2019-11-05 | 2021-12-24 | 北京字节跳动网络技术有限公司 | Cdn存储分配方法、系统及电子设备 |
-
2021
- 2021-03-31 CN CN202110350744.6A patent/CN113157605B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101719105A (zh) * | 2009-12-31 | 2010-06-02 | 中国科学院计算技术研究所 | 一种多核系统中对内存访问的优化方法和系统 |
CN111510479A (zh) * | 2020-04-08 | 2020-08-07 | 天津大学 | 一种异构缓存系统的资源分配方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN113157605A (zh) | 2021-07-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113157605B (zh) | 一种两级缓存的资源分配方法、系统、存储介质及计算设备 | |
Sha et al. | Technical report: Accelerating dynamic graph analytics on gpus | |
US20180285167A1 (en) | Database management system providing local balancing within individual cluster node | |
KR101761301B1 (ko) | 메모리 자원 최적화 방법 및 장치 | |
CN103218435B (zh) | 一种中文文本数据聚类方法及系统 | |
Zhong et al. | {REMIX}: Efficient Range Query for {LSM-trees} | |
US10671431B1 (en) | Extent group workload forecasts | |
US20170039232A1 (en) | Unified data management for database systems | |
CN106469018B (zh) | 分布式存储系统的负载监控方法及设备 | |
Hu et al. | Fast miss ratio curve modeling for storage cache | |
US10025504B2 (en) | Information processing method, information processing apparatus and non-transitory computer readable medium | |
CN105808358B (zh) | 一种用于众核系统的数据相关性线程分组映射方法 | |
CN110362566A (zh) | 分层htap数据库的混合数据布局中的数据布置 | |
CN111737168A (zh) | 一种缓存系统、缓存处理方法、装置、设备及介质 | |
CN110297787A (zh) | I/o设备访问内存的方法、装置及设备 | |
Lu et al. | TridentKV: A read-optimized LSM-tree based KV store via adaptive indexing and space-efficient partitioning | |
Yang et al. | Random walks on huge graphs at cache efficiency | |
Gu et al. | Adaptive online cache capacity optimization via lightweight working set size estimation at scale | |
Cahsai et al. | Scaling k-nearest neighbours queries (the right way) | |
CN108173974B (zh) | 一种基于分布式缓存Memcached的HCModel内部缓存数据淘汰方法 | |
CN108108251A (zh) | 一种基于MPI并行化的参考点k近邻分类方法 | |
Kim et al. | Multi-GPU efficient indexing for maximizing parallelism of high dimensional range query services | |
WO2022179294A1 (zh) | 数据预取的方法、设备及系统 | |
Wang et al. | Multi-tenant in-memory key-value cache partitioning using efficient random sampling-based LRU model | |
Zois et al. | Efficient main-memory top-k selection for multicore architectures |
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 |