划分高速缓存的方法及装置制造方法

文档序号:6511894阅读:186来源:国知局
划分高速缓存的方法及装置制造方法
【专利摘要】本发明实施例公开了一种划分高速缓存的方法及装置,涉及计算机【技术领域】,能够在虚拟机启动和复制时,提高虚拟机的性能。本发明的方法包括:当第一虚拟机访问的缓存组的缓存数据均未命中时,判断所述第一虚拟机的虚拟机管理操作状态VMS;当所述第一虚拟机的VMS为第一状态时,替换所述缓存组中属于第二虚拟机的最近最少使用的缓存数据。本发明适用于虚拟化环境。
【专利说明】划分高速缓存的方法及装置

【技术领域】
[0001]本发明涉及计算机【技术领域】,尤其涉及一种划分高速缓存的方法及装置。

【背景技术】
[0002]虚拟化技术是当今企业热门技术之一,它已经被广泛地应用于服务器整合、系统迁移、负载隔离等研究领域中。目前的虚拟化技术能够对多核处理器、内存及输入输出I/O等物理资源进行严格地划分,消除虚拟机间对物理资源的竞争,保证了虚拟机的功能和性能隔离性。但是对于片上多级高速缓存等共享的硬件资源,当前的虚拟化技术没有划分,各虚拟机之间对这些硬件资源的隐式竞争会导致部分虚拟机性能下降。例如,虚拟机上的某些虚拟化应用对LLC (Last-Level Cache,末级共享高速缓存)的容量很敏感,当虚拟机能够使用的LLC容量由于竞争原因减少时,虚拟机的性能会随之降低。
[0003]为了改变上述情况,提高虚拟机的性能,研究人员提出了共享高速缓存划分机制。现有技术中,通过修改的LRU (Least Recently Used,最近最少使用算法)和页着色方法对缓存进行划分,限制不同虚拟机所使用的共享缓存容量,从而减少在共享缓存上的竞争冲关。
[0004]现有技术至少存在如下问题:在多租户数据中心,每个用户对虚拟机执行的不同管理操作的效果会叠加,例如,在启动虚拟机和使用虚拟机执行复制操作的过程中,当大量虚拟机在短时间内同时启动,或者虚拟机复制的磁盘镜像的规模较大、所需时间较长的时候,由于操作效果的叠加,会导致虚拟机性能严重下降。而现有技术中的缓存划分方法,在虚拟机启动和复制时,不能很好的提升虚拟机的性能,虚拟机性能较低。


【发明内容】

[0005]本发明的实施例提供一种划分高速缓存的方法及装置,能够解决在虚拟机执行启动和复制时,虚拟机性能较低的问题。
[0006]为达到上述目的,本发明的实施例采用如下技术方案:
[0007]第一方面,本发明的实施例提供一种划分高速缓存的方法,包括:
[0008]当第一虚拟机访问的缓存组的缓存数据均未命中时,判断所述第一虚拟机的虚拟机管理操作状态VMS ;
[0009]当所述第一虚拟机的VMS为第一状态时,替换所述缓存组中属于第二虚拟机的最近最少使用的缓存数据。
[0010]结合第一方面,在第一种可能的实现方式中,所述判断所述第一虚拟机的虚拟机管理操作状态VMS之前,所述方法还包括:
[0011]添加虚拟机VM寄存器,所述VM寄存器的数据结构包括:所述VMS和虚拟机标识VMID。
[0012]进一步的,所述判断所述第一虚拟机的虚拟机管理操作状态VMS之前,所述方法还包括:
[0013]当所述第一虚拟机执行启动操作或者复制操作时,设置所述第一虚拟机的VMS为第一状态;当所述第一虚拟机未执行启动操作或者复制操作时,设置所述第一虚拟机的VMS为第二状态。
[0014]可选的,当所述第一虚拟机的VMS为第一状态时,在替换所述缓存组中属于第二虚拟机的最近最少使用的缓存数据之前,所述方法还包括:
[0015]判断所述第二虚拟机的缓存失效率是否大于失效率阈值;
[0016]如果所述第二虚拟机的缓存失效率大于所述失效率阈值,则替换所述缓存组中最近最少使用的缓存数据;
[0017]如果所述第二虚拟机的缓存失效率不大于所述失效率阈值,则确定所述缓存组中属于所述第二虚拟机的缓存块数目。
[0018]结合第一种可能的实现方式,在第二种可能的实现方式中,所述添加虚拟机VM寄存器之后,所述方法还包括:
[0019]扩展缓存地址的标记位,将所述VMID添加到所述标记位中,所述缓存地址中的缓存数据属于与所述VMID对应的虚拟机。
[0020]可选的,在所述确定所述缓存组中属于所述第二虚拟机的缓存块数目之后,所述方法还包括:
[0021]判断所述第二虚拟机的缓存块数目是否小于数目阈值;
[0022]如果所述第二虚拟机的缓存块数目小于所述数目阈值,则替换所述缓存组中最近最少使用的缓存数据;
[0023]如果所述第二虚拟机的缓存块数目不小于所述数目阈值,则替换所述缓存组中属于第二虚拟机的最近最少使用的缓存数据。
[0024]结合第一方面或第一方面的第一种可能的实现方式,在第三种可能的实现方式中,当所述第一虚拟机的VMS为第二状态时,替换所述缓存组中最近最少使用的缓存数据。
[0025]结合第一方面或任一种可能的实现方式,在第四种可能的实现方式中,所述第二虚拟机用于控制虚拟环境的物理输入输出I/o资源,与所述第一虚拟机进行交互,启动所述第一虚拟机。
[0026]第二方面,本发明的实施例提供一种划分高速缓存的装置,包括:
[0027]判断单元,用于当第一虚拟机访问的缓存组的缓存数据均未命中时,判断所述第一虚拟机的虚拟机管理操作状态VMS ;
[0028]替换单元,用于当所述第一虚拟机的VMS为第一状态时,替换所述缓存组中属于第二虚拟机的最近最少使用的缓存数据。
[0029]结合第二方面,在第一种可能的实现方式中,所述装置还包括:
[0030]添加单元,用于添加虚拟机VM寄存器,所述VM寄存器的数据结构包括:
[0031 ] 所述VMS和虚拟机标识VMID。
[0032]进一步的,所述装置还包括:设置单元,用于当所述第一虚拟机执行启动操作或者复制操作时,设置所述第一虚拟机的VMS为第一状态;以及,用于当所述第一虚拟机未执行启动操作或者复制操作时,设置所述第一虚拟机的VMS为第二状态。
[0033]可选的,所述判断单元还用于判断所述第二虚拟机的缓存失效率是否大于失效率阈值;所述替换单元还用于当所述第二虚拟机的缓存失效率大于所述失效率阈值时,替换所述缓存组中最近最少使用的缓存数据;所述装置还包括:
[0034]确定单元,用于当所述第二虚拟机的缓存失效率不大于所述失效率阈值时,确定所述缓存组中属于所述第二虚拟机的缓存块数目。
[0035]结合第一种可能的实现方式,在第二种可能的实现方式中,所述装置还包括:
[0036]扩展单元,用于扩展缓存地址的标记位,将所述添加单元添加的所述VMID添加到所述标记位中,所述缓存地址中的缓存数据属于与所述VMID对应的虚拟机。
[0037]可选的,所述判断单元还用于判断所述第二虚拟机的缓存块数目是否小于所述确定单元确定的所述数目阈值;所述替换单元还用于当所述第二虚拟机的缓存块数目小于所述确定单元确定的所述数目阈值时,替换所述缓存组中最近最少使用的缓存数据;所述替换单元还用于当所述第二虚拟机的缓存块数目不小于所述确定单元确定的所述数目阈值时,替换所述缓存组中属于第二虚拟机的最近最少使用的缓存数据。
[0038]结合第二方面或第二方面的第一种可能的实现方式,在第三种可能的实现方式中,所述替换单元还用于:当所述第一虚拟机的VMS为第二状态时,替换所述缓存组中最近最少使用的缓存数据。
[0039]结合第二方面或任一种可能的实现方式,在第四种可能的实现方式中,所述第二虚拟机用于控制虚拟环境的物理输入输出I/o资源,与所述第一虚拟机进行交互,启动所述第一虚拟机。
[0040]本发明实施例提供的划分末级共享高速缓存的方法及装置,与现有技术中,在虚拟机执行启动和复制时,不能很好的提升虚拟机的性能,虚拟机性能较低的问题相比,本发明中,在虚拟机执行启动和复制时,对第一虚拟机和第二虚拟机之间的末级共享缓存进行划分,减少第二虚拟机占用的缓存容量。由于第二虚拟机对缓存的容量不敏感,即使缓存的失效率很高,对其性能的影响也不大,所以通过减少第二虚拟机占用的缓存容量,增大第一虚拟机占用的缓存容量,来降低各虚拟机之间对缓存的竞争,从而提升虚拟机启动或复制时的性能。

【专利附图】

【附图说明】
[0041]为了更清楚地说明本发明实施例中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
[0042]图1为本发明一实施例提供的方法流程图;
[0043]图2为本发明又一实施例提供的方法流程图;
[0044]图3为本发明又一实施例提供的访存地址结构图;
[0045]图4为本发明又一实施例提供的缓存结构图;
[0046]图5为本发明又一实施例提供的使用传统LRU数据替换后的缓存结构图;
[0047]图6为本发明又一实施例提供的使用改进LRU数据替换后的缓存结构图;
[0048]图7、图8为本发明又一实施例提供的装置结构示意图;
[0049]图9为本发明又一实施例提供的装置结构示意图。

【具体实施方式】
[0050]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
[0051]本发明一实施例提供一种划分高速缓存的方法,用于虚拟化环境,第一虚拟机和第二虚拟机运行于同一虚拟平台,第二虚拟机为运行在虚拟机监视器之上的特权虚拟机,它可以控制物理I/O资源,并且同时与第一虚拟机进行交互,第一虚拟机为客户虚拟机,可通过多个第二虚拟机来启动多个第一虚拟机。如图1所示,所述方法包括:
[0052]101、当第一虚拟机访问的缓存组的缓存数据均未命中时,缓存控制器判断第一虚拟机的VMS (Virtual Management State,虚拟机管理操作状态)。
[0053]需要说明的是,在处理器中,为每个处理器核添加虚拟机VM寄存器,VM寄存器结构包括:VMS和VMID (Virtual Machine Identifier,虚拟机标识)。然后,扩展缓存地址的标记位,将VMID添加到标记位中,其中,缓存地址中的缓存数据属于与所述VMID对应的虚拟机。
[0054]其中,虚拟机监控器响应虚拟机的管理操作,根据虚拟机的操作内容来设置VMS的状态。当是第一虚拟机执行启动操作或者复制操作时,虚拟机监控器设置此时的VMS为第一状态;当不是第一虚拟机执行启动操作或者复制操作时,虚拟机监控器设置此时的VMS为第二状态。
[0055]进一步的,当第一虚拟机对缓存进行访问,如果第一虚拟机访问缓存时,缓存组的缓存数据均未命中,此时需要访问内存,从中查找相应的数据,然后用缓存中数据进行替换,则缓存控制器对此时VMS的状态进行判断。
[0056]需要说明的是,本发明实施例中提到的缓存组,为在虚拟机进行访存操作时,根据访存地址确定的缓存组。
[0057]102、当第一虚拟机的VMS为第一状态时,缓存控制器替换缓存组中属于第二虚拟机的最近最少使用的缓存数据。
[0058]需要说明的是,缓存控制器对VMS的状态进行判断,当判断VMS为第二状态时,替换缓存组中最近最少使用的缓存数据。
[0059]其中,当第一虚拟机的VMS为第一状态时,缓存控制器获取第二虚拟机的缓存失效率,然后判断第二虚拟机的缓存失效率是否大于失效率阈值。如果第二虚拟机的缓存失效率大于失效率阈值,则替换缓存组中最近最少使用的缓存数据;如果第二虚拟机的缓存失效率不大于所述失效率阈值,则缓存控制器确定缓存组中属于第二虚拟机的缓存块数目。
[0060]进一步的,缓存控制器确定缓存组中属于第二虚拟机的缓存块数目后,判断第二虚拟机的缓存块数目是否小于数目阈值。如果第二虚拟机的缓存块数目小于数目阈值,则替换缓存组中最近最少使用的缓存数据;如果第二虚拟机的缓存块数目不小于数目阈值,则替换缓存组中属于第二虚拟机的最近最少使用的缓存数据。
[0061]需要说明的是,第二虚拟机的失效率阈值和缓存组中属于第二虚拟机的缓存块的数目阈值,均为事先设置的,其值可以根据虚拟机具体的运行情况和用户的需求自行设置;本发明实施例对缓存控制器获取第二虚拟机的缓存失效率的实现方式不做限定,可以是本领域技术人员所熟知的任意实现方式,例如,通过第二虚拟机的MPKI (Misses PerlKInstruct1ns,每1000条指令的缺失率)来计算。
[0062]与现有技术中,在虚拟机执行启动和复制时,不能很好的提升虚拟机的性能,使虚拟机性能较低的问题相比,本发明实施例中,在虚拟机执行启动和复制时,对第二虚拟机和第一虚拟机之间的末级共享缓存进行划分,减少了第二虚拟机占用缓存的容量。由于第二虚拟机对缓存的容量不敏感,即使缓存的失效率很高,对其性能的影响也不大,所以通过减少第二虚拟机占用的缓存容量,增大第一虚拟机占用的缓存容量,来降低各虚拟机之间对缓存的竞争,解决了现有技术中各虚拟机之间对缓存竞争,使虚拟机性能下降的问题。通过解决上述技术问题,能够使提高虚拟机启动或复制时的性能。
[0063]本发明又一实施例提供一种划分末级共享高速缓存的方法,用于虚拟化环境。在虚拟环境下,本实施例的虚拟平台上,可运行的虚拟机最大个数N=8,DomainO为运行在虚拟机监控器hypervisor上的特权虚拟机,它可以控制物理I/O资源,并且同时与客户虚拟机进行交互,客户虚拟机需要通过DomainO才能启动,虚拟机共享缓存中缓存块大小为8字节,4路组相联,共16个组。如图2所示,所述方法包括:
[0064]201、添加虚拟机VM寄存器。
[0065]其中,处理器中包含多个处理器核,为每个处理器核添加虚拟机VM寄存器,VM寄存器中的数据结构包括:虚拟机管理操作状态VMS和虚拟机标识VMID。
[0066]需要说明的是,VMS有O和I两种状态,用于区分此时客户虚拟机执行操作的类型:如果VMS=O,表示此时客户虚拟机不是执行启动操作或者复制操作;如果VMS=I,表示此时客户虚拟机执行启动操作或者复制操作。VMID用于标识不同的虚拟机,VMID的位数由平台上可运行虚拟机的最大数目来确定。
[0067]例如,如果虚拟平台上可运行虚拟机的最大数目为N,则VMID的位数为log2 (N)。本发明实施例中,可运行的虚拟机最大个数N=8,那么VMID的位数有log2 (N) =3位,DomainO的VMID为000。本实施例不对N的值进行限定,当N为其他值时本实施例的方法同样适用。
[0068]202、扩展缓存地址的标记位。
[0069]其中,在缓存地址的标记位中增加VMID。此处VMID用来标记该缓存地址中的缓存块属于哪个虚拟机,在缓存块数据替换时,将此时寄存器中的VMID值写入到缓存地址中的VMID中即可。
[0070]203、虚拟机监控器设置DomainO的失效率阈值和缓存组中属于DomainO的缓存块数目阈值。
[0071]其中,DomainO的失效率阈值是根据实验结果得出的。在客户虚拟机执行启动操作或者复制操作时,虽然DomainO能够在失效率很高的情况下,保持很好的性能,但是当失效率超过一定值时,DomainO的性能有可能会下降。为了保证DomainO能够保持很好的性能,用户可根据实验中的结果,自行设定失效率阈值。缓存组中属于DomainO的缓存块数目阈值也为用户自行设定,最大值不能超过缓存组中缓存块的值。
[0072]例如,本发明实施例中,每组中缓存块个数为4,则缓存块的数目阈值的最大值为4。
[0073]需要说明的是,此步骤中提到的缓存组,为在虚拟机进行访存操作时,根据访存地址确定的缓存组。
[0074]204、虚拟机监控器设置虚拟机管理操作状态VMS的状态。
[0075]其中,虚拟机监控器根据虚拟机的操作内容来设置VMS的状态。当虚拟机监控器响应的是客户虚拟机执行启动操作或者复制操作时,设置VMS=I ;当虚拟机监控器响应的不是客户虚拟机执行启动操作或者复制操作时,设置VMS=O。
[0076]205、缓存控制器判定客户虚拟机访问的缓存组的缓存数据是否均未命中,若均未命中,则执行步骤206 ;若不是均未命中,则结束流程。
[0077]其中,在虚拟机监控器设置VMS的状态后,虚拟机根据访存地址对缓存进行访问,如果虚拟机访问缓存时,缓存组的缓存数据均未命中,此时需要访问内存,从中查找相应的数据,然后用缓存中数据进行替换,则缓存控制器对此时VMS的状态进行判断;如果虚拟机访问缓存时,缓存组中有缓存数据命中,则不需要数据替换,结束此过程。
[0078]需要说明的是,本发明实施例中,访存地址为16位,那么访存地址的结构如图3所示,其中标记位Tag为访存地址的前九位,当缓存块中的标记位和访存地址中的标记位匹配时并且缓存块中的有效位置为1,则表示缓存命中;缓存组位Set为访存地址的第十到第十三位,用来确定要访问的缓存组,偏移位Offset为访存地址的最后三位,用来确定缓存块中要访问的字节。
[0079]例如,Xen响应VMID=1l的虚拟机命令,虚拟机监控器设置VMS的状态。然后,VMID=1l的虚拟机访问缓存,设该虚拟机此次的访存地址为0001000111010011,那么,从该访存地址中能找出要访问缓存的组号Set=1lO,如图4所示。该访存地址在缓存组1010中的四个缓存块扩展后的标记位依次为:000000001111、010000000011、000000000001和011000100001,其中,标记位的前三位为扩展的VMID,表示此缓存块此时所属的虚拟机,后九位为各缓存块的地址的Tag位,本次虚拟机的访存地址的Tag位是000100011,可知四个缓存块均不命中,此时需要访问内存,从中查找相应的数据,然后用缓存中数据进行替换,执行步骤206。
[0080]206、缓存控制器判定VMS状态是否为1,若VMS状态为1,执行步骤207 ;否则使用传统LRU替换策略。
[0081]需要说明的是,VMS的状态已经在步骤204中设置,此时对其进行判定,以便确定数据替换时要使用的替换策略。
[0082]其中,替换策略包括传统LRU替换策略和本发明实施例中改进的LRU替换策略。当VMS状态为I时,使用本发明实施例中改进的LRU替换策略,即执行步骤207至步骤211 ;当VMS状态为O时,使用传统LRU替换策略,即替换缓存组中最近最少使用的缓存数据。
[0083]例如,在本发明实施例中,VMID=1I的虚拟机对缓存进行访问时,客户虚拟机要访问的缓存组的缓存块均未命中。如果此时VMS状态为1,则执行步骤207 ;如果此时VMS状态为0,则执行传统LRU替换策略进行数据替换。如图4所示,假设此时第1010缓存组中,第4个缓存块为最近最少被使用的缓存块,由其VMID=Oll可知,此缓存块属于VMID=Oll的虚拟机,而判定结果为VMS状态为0,则选用第4个缓存块,将该缓存块中的数据替换为VMID=1l的虚拟机从内存中访问的数据,所得结果如图5所示。
[0084]207、缓存控制器获取此时DomainO的缓存失效率。
[0085]其中,缓存失效率等于缓存访问缺失次数除以缓存访问次数,本发明实施例对缓存控制器获取DomainO的缓存失效率的实现方式不做限定,可以是本领域技术人员所熟知的任意实现方式,例如,通过DomainO的MPKI。
[0086]208、缓存控制器判定缓存失效率是否大于失效率阈值,若不大于失效率阈值,则执行步骤209 ;否则使用传统LRU替换策略。
[0087]其中,如果此时DomainO的缓存失效率大于失效率阈值,则使用传统LRU替换策略,即替换缓存组中最近最少使用的缓存数据;如果DomainO的缓存失效率不大于所述失效率阈值,则执行步骤209。
[0088]209、缓存控制器确定缓存组中属于DomainO的缓存块数目。
[0089]其中,缓存控制器可以根据缓存标记位中扩展的VMID,得出此时缓存组中的各缓存块属于哪个虚拟机,从而确定属于DomainO的缓存块数目。
[0090]例如,本发明实施例中,如图4所示,缓存组1010中,根据各缓存块的VMID可得:第I个和第3个缓存块属于DomainO,第2个缓存块属于VMID=OlO的虚拟机,第4个缓存块属于VMID=Oll的虚拟机,则可确定属于DomainO的缓存块数目为2。
[0091]210、缓存控制器判定缓存块数目是否小于数目阈值,若小于数目阈值,则执行步骤211 ;否则使用传统LRU替换策略。
[0092]其中,如果缓存组中属于DomainO的缓存块数目小于所述数目阈值,则使用传统LRU替换策略,即替换缓存组中最近最少使用的缓存数据;如果缓存组中属于DomainO的缓存块数目不小于数目阈值,则执行步骤211。
[0093]211、缓存控制器选用缓存组中属于DomainO的最近最少使用的缓存块替换。
[0094]例如,本发明实施例中,如图4所示,此时第1010组中,第I个和第3个缓存块均属于DomainO,假设第3个缓存块为最近最少被使用的属于DomainO的缓存块,选用第3个缓存块,将该缓存块中的数据替换为VMID=1l的虚拟机从内存中访问的数据,所得结果如图6所示。
[0095]与现有技术中,在虚拟机执行启动和复制时,不能很好的提升虚拟机的性能,使虚拟机性能较低的问题相比,本发明实施例中,在虚拟机执行启动和复制时,对DomainO和客户虚拟机之间的末级共享缓存进行划分,减少了 DomainO占用缓存的容量。由于DomainO对缓存的容量不敏感,即使缓存的失效率很高,对其性能的影响也不大,所以通过减少DomainO占用的缓存容量,增大客户虚拟机占用的缓存容量,来降低各虚拟机之间对缓存的竞争,解决了现有技术中各虚拟机之间对缓存竞争,使虚拟机性能下降的问题。通过解决上述技术问题,能够使提高虚拟机启动或复制时的性能。
[0096]本发明又一实施例提供一种划分高速缓存的装置30,如图7所示,所述装置30包括:
[0097]判断单元31,用于当第一虚拟机访问的缓存组的缓存数据均未命中时,判断所述第一虚拟机的虚拟机管理操作状态VMS ;
[0098]替换单元32,用于当所述第一虚拟机的VMS为第一状态时,替换所述缓存组中属于第二虚拟机的最近最少使用的缓存数据。
[0099]进一步的,如图8所示,所述装置30还可以包括:
[0100]添加单元33,用于添加虚拟机VM寄存器,所述VM寄存器的数据结构包括:所述VMS和虚拟机标识VMID。
[0101]进一步的,如图8所示,所述装置30还可以包括:
[0102]扩展单元34,用于扩展缓存地址的标记位,将所述添加单元33添加的所述VMID添加到所述标记位中,所述缓存地址中的缓存数据属于与所述VMID对应的虚拟机。
[0103]进一步的,如图8所示,所述装置30还可以包括:
[0104]设置单元35,用于当所述第一虚拟机执行启动操作或者复制操作时,设置所述第一虚拟机的VMS为第一状态;当所述第一虚拟机未执行启动操作或者复制操作时,设置所述第一虚拟机的VMS为第二状态。
[0105]进一步的,所述替换单元32还用于:
[0106]当所述第一虚拟机的VMS为第二状态时,替换所述缓存组中最近最少使用的缓存数据。
[0107]进一步的,所述判断单元31还用于判断所述第二虚拟机的缓存失效率是否大于失效率阈值;
[0108]所述替换单元32还用于当所述第二虚拟机的缓存失效率大于所述失效率阈值时,替换所述缓存组中最近最少使用的缓存数据;如图8所示,所述装置30还可以包括:
[0109]确定单元36,用于当所述第二虚拟机的缓存失效率不大于所述失效率阈值时,确定所述缓存组中属于所述第二虚拟机的缓存块数目。
[0110]进一步的,所述判断单元31还用于判断所述第二虚拟机的缓存块数目是否小于所述确定单元36确定的所述数目阈值;
[0111]所述替换单元32还用于当所述第二虚拟机的缓存块数目小于所述确定单元36确定的所述数目阈值时,替换所述缓存组中最近最少使用的缓存数据;
[0112]所述替换单元32还用于当所述第二虚拟机的缓存块数目不小于所述确定单元36确定的所述数目阈值时,替换所述缓存组中属于第二虚拟机的最近最少使用的缓存数据。
[0113]与现有技术中,在虚拟机执行启动和复制时,不能很好的提升虚拟机的性能,使虚拟机性能较低的问题相比,本发明实施例中,在虚拟机执行启动和复制时,对第二虚拟机和第一虚拟机之间的末级共享缓存进行划分,减少了第二虚拟机占用缓存的容量。由于第二虚拟机对缓存的容量不敏感,即使缓存失效率很高,对其性能的影响也不大,所以通过减少第二虚拟机占用的缓存容量,增大第一虚拟机占用的缓存容量,来降低各虚拟机之间对缓存的竞争,解决了现有技术中各虚拟机之间对缓存竞争,使虚拟机性能下降的问题。通过解决上述技术问题,能够使提高虚拟机启动或复制时的性能。
[0114]本发明又一实施例提供一种划分高速缓存的装置40,如图9所示,所述装置40包括:
[0115]处理器41,用于当第一虚拟机访问的缓存组的缓存数据均未命中时,判断所述第一虚拟机的虚拟机管理操作状态VMS ;以及,用于当所述第一虚拟机的VMS为第一状态时,替换所述缓存组中属于第二虚拟机的最近最少使用的缓存数据。
[0116]进一步的,所述处理器41还用于添加虚拟机VM寄存器,所述VM寄存器的数据结构包括:所述VMS和虚拟机标识VMID。
[0117]进一步的,所述处理器41还用于扩展缓存地址的标记位,将所述VMID添加到所述标记位中,所述缓存地址中的缓存数据属于与所述VMID对应的虚拟机。
[0118]进一步的,所述处理器41还用于当所述第一虚拟机执行启动操作或者复制操作时,设置所述第一虚拟机的VMS为第一状态;以及,用于当所述第一虚拟机未执行启动操作或者复制操作时,设置所述第一虚拟机的VMS为第二状态。
[0119]进一步的,所述处理器41还用于当所述第一虚拟机的VMS为第二状态时,替换所述缓存组中最近最少使用的缓存数据。
[0120]可选的,所述处理器41还用于判断所述第二虚拟机的缓存失效率是否大于失效率阈值;以及,用于当所述第二虚拟机的缓存失效率大于所述失效率阈值时,替换所述缓存组中最近最少使用的缓存数据;以及,用于当所述第二虚拟机的缓存失效率不大于所述失效率阈值时,确定所述缓存组中属于所述第二虚拟机的缓存块数目。
[0121]可选的,所述处理器41还用于判断所述第二虚拟机的缓存块数目是否小于数目阈值;以及,用于如果所述第二虚拟机的缓存块数目小于所述数目阈值,则替换所述缓存组中最近最少使用的缓存数据;以及,用于如果所述第二虚拟机的缓存块数目不小于所述数目阈值,则替换所述缓存组中属于第二虚拟机的最近最少使用的缓存数据。
[0122]与现有技术中,在虚拟机执行启动和复制时,不能很好的提升虚拟机的性能,使虚拟机性能较低的问题相比,本发明实施例中,在虚拟机执行启动和复制时,对第二虚拟机和第一虚拟机之间的末级共享缓存进行划分,减少了第二虚拟机占用缓存的容量。由于第二虚拟机对缓存的容量不敏感,即使缓存失效率很高,对其性能的影响也不大,所以通过减少第二虚拟机占用的缓存容量,增大第一虚拟机占用的缓存容量,来降低各虚拟机之间对缓存的竞争,解决了现有技术中各虚拟机之间对缓存竞争,使虚拟机性能下降的问题。通过解决上述技术问题,能够使提高虚拟机启动或复制时的性能。
[0123]本发明实施例提供的一种访问划分高速缓存的装置可以实现上述提供的方法实施例,具体功能实现请参见方法实施例中的说明,在此不再赘述。本发明实施例提供的一种划分高速缓存的方法及装置可以适用于虚拟化环境,但不仅限于此。
[0124]需要说明的是,本发明实施例中提到的缓存可适用于末级共享高速缓存,大不仅限于此。
[0125]本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于设备实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。
[0126]本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory, ROM)或随机存储记忆体(Random AccessMemory, RAM)等。
[0127]以上所述,仅为本发明的【具体实施方式】,但本发明的保护范围并不局限于此,任何熟悉本【技术领域】的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。
【权利要求】
1.一种划分高速缓存的方法,其特征在于,包括: 当第一虚拟机访问的缓存组的缓存数据均未命中时,判断所述第一虚拟机的虚拟机管理操作状态VMS ; 当所述第一虚拟机的VMS为第一状态时,替换所述缓存组中属于第二虚拟机的最近最少使用的缓存数据。
2.根据权利要求1所述的方法,其特征在于,在所述判断所述第一虚拟机的虚拟机管理操作状态VMS之前,所述方法还包括: 添加虚拟机VM寄存器,所述VM寄存器的数据结构包括:所述VMS和虚拟机标识VMID。
3.根据权利要求2所述的方法,其特征在于,在所述添加虚拟机VM寄存器之后,所述方法还包括: 扩展缓存地址的标记位,将所述VMID添加到所述标记位中,所述缓存地址中的缓存数据属于与所述VMID对应的虚拟机。
4.根据权利要求1所述的方法,其特征在于,在所述判断所述第一虚拟机的虚拟机管理操作状态VMS之前,所述方法还包括: 当所述第一虚拟机执行启动操作或者复制操作时,设置所述第一虚拟机的VMS为第一状态;当所述第一虚拟机未执行启动操作或者复制操作时,设置所述第一虚拟机的VMS为第二状态。
5.根据权利要求1或4所述的方法,其特征在于,所述方法还包括: 当所述第一虚拟机的VMS为第二状态时,替换所述缓存组中最近最少使用的缓存数据。
6.根据权利要求1所述的方法,其特征在于,当所述第一虚拟机的VMS为第一状态时,在替换所述缓存组中属于第二虚拟机的最近最少使用的缓存数据之前,所述方法还包括: 判断所述第二虚拟机的缓存失效率是否大于失效率阈值; 如果所述第二虚拟机的缓存失效率大于所述失效率阈值,则替换所述缓存组中最近最少使用的缓存数据; 如果所述第二虚拟机的缓存失效率不大于所述失效率阈值,则确定所述缓存组中属于所述第二虚拟机的缓存块数目。
7.根据权利要求6所述的方法,其特征在于,在所述确定所述缓存组中属于所述第二虚拟机的缓存块数目之后,所述方法还包括: 判断所述第二虚拟机的缓存块数目是否小于数目阈值; 如果所述第二虚拟机的缓存块数目小于所述数目阈值,则替换所述缓存组中最近最少使用的缓存数据; 如果所述第二虚拟机的缓存块数目不小于所述数目阈值,则替换所述缓存组中属于第二虚拟机的最近最少使用的缓存数据。
8.根据权利要求1-7任一项所述的方法,其特征在于,所述第二虚拟机用于控制虚拟环境的物理输入输出I/O资源,与所述第一虚拟机进行交互,启动所述第一虚拟机。
9.一种划分高速缓存的装置,其特征在于,包括: 判断单元,用于当第一虚拟机访问的缓存组的缓存数据均未命中时,判断所述第一虚拟机的虚拟机管理操作状态VMS ; 替换单元,用于当所述第一虚拟机的VMS为第一状态时,替换所述缓存组中属于第二虚拟机的最近最少使用的缓存数据。
10.根据权利要求9所述的装置,其特征在于,所述装置还包括: 添加单元,用于添加虚拟机VM寄存器,所述VM寄存器的数据结构包括: 所述VMS和虚拟机标识VMID。
11.根据权利要求10所述的装置,其特征在于,所述装置还包括: 扩展单元,用于扩展缓存地址的标记位,将所述添加单元添加的所述VMID添加到所述标记位中,所述缓存地址中的缓存数据属于与所述VMID对应的虚拟机。
12.根据权利要求9所述的装置,其特征在于,所述装置还包括: 设置单元,用于当所述第一虚拟机执行启动操作或者复制操作时,设置所述第一虚拟机的VMS为第一状态;以及,用于当所述第一虚拟机未执行启动操作或者复制操作时,设置所述第一虚拟机的VMS为第二状态。
13.根据权利要求9或12所述的装置,其特征在于,所述替换单元还用于: 当所述第一虚拟机的VMS为第二状态时,替换所述缓存组中最近最少使用的缓存数据。
14.根据权利要求9所述的装置,其特征在于,所述判断单元还用于判断所述第二虚拟机的缓存失效率是否大于失效率阈值; 所述替换单元还用于当所述第二虚拟机的缓存失效率大于所述失效率阈值时,替换所述缓存组中最近最少使用的缓存数据;所述装置还包括: 确定单元,用于当所述第二虚拟机的缓存失效率不大于所述失效率阈值时,确定所述缓存组中属于所述第二虚拟机的缓存块数目。
15.根据权利要求14所述的装置,其特征在于,所述判断单元还用于判断所述第二虚拟机的缓存块数目是否小于所述确定单元确定的所述数目阈值; 所述替换单元还用于当所述第二虚拟机的缓存块数目小于所述确定单元确定的所述数目阈值时,替换所述缓存组中最近最少使用的缓存数据; 所述替换单元还用于当所述第二虚拟机的缓存块数目不小于所述确定单元确定的所述数目阈值时,替换所述缓存组中属于第二虚拟机的最近最少使用的缓存数据。
16.根据权利要求9-15任一项所述的装置,其特征在于,所述第二虚拟机用于控制虚拟环境的物理输入输出I/o资源,与所述第一虚拟机进行交互,启动所述第一虚拟机。
【文档编号】G06F12/08GK104461928SQ201310422795
【公开日】2015年3月25日 申请日期:2013年9月16日 优先权日:2013年9月16日
【发明者】隋秀峰, 任睿 申请人:华为技术有限公司, 中国科学院计算技术研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1