当前位置: 首页 > 专利查询>北京大学专利>正文

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

技术编号:10158725 阅读:276 留言:0更新日期:2014-07-01 13:02
本发明专利技术公开了一种获取虚拟机内存工作集的方法及内存优化分配方法。本方法为:1)修改虚拟机管理器VMM的内存页访问机制:将虚拟机VM的所有一级页表的页表项PTE的访问权限设置为系统态;2)当一内存页面被一VM访问时,产生次要页面失效陷入到VMM中,VMM获取该页面的虚拟地址和其所属的页表地址,并将该页面的PTE访问权限设置为用户态;3)VMM将每一VM访问过的页面地址分别记录到一对应的最近使用LRU直方图中,通过绘制失效率曲线,得到每一虚拟机VM的内存工作集WSS;4)VMM根据虚拟机的WSS为每一VM按需分配内存。本方法能够低开销获取每一虚拟机的内存集,并按照VM的内存按需分配,极大提高资源利用率。

【技术实现步骤摘要】

本专利技术涉及一种获取虚拟机内存工作集的方法及内存优化分配方法,属于虚拟化
技术背景在当前常见的虚拟化应用中,有这样一种场景:同一虚拟化管理器(Virtual Machine Monitor,VMM)上管理着多个虚拟机(Virtual Machine,VM),且多个VM之间共享内存等硬件资源。而在一台物理机上往往运行着多个虚拟机,这些虚拟机的内存通常由VMM静态设置(如图1所示)。当一台虚拟机内存超载时,它不得不将一些物理页面交换到磁盘上去,即便其它虚拟机有空闲内存,也会导致性能急剧下降。为了改善或者避免类似的情况,最合适的方法是让虚拟化环境下的资源的管理者、分配者VMM能够为多台虚拟机进行按需、动态内存调控。实现这一目标的关键是能够准确、低开销地预测虚拟机的内存需求。在静态分配内存的时候,由于无法提前预知虚拟机所需内存的大小,因此只能尽可能多的分配内存,这样的策略造成了内存的很大浪费。更极端的情况是在所分配内存之和大于物理内存的情况下,内存初始化无法完成(如图2所示)。虚拟机的行为具有很强的可变性,其内存需求是动态变化的。在这种情况下如果没有一个有效的物理内存管理和调度机制,数据中心的内存资源会出现利用率低下或者资源浪费的问题,甚至导致整体性能急剧下降。而现有操作系统只报告系统占用和空闲内存的大小,而不能统计每个程序所需要内存的大小。并且,系统性能和分配内存大小没有正比关系,占用的内存不一定在被有效使用。最理想的情况是按照虚拟机的需求,动态预测内存需求,用历史预测未来。目前已经有一些基于内存工作集的研究工作。VMware ESX采用的方法是”采样”,即在每个采样间隔内监控一组随机的内存页面,一段时间后统计出这组页面的利用率作为整个物理内存的利用率。这种方法可以估计出有多少不活动的页面。但是因为程序性能和分配内存大小并不是呈线性关系的,所以该方法不能预测当把这些不活动的页面回收后,对程序性能产生多大的影响。通过监控磁盘I/O来推断当前内存压力并计算所超载的内存大小也是有一种探测内存工作集的方法,但是这只能预测当内存超载时的应用程序的工作集大小,并不适用于系统有空闲内存的情况,因此无法对回收多余的内存做出决策。
技术实现思路
本专利技术的目的是提供一种获取虚拟机内存工作集的方法及内存优化分配方法,可实时高效的探测出虚拟机的内存工作集的大小,实现虚拟化平台上内存的按需分配,有效的提高资源利用率。内存工作集(Working Set Size,WSS)是程序访存行为的直接体现,是度量程序内存需求的重要指标。而失效率曲线(Miss Ratio Curve,MRC)刻画了不同内存分配值所对应的总的页面访问失效率,因而可以用来度量程序性能和内存大小之间的关系。根据程序的MRC,我们可以将它的WSS重新理解为:在页面失效率不显著影响程序性能的范围内,应用程序所需要的物理内存。本专利技术的技术方案为:一种获取虚拟机内存工作集的方法,其步骤为:1)修改虚拟机管理器VMM的内存页访问机制:将虚拟机VM的所有一级页表的页表项PTE的访问权限设置为系统态;2)当一内存页面被一虚拟机VM访问时,产生次要页面失效陷入到虚拟机管理器VMM中,虚拟机管理器VMM获取该页面的虚拟地址和其所属的页表地址,并将该页面的页表项PTE的访问权限设置为用户态;3)虚拟机管理器VMM将每一虚拟机VM访问过的页面地址分别记录到一对应的最近使用LRU直方图中,通过绘制失效率曲线MRC,进而得到每一虚拟机VM的内存工作集。一种虚拟机内存优化分配的方法,其步骤为:1)修改虚拟机管理器VMM的内存页访问机制:将虚拟机VM的所有一级页表的页表项PTE的访问权限设置为系统态;2)当一内存页面被一虚拟机VM访问时,产生次要页面失效陷入到虚拟机管理器VMM中,虚拟机管理器VMM获取该页面的虚拟地址和其所属的页表地址,并将该页面的页表项PTE的访问权限设置为用户态;3)虚拟机管理器VMM将每一虚拟机VM访问过的页面地址分别记录到一对应的最近使用LRU直方图中,通过绘制失效率曲线MRC,进而得到每一虚拟机VM的内存工作集WSS;4)虚拟机管理器VMM根据虚拟机的内存工作集WSS为每一虚拟机VM按需分配内存。进一步的,使用陷入俘获机制抓取虚拟机的访存地址,采用一FIFO队列动态记录虚拟机俘获的地址;当有新的页面加入到该FIFO队列时,将其页面号加入队尾;如果队列已满,则将队头的页面淘汰,并将其权限重新设为系统态。进一步的,使用LRU堆栈存储内存工作集中被访问的页面号。虚拟机管理器VMM将全部的机器地址空间P划分为N个标签,每一标签Ti对应一计数器Hit(i);当一页面被访问时,虚拟机管理器VMM首先定位该页面所对应的标签Ti;然后计算该标签Ti在LRU访问序列中的距离d;然后将该标签Ti移到LRU序列的起始位置,并将计数器Hit(d)加一。进一步的,虚拟机管理器VMM根据每一虚拟机VM的LRU直方图计算该虚拟机VM的失效率Miss_ratio(d)=Σi>dDHist(i)/Σi=_0DHist(i);]]>其中,D为LRU堆栈当前深度,d为LRU堆栈减小后的深度。进一步的,如果设定时间长度内虚拟机VM访问的页面总数与其对应的FIFO队列所能容纳页面数比例大于设定值H,则增大该虚拟机VM的FIFO队列长度;如果设定时间长度内虚拟机VM访问的页面总数与其对应的FIFO队列所能容纳页面数比例小于设定值h,则减小该虚拟机的FIFO队列长度。进一步的,虚拟机管理器VMM对LRU堆栈进行监控,并且根据设定的硬件事件状态开启或关闭对LRU堆栈监控;当设定的硬件事件状态变化超过设定阈值时,则开启对LRU堆栈的监控,否则关闭监控。进一步的,使用优化的AVL树存储被访问的页面号,且LRU堆栈每一位置i设置一计数器Hist(i);虚拟机管理器VMM根据每个计数器的值和它在LRU堆栈所处的深度生成一基于AVL树的LRU直方图,其中为AVL树的每个结点添加一size域,记录以该结点为根的子树结点个数;当一页面被访问时,计算该页面距栈顶的距离LD(x)=0x=NullLD(ANC(x))+size(LC(x))+1x≠Null;]]>其中,size(x)为以标签x为根的子树的容量,LC(x)表示以标签x为根的子树的左孩子,ANC(x)为返回标签x的祖先y或者Null;然后将该标签x删除,再将它作为AVL树最左的叶本文档来自技高网
...
一种获取虚拟机内存工作集的方法及内存优化分配方法

【技术保护点】
一种获取虚拟机内存工作集的方法,其步骤为:1)修改虚拟机管理器VMM的内存页访问机制:将虚拟机VM的所有一级页表的页表项PTE的访问权限设置为系统态;2)当一内存页面被一虚拟机VM访问时,产生次要页面失效陷入到虚拟机管理器VMM中,虚拟机管理器VMM获取该页面的虚拟地址和其所属的页表地址,并将该页面的页表项PTE的访问权限设置为用户态;3)虚拟机管理器VMM将每一虚拟机VM访问过的页面地址分别记录到一对应的最近使用LRU直方图中,通过绘制失效率曲线MRC,进而得到每一虚拟机VM的内存工作集。

【技术特征摘要】
1.一种获取虚拟机内存工作集的方法,其步骤为:
1)修改虚拟机管理器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...

【专利技术属性】
技术研发人员:汪小林王志钢李雁章罗英伟
申请(专利权)人:北京大学
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1