一种获取虚拟机内存工作集的方法及内存优化分配方法

文档序号:6542065阅读:768来源:国知局
一种获取虚拟机内存工作集的方法及内存优化分配方法
【专利摘要】本发明公开了一种获取虚拟机内存工作集的方法及内存优化分配方法。本方法为:1)修改虚拟机管理器VMM的内存页访问机制:将虚拟机VM的所有一级页表的页表项PTE的访问权限设置为系统态;2)当一内存页面被一VM访问时,产生次要页面失效陷入到VMM中,VMM获取该页面的虚拟地址和其所属的页表地址,并将该页面的PTE访问权限设置为用户态;3)VMM将每一VM访问过的页面地址分别记录到一对应的最近使用LRU直方图中,通过绘制失效率曲线,得到每一虚拟机VM的内存工作集WSS;4)VMM根据虚拟机的WSS为每一VM按需分配内存。本方法能够低开销获取每一虚拟机的内存集,并按照VM的内存按需分配,极大提高资源利用率。
【专利说明】一种获取虚拟机内存工作集的方法及内存优化分配方法
【技术领域】
[0001]本发明涉及一种获取虚拟机内存工作集的方法及内存优化分配方法,属于虚拟化【技术领域】。
技术背景
[0002]在当前常见的虚拟化应用中,有这样一种场景:同一虚拟化管理器(VirtualMachine Monitor, VMM)上管理着多个虚拟机(Virtual Machine, VM),且多个VM之间共享内存等硬件资源。而在一台物理机上往往运行着多个虚拟机,这些虚拟机的内存通常由VMM静态设置(如图1所示)。当一台虚拟机内存超载时,它不得不将一些物理页面交换到磁盘上去,即便其它虚拟机有空闲内存,也会导致性能急剧下降。为了改善或者避免类似的情况,最合适的方法是让虚拟化环境下的资源的管理者、分配者VMM能够为多台虚拟机进行按需、动态内存调控。实现这一目标的关键是能够准确、低开销地预测虚拟机的内存需求。
[0003]在静态分配内存的时候,由于无法提前预知虚拟机所需内存的大小,因此只能尽可能多的分配内存,这样的策略造成了内存的很大浪费。更极端的情况是在所分配内存之和大于物理内存的情况下,内存初始化无法完成(如图2所示)。
[0004]虚拟机的行为具有很强的可变性,其内存需求是动态变化的。在这种情况下如果没有一个有效的物理内存管理和调度机制,数据中心的内存资源会出现利用率低下或者资源浪费的问题,甚至导致整体性能急剧下降。而现有操作系统只报告系统占用和空闲内存的大小,而不能统计每个程序所需要内存的大小。并且,系统性能和分配内存大小没有正比关系,占用的内存不一定在被有效使用。最理想的情况是按照虚拟机的需求,动态预测内存需求,用历史预测未来。
[0005]目前已经有一些基于内存工作集的研究工作。VMware ESX采用的方法是”采样”,即在每个采样间隔内监控一组随机的内存页面,一段时间后统计出这组页面的利用率作为整个物理内存的利用率。这种方法可以估计出有多少不活动的页面。但是因为程序性能和分配内存大小并不是呈线性关系的,所以该方法不能预测当把这些不活动的页面回收后,对程序性能产生多大的影响。通过监控磁盘I/o来推断当前内存压力并计算所超载的内存大小也是有一种探测内存工作集的方法,但是这只能预测当内存超载时的应用程序的工作集大小,并不适用于系统有空闲内存的情况,因此无法对回收多余的内存做出决策。

【发明内容】

[0006]本发明的目的是提供一种获取虚拟机内存工作集的方法及内存优化分配方法,可实时高效的探测出虚拟机的内存工作集的大小,实现虚拟化平台上内存的按需分配,有效的提高资源利用率。
[0007]内存工作集(Working Set Size,WSS)是程序访存行为的直接体现,是度量程序内存需求的重要指标。而失效率曲线(Miss Ratio Curve,MRC)刻画了不同内存分配值所对应的总的页面访问失效率,因而可以用来度量程序性能和内存大小之间的关系。根据程序的MRC,我们可以将它的WSS重新理解为:在页面失效率不显著影响程序性能的范围内,应用程序所需要的物理内存。
[0008]本发明的技术方案为:
[0009]—种获取虚拟机内存工作集的方法,其步骤为:
[0010]I)修改虚拟机管理器VMM的内存页访问机制:将虚拟机VM的所有一级页表的页表项PTE的访问权限设置为系统态;
[0011]2)当一内存页面被一虚拟机VM访问时,产生次要页面失效陷入到虚拟机管理器VMM中,虚拟机管理器VMM获取该页面的虚拟地址和其所属的页表地址,并将该页面的页表项PTE的访问权限设置为用户态;
[0012]3)虚拟机管理器VMM将每一虚拟机VM访问过的页面地址分别记录到一对应的最近使用LRU直方图中,通过绘制失效率曲线MRC,进而得到每一虚拟机VM的内存工作集。
[0013]一种虚拟机内存优化分配的方法,其步骤为:
[0014]I)修改虚拟机管理器VMM的内存页访问机制:将虚拟机VM的所有一级页表的页表项PTE的访问权限设置为系统态;
[0015]2)当一内存页面被一虚拟机VM访问时,产生次要页面失效陷入到虚拟机管理器VMM中,虚拟机管理器VMM获取该页面的虚拟地址和其所属的页表地址,并将该页面的页表项PTE的访问权限设置为用户态;
[0016]3)虚拟机管理器VMM将每一虚拟机VM访问过的页面地址分别记录到一对应的最近使用LRU直方图中,通过绘制失效率曲线MRC,进而得到每一虚拟机VM的内存工作集WSS ;
[0017]4)虚拟机管理器VMM根据虚拟机的内存工作集WSS为每一虚拟机VM按需分配内存。
[0018]进一步的,使用陷入俘获机制抓取虚拟机的访存地址,采用一 FIFO队列动态记录虚拟机俘获的地址;当有新的页面加入到该FIFO队列时,将其页面号加入队尾;如果队列已满,则将队头的页面淘汰,并将其权限重新设为系统态。
[0019]进一步的,使用LRU堆栈存储内存工作集中被访问的页面号。虚拟机管理器VMM将全部的机器地址空间P划分为N个标签,每一标签Ti对应一计数器Hit (i);当一页面被访问时,虚拟机管理器VMM首先定位该页面所对应的标签Ti ;然后计算该标签Ti在LRU访问序列中的距离d ;然后将该标签Ti移到LRU序列的起始位置,并将计数器Hit (d)加一。
[0020]进一步的,虚拟机管理器VMM根据每一虚拟机VM的LRU直方图计算该虚拟机VM
的失效率
【权利要求】
1.一种获取虚拟机内存工作集的方法,其步骤为: O修改虚拟机管理器VMM的内存页访问机制:将虚拟机VM的所有一级页表的页表项PTE的访问权限设置为系统态; 2)当一内存页面被一虚拟机VM访问时,产生次要页面失效陷入到虚拟机管理器VMM中,虚拟机管理器VMM获取该页面的虚拟地址和其所属的页表地址,并将该页面的页表项PTE的访问权限设置为用户态; 3)虚拟机管理器VMM将每一虚拟机VM访问过的页面地址分别记录到一对应的最近使用LRU直方图中,通过绘制失效率曲线MRC,进而得到每一虚拟机VM的内存工作集。
2.一种虚拟机内存优化分配的方法,其步骤为: 1)修改虚拟机管理器VMM的内存页访问机制:将虚拟机VM的所有一级页表的页表项PTE的访问权限设置为系统态; 2)当一内存页面被一虚拟机VM访问时,产生次要页面失效陷入到虚拟机管理器VMM中,虚拟机管理器VMM获取该页面的虚拟地址和其所属的页表地址,并将该页面的页表项PTE的访问权限设置为用户态; 3)虚拟机管理器VMM将每一虚拟机VM访问过的页面地址分别记录到一对应的最近使用LRU直方图中,通过绘制失效率曲线MRC,进而得到每一虚拟机VM的内存工作集WSS ; 4)虚拟机管理器VMM根据虚拟机的内存工作集WSS为每一虚拟机VM按需分配内存。
3.如权利要求1或2所述的方法,其特征在于使用陷入\俘获机制抓取虚拟机的访存地址,采用一 FIFO队列动态记录虚拟机俘获的地址;当有新的页面加入到该FIFO队列时,将其页面号加入队尾;如果队列已满,则将队头的页面淘汰,并将其权限重新设为系统态。
4.如权利要求3所述的方法,其特征在于如果设定时间长度内虚拟机VM访问的页面总数与其对应的FIFO队列所能容纳页面数比例大于设定值H,则增大该虚拟机VM的FIFO队列长度;如果设定时间长度内虚拟机VM访问的页面总数与其对应的FIFO队列所能容纳页面数比例小于设定值h,则减小该虚拟机的FIFO队列长度。
5.如权利要求1或2所述的方法,其特征在于使用LRU堆栈存储内存工作集中被访问的页面号,且LRU堆栈每一位置i设置一计数器Hist (i);虚拟机管理器VMM根据每个计数器的值和它在LRU堆栈所处的深度生成一 LRU直方图;当一个页面被访问时,首先计算该页面距栈顶的距离dist,将计数器Hist (dist)加一,然后将该页面移到LRU栈顶。
6.如权利要求1或2所述的方法,其特征在于虚拟机管理器VMM将全部的机器地址空间P划分为N个标签,每一标签Ti对应一计数器Hit (i);当一页面被访问时,虚拟机管理器VMM首先定位该页面所对应的标签Ti ;然后计算该标签Ti在LRU访问序列中的距离d ;然后将该标签Ti移到LRU序列的起始位置,并将计数器Hit (d)加一。
7.如权利要求5所述的方法,其特征在于虚拟机管理器VMM根据每一虚拟机VM的LRU直方图计算该虚拟机VM的失效率Miss_ratio(d) =;其中,D为LRU堆栈当前深度,d为LRU堆栈减小后的深度。
8.如权利要求5所述的方法,其特征在于虚拟机管理器VMM对LRU堆栈进行监控,并且根据设定的硬件事件状态开启或关闭对LRU堆栈监控;当设定的硬件事件状态变化超过设定阈值时,则开启对LRU堆栈的监控,否则关闭监控。
9.如权利要I或2所述的方法,其特征在于使用LRU堆栈存储内存工作集中被访问的页面号,且LRU堆栈每一位置i设置一计数器Hist (i);虚拟机管理器VMM根据每个计数器的值和它在LRU堆栈所处的深度生成一基于AVL树的LRU直方图,其中为AVL树的每个结点添加一 size域,记录以该结点为根的子树结点个数;当一页面被访问时,计算该页面距 栈顶的距离
10.如权利要求1或2所述的方法,其特征在于当台虚拟机VMl和VM2竞争内存资源时,虚拟机管理器VMM调整内存的方法为: a)将VMl的内存减少S,将VM2的内存增大S; b)计算调整后的页面失效数C,重复步骤a)、b)直至求出C最小值Cl; c)将VMl的内存增大S,将VM2的内存减小S; d)计算调整后的页面失效数C,重复步骤c)、d)直至求出C最小值C2; e)选出Min(Cl, C2),并将虚拟机各自的内存分配值作为调整后的最终结果。
【文档编号】G06F9/50GK103885838SQ201410119508
【公开日】2014年6月25日 申请日期:2014年3月27日 优先权日:2014年3月27日
【发明者】汪小林, 王志钢, 李雁章, 罗英伟 申请人:北京大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1