一种兼顾服务质量和利用率的缓存动态划分方法及系统

文档序号:26953142发布日期:2021-10-16 02:32阅读:107来源:国知局
一种兼顾服务质量和利用率的缓存动态划分方法及系统

1.本发明属于云计算服务质量保障技术领域。并特别涉及一种兼顾服务质量和利用率的缓存动态划分方法及系统。


背景技术:

2.云计算将不同的应用部署在共享的硬件资源上。不同应用的混合运行可以提高硬件的利用率,但是这些应用也会在共享资源上进行竞争,影响各自的运行时间或者响应速度,最终干扰到面相终端用户的服务质量。末级大容量高速缓存是云计算场景中一种典型的共享资源。高速缓存一般采用多路组相联实现,即将整个内存空间按地址特征分为若干组,这些组基于访存地址以索引的方式访问,组内存储多个路,每一路记录缓存块的元信息和数据块。访问对应分组后,通过比对分组内每一路元信息中的地址信息,从而判断要访问的对应地址的数据块是否在缓存中,如果缺失,则需要选出组内的一路缓存块,将其写回下级存储,并从下级存储取回需要的数据块。对于共享的应用,则会出现一个应用将另一个应用需要用到的缓存块替换出缓存的情况,这就会导致后者在将来产生一个不必要的访存缺失。因为访存缺失时等待周期相比命中时高出一个数量级,所以这将会严重干扰被干扰应用的执行时间和响应速度。此外,现代多核处理器和片上系统中需要缓存一致性,即一个处理器核心对缓存的修改要能让其他缓存最终感知到。在替换时,为了处理被替换块的一致性,有可能需要访问所有处理器核心和对应的缓存设备,带来更多延迟周期,这进一步放大了混合部署应用的缓存干扰带来的服务质量损失。
3.针对这一问题,英特尔公司在其面向服务器领域的至强系列处理器中实现了缓存监控技术(cache monitoring technology,cmt)和缓存分配技术(cache allocation technology,cat)。cmt首先通过一种名为cpuid的指令检查系统功能和配置信息,接着将需要的线程、操作系统实例和虚拟机映射到特定的资源监控标识符(resource monitoring id,rmid),并绑定需要监控的事件代码(比如缓存容量),之后即可实时开启资源监控,出于产品实现方面的考虑,监控所使用的资源较为节约,返回的数据会按一定比例进行放大。英特尔官方推荐的监控信息的软件读取频率的平衡点为1hz,高于该频率能获取更加真实的软件行为信息,低于该频率则读取开销更低。cat是独立于cmt的产品技术,它首先也要通过cpuid指令检查系统功能和配置信息,然后将需要的线程、操作系统实例和虚拟机映射到另一种标识符:服务分类(class of service,clos)上,rmid和clos均存储于体系结构寄存器中,所以可以在系统中同时存在并识别。然后通过软件将对应clos的位掩码(bitmask)信息写入支持cat的末级缓存中。位掩码一般用于表示所占的缓存的比例,重叠的位掩码表示可以共享的部分,具体如何解释则交由缓存的实现负责,一般将位掩码直接或按比例对应到路掩码上,决定每个clos可以占有哪一路。
4.在英特尔的技术方案中,软件平台通过cmt监控不同应用的实施缓存行为,再基于此数据通过cat指导末级缓存如何为每个应用分配缓存容量,从而避免高优先级应用的缓存被过度替换,保证了高优先级应用的延迟和服务质量。
5.在英特尔的方案中,cat和cmt均需要通过软件进行使用,其中cat为静态分配缓存容量比例,需要软件实时读取cmt提供的统计数据进行更新。其对服务质量的保障,还需要依赖软件的具体调教和适配,在使用和部署上存在一定的门槛,且调控的实时性没有充足的保障。


技术实现要素:

6.本发明的目的是解决上述缓存资源竞争导致服务质量保障和缓存利用率难以同时满足的问题,提出了一种通过硬件在线统计无用块(dead block)以实时指导缓存划分的具有易用性和实用性的缓存划分机制。
7.针对现有技术的不足,本发明提出一种兼顾服务质量和利用率的缓存动态划分方法,其中包括:
8.步骤1、将高优先级进程号(process id,pid)绑定到进程级标签id
p
,将分配给高优先级进程的处理器核心的核心标签值设置为核心标签id
c
,将id
p
和id
c
拼接,得到高优先级应用标签id0;
9.步骤2、该高优先级进程在对应核心上执行,发出的访存请求到达目标缓存,目标缓存通过访存请求携带的标签值id0识别出当前访存请求由高优先级应用发出,并判断该访存请求在该目标缓存中是否命中,若命中则应答命中的数据并执行步骤4,否则执行步骤3;
10.步骤3、目标缓存以标签id0为地址访问控制平面,获得id0对应的路掩码(way mask),若该访存请求访问的组(set)不是采样组(sampling set),则以该路掩码作为替换候选,通过该目标缓存的替换算法得到被替换路;若访问的组是采样组,则以访问的采样组内全部路作为替换候选,通过该目标缓存的替换算法得到被替换路;根据该被替换路进行后续访存、替换和应答数据,以完成缓存服务流程;
11.步骤4、该目标缓存得知命中路的编号并且访问的组为采样组时,将编号对应的路命中计数器的计数值加1;达到预设的更新周期时,将所有的路命中计数器的计数值排序,确定能够满足预设的服务质量要求的最少路数,以该路数生成路掩码作为高优先级应用的划分存入控制平面对应寄存器,同时将生成的路掩码按位取反作为低优先级应用的划分存入控制平面对应寄存器;所有路计数器清零,开始新一轮统计周期。
12.所述的兼顾服务质量和利用率的缓存动态划分方法,其中步骤4中生成路掩码的过程包括:
13.对各路命中计数器的计数值按照从大到小的顺序进行排序,得到有序序列,根据从大到小的顺序分别统计1路计数值之和、2路计数值之和、3路计数值之和,直到统计该目标缓存所有路计数值之和,得到统计序列,将该统计序列中小于该服务质量要求的数值置1,大于等于该服务质量要求的数值置0,以生成该路掩码。
14.所述的兼顾服务质量和利用率的缓存动态划分方法,其中该步骤1包括:通过拓展片内总线协议,将优先级应用标签id0附属在请求通道上,在系统中传播优先级应用标签id0以让目标缓存能够识别。
15.所述的兼顾服务质量和利用率的缓存动态划分方法,其中该服务质量要求为更新周期内的命中次数。
16.述的兼顾服务质量和利用率的缓存动态划分方法,其中该更新周期包括:系统计时器达到时间周期或高优先级应用的访存请求达到预设数量。
17.本发明还提出了一种兼顾服务质量和利用率的缓存动态划分系统,其中包括:
18.模块1,用于将高优先级进程号绑定到进程级标签id
p
,将分配给高优先级进程的处理器核心的核心标签值设置为核心标签id
c
,将id
p
和id
c
拼接,得到高优先级应用标签id0;
19.模块2,用于使该高优先级进程在对应核心上执行,发出的访存请求到达目标缓存,目标缓存通过访存请求携带的标签值id0识别出当前访存请求由高优先级应用发出,并判断该访存请求在该目标缓存中是否命中,若命中则应答命中的数据并调用模块4,否则调用模块3;
20.模块3,用于使目标缓存以标签id0为地址访问控制平面,获得id0对应的路掩码,若该访存请求访问的组不是采样组,则以该路掩码作为替换候选,通过该目标缓存的替换算法得到被替换路;若访问的组是采样组,则以访问的采样组内全部路作为替换候选,通过该目标缓存的替换算法得到被替换路;根据该被替换路进行后续访存、替换和应答数据,以完成缓存服务流程;
21.模块4,用于该目标缓存得知命中路的编号并且访问的组为采样组时,将编号对应的路命中计数器的计数值加1;达到预设的更新周期时,将所有的路命中计数器的计数值排序,确定能够满足预设的服务质量要求的最少路数,以该路数生成路掩码作为高优先级应用的划分存入控制平面对应寄存器,同时将生成的路掩码按位取反作为低优先级应用的划分存入控制平面对应寄存器;所有路计数器清零,开始新一轮统计周期。
22.所述的兼顾服务质量和利用率的缓存动态划分系统,其中模块4中生成路掩码的过程包括:
23.对各路命中计数器的计数值按照从大到小的顺序进行排序,得到有序序列,根据从大到小的顺序分别统计1路计数值之和、2路计数值之和、3路计数值之和,直到统计该目标缓存所有路计数值之和,得到统计序列,将该统计序列中小于该服务质量要求的数值置1,大于等于该服务质量要求的数值置0,以生成该路掩码。
24.所述的兼顾服务质量和利用率的缓存动态划分系统,其中该模块1包括:通过拓展片内总线协议,将优先级应用标签id0附属在请求通道上,在系统中传播优先级应用标签id0以让目标缓存能够识别。
25.所述的兼顾服务质量和利用率的缓存动态划分系统,其中该服务质量要求为更新周期内的命中次数。
26.所述的兼顾服务质量和利用率的缓存动态划分系统,其中该更新周期包括:系统计时器达到时间周期或高优先级应用的访存请求达到预设数量。
27.由以上方案可知,本发明的优点在于:
28.该发明创造与现有技术比,通过硬件实时统计缓存利用情况,并根据指定的服务质量参数指导缓存划分,提高了缓存划分的实时性和易用性。基于无用块统计的划分方法相比静态划分,能够更加准确地获取高优先级应用所必需的缓存容量,在保障服务质量的前提下尽可能发掘出共享缓存空间,提高缓存利用率。
附图说明
29.图1为标签(亦用id指代)在硬件中的实现、组装与传播过程示意图;
30.图2为路掩码实现划分的过程图;
31.图3为分组采样示意图;
32.图4为命中次数排序效果图;
33.图5为本发明排序生成路掩码的流程图;
34.图6为本发明整体流程图。
具体实施方式
35.发明人在研究具有实用性的共享缓存服务质量保障技术方案时,发现现有cat的缺陷在于纯软件配置,缺乏自动更新功能,实时性较差,且该方案本身并不直接提供对目标服务质量的设定,需要第三方软件进行适配和拟合。为了实现更好且更直接的缓存服务质量保障方案,发明人决定通过硬件自动统计与实时更新路掩码来提高缓存划分的实时性、准确度和便利性。但是硬件资源调控普遍存在着资源隔离和利用率的两难问题,且硬件难以实现复杂的算法来处理统计信息形成分配决策。
36.发明人经过对缓存替换算法历史工作进行调研发现,缓存中存在无用块的优化空间。一个缓存块在它最后一次访问到被替换期间称为“无用”(dead)。尽早地将无用块识别出来,便可以有效地提升缓存的利用率以及替换算法的性能。在共享场景里,将一个应用的无用块容量识别出来,便可以用于实时指导缓存划分。一种识别无用块的方法便是对该块的访问次数进行统计,如果访问次数过低,则认为是无用的。
37.具体来说本技术包括下述关键技术点:
38.关键点1,采用分组采样和硬件排序网络实时统计无用块信息;技术效果,分组采样使得硬件实现具有可行性,通过硬件排序网络对统计信息进行排序后能够最大程度发掘出无用块数量;
39.关键点2,基于服务质量参数直接生成路掩码;技术效果,使得系统使用人员仅需设置服务质量目标参数,即可指导该发明自动统计无用块以生成对应的路掩码,划分缓存,保障服务质量的同时提高缓存利用率。
40.为让本发明的上述特征和效果能阐述得更明确易懂,下文特举实施例,并配合说明书附图作详细说明如下。
41.本发明旨在利用缓存划分机制实现缓存层面的高优先级应用服务质量保障的同时,利用在线统计机制动态决定满足服务质量的缓存划分比例,从而提高缓存的整体利用率。其整体流程如图6所示包括:
42.步骤1、管理软件或系统管理员通过系统界面针对高优先级应用标签id0写入服务质量期望值(此处为高优先级应用的缓存命中率期望值以及作为统计粒度的每个统计周期内要统计的访存请求数量);
43.步骤2、管理软件或系统管理员选择高优先级的进程或者程序,通过系统界面将进程号(process id,pid)绑定到进程级标签id
p
,将分配给这些进程的处理器核心绑定到核心标签id
c
,id
p
和id
c
拼接后取值为上述高优先级应用标签id0;
44.步骤3、该进程在对应核心上执行,发出的访存请求到达目标缓存,目标缓存通过
总线信号携带的标签值id0识别出当前请求由高优先级应用发出;
45.步骤4、该访存请求在目标缓存中缺失时,目标缓存以id0为地址访问控制平面,获得id0对应的路掩码。如果访问的组不是采样组,那么以该路掩码作为替换候选通过替换算法得到被替换路;如果访问的组是采样组,那么以组内全部路作为替换候选通过替换算法得到被替换路。最后进行下一步访存、替换、应答数据,完成缓存服务流程;
46.步骤5、该访存请求在目标缓存中命中时,目标缓存得知命中路的编号,且访问的组为采样组时,向执行路掩码更新的自动化分模块中对应编号的路命中计数器加一;
47.步骤6、高优先级应用的访存请求达到预设数量时,自动划分模块执行如图4所示的路命中计数器排序后,根据服务质量要求,即命中率(因为每次更新周期内统计请求数量固定,所以命中率可以用整型命中次数表示),寻找出能够满足要求命中次数的最少路数,以该路数生成路掩码作为高优先级应用的划分存入控制平面对应寄存器,同时将生成的路掩码按位取反,得到低优先级应用的划分存入控制平面对应寄存器。
48.如图1所示,硬件系统中将特定取值的标签作为高优先级,将这种取值的标签赋值给特定进程或线程,使其成为高优先级应用。设置及传播识别高优先级应用的标识符(标签):标签分为核心标签和进程级标签,设置核心标签和进程级标签并进行区分可细化控制场合的粒度,例如虚拟化场景中一个用户实例绑定在特定的物理核上,支持设置核心标签并与进程级标签进行区分,在这种虚拟化场景中可以避免不同用户的相同进程级标签在硬件上产生混淆。
49.如图1所示,vm指虚拟机,核心标签设计的出发点是虚拟化和资源隔离应用场景。所以核心标签在图中被称为vm id。此外图中的old指的是核心标签“已经实现并存在”,以强调进程级标签的引入和设计,进程级标签和核心标签拼接形成新的正式的标签,对应new id。
50.核心标签是物理核心的标志符,存储在片上系统(system on chip,soc)的集中管理模块并连入物理核心中,可以由软件改写;进程级标签通过linux系统的cgroups机制进行配置,在进程控制块(process control block,pcb)中记录进程的标识符,并在上下文切换时写入核心内专门的寄存器中。进程级标签和核心标签拼接即为硬件系统里实际的标签,目前的实现中,核心标签占据低位,进程标签占据高位。通过拓展片内总线协议,将标签附属在请求通道上,在系统中传播标签以让目标缓存识别。
51.如图2所示,实施路划分:来自上级缓存或者master设备,比如处理器核发出请求,目标缓存收到请求,根据其中的标签字段从集中管理模块以索引访问的形式读出对应标签的路掩码。标签的作用就是让末级缓存这种层次的设备也能知道请求的最早来源是哪个处理器核心和进程。请求的内容一般是获取一个地址对应的数据块。如果该请求发生缺失,则将候选替换路的比特串与该路掩码按位与得到划分后的可替换路比特串,送入缓存自身固有的替换算法,进而决定要替换的路。
52.替换算法给出的最终的替换串每个比特逻辑上对应下标位置的路,这个串是独热码,我们可以将该比特串作为写meta信息时掩码,达到对被替换路的替换操作。缓存中还会将该独热码比特串转换成对应的下标值(比如010转换为2),给其他按下标序号进行索引的电路模块使用。
53.缓存划分自动更新:系统用户向自动划分模块通过软件设定两个参数:要保证的
服务质量比例和统计更新周期。服务质量比例在缓存中体现为命中次数的比例,本发明将低于该比例的贡献命中次数较少的路筛选出来,取消其独占,从而在保障服务质量的同时释放一定程度的缓存容量。其中筛选出来的路位于非采样区,原本分配给高优先级应用独占,但是本发明经过采样区的统计认为分配这么多路对高优先级的服务质量帮助甚微,那么就会将非采样区的这些多余数量的路取消独占,让替换算法可以将它们作为被替换路被低优先级应用替换占用。
54.自动更新包含分组采样统计及排序生成路掩码两步:
55.分组采样统计。因为硬件实现限制,必须采用分组采样进行实时统计。如图3所示,本发明每64个缓存分组中选一组作为统计单元,将其累加,统计每一路的命中次数。比如,分组0和分组1在第0路的命中都会累加到第0路对应的统计计数器上。
56.排序生成路掩码。到了设定的更新周期后,自动划分模块将统计到的每一路命中次数进行排序,如图4所示,左边是没有采用排序的例子,右边是采用排序的例子,右图将命中较小的路聚在一起,相同的命中次数保障比例下可以释放出更多的路,缓存利用率更高。排序后能够将真实的无用块排列在服务质量保障比例的区间之外,能够释放更多的缓存空间。自动划分模块找到满足服务质量保障比例的路划分的数量,据此生成新的路掩码,从而实现缓存划分的自动更新。
57.以下为与上述方法实施例对应的系统实施例,本实施方式可与上述实施方式互相配合实施。上述实施方式中提到的相关技术细节在本实施方式中依然有效,为了减少重复,这里不再赘述。相应地,本实施方式中提到的相关技术细节也可应用在上述实施方式中。
58.本发明还提出了一种兼顾服务质量和利用率的缓存动态划分系统,其中包括:
59.模块1,用于将高优先级进程号绑定到进程级标签id
p
,将分配给高优先级进程的处理器核心的核心标签值设置为核心标签id
c
,将id
p
和id
c
拼接,得到高优先级应用标签id0;
60.模块2,用于使该高优先级进程在对应核心上执行,发出的访存请求到达目标缓存,目标缓存通过访存请求携带的标签值id0识别出当前访存请求由高优先级应用发出,并判断该访存请求在该目标缓存中是否命中,若命中则应答命中的数据并调用模块4,否则调用模块3;
61.模块3,用于使目标缓存以标签id0为地址访问控制平面,获得id0对应的路掩码,若该访存请求访问的组不是采样组,则以该路掩码作为替换候选,通过该目标缓存的替换算法得到被替换路;若访问的组是采样组,则以访问的采样组内全部路作为替换候选,通过该目标缓存的替换算法得到被替换路;根据该被替换路进行后续访存、替换和应答数据,以完成缓存服务流程;
62.模块4,用于该目标缓存得知命中路的编号并且访问的组为采样组时,将编号对应的路命中计数器的计数值加1;达到预设的更新周期时,将所有的路命中计数器的计数值排序,确定能够满足预设的服务质量要求的最少路数,以该路数生成路掩码作为高优先级应用的划分存入控制平面对应寄存器,同时将生成的路掩码按位取反作为低优先级应用的划分存入控制平面对应寄存器;所有路计数器清零,开始新一轮统计周期。
63.所述的兼顾服务质量和利用率的缓存动态划分系统,其中模块4中生成路掩码的过程包括:
64.对各路命中计数器的计数值按照从大到小的顺序进行排序,得到有序序列,根据从大到小的顺序分别统计1路计数值之和、2路计数值之和、3路计数值之和,直到统计该目标缓存所有路计数值之和,得到统计序列,将该统计序列中小于该服务质量要求的数值置1,大于等于该服务质量要求的数值置0,以生成该路掩码。
65.所述的兼顾服务质量和利用率的缓存动态划分系统,其中该模块1包括:通过拓展片内总线协议,将优先级应用标签id0附属在请求通道上,在系统中传播优先级应用标签id0以让目标缓存能够识别。
66.所述的兼顾服务质量和利用率的缓存动态划分系统,其中该服务质量要求为更新周期内的命中次数。
67.所述的兼顾服务质量和利用率的缓存动态划分系统,其中该更新周期包括:系统计时器达到时间周期或高优先级应用的访存请求达到预设数量。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1