发明名称 基于内存热插拔的虚拟机动态内存管理系统
摘要 本发明公开了一种基于内存热插拔的虚拟机动态内存管理系统,包括内存监视模块、内存分配模块及内存热插拔模块。内存热插拔模块利用Linux内存热插拔机制,在半虚拟化Linux虚拟机上实现内存热插拔,打破虚拟机初始的内存上限,任意的增加或减小内存,有效提高了虚拟机内存的扩展性。内存分配模块一方面动态预测虚拟机的内存需求,平衡各虚拟机的内存压力,既能满足虚拟机的内存需求,又能提高物理机的内存利用率;另一方面可以在物理机内存不足时,通过合理减小现有虚拟机的内存来创建新的虚拟机,实现了内存过量使用,提高了物理机的内存利用率。
申请公布号 CN102222014A 申请公布日期 2011.10.19
申请号 CN201110162615.0 申请日期 2011.06.16
申请人 华中科技大学 发明人 金海;廖小飞;马博;刘海坤
分类号 G06F9/455(2006.01)I;G06F12/02(2006.01)I 主分类号 G06F9/455(2006.01)I
代理机构 华中科技大学专利中心 42201 代理人 李智
主权项 基于内存热插拔的虚拟机动态内存管理系统,包括内存监视模块,用于获取各虚拟机的内存信息;内存分配模块,用于依据各虚拟机的内存信息进行动态内存分配和动态创建虚拟机;内存热插拔模块,用于将虚拟机的内存调整到内存分配模块计算得到的内存目标值;所述动态内存分配按照如下方式进行:(11)计算各虚拟机的内存增量ΔMl=Mused(n)l‑Mused(n‑1)l和交换分区增量ΔSl=S(n)l‑S(n‑1)l,其中Mused(n)l和Mused(n‑1)l分别为第l个虚拟机在第n和n‑1个时间点的使用内存,S(n)l和S(n‑1)l分别为第l个虚拟机在第n和n‑1个时间点的使用交换分区,l=1,...,L,L为虚拟机总数;(12)预测各虚拟机下一个时间点需要的使用内存Mpredict(n+1)l=Mused(n)l+ΔMl+ΔSl;(13)计算第n+1个时间点的平均内存利用率 <mrow> <msub> <mi>U</mi> <mi>avg</mi> </msub> <mrow> <mo>(</mo> <mi>n</mi> <mo>+</mo> <mn>1</mn> <mo>)</mo> </mrow> <mo>=</mo> <munderover> <mi>&Sigma;</mi> <mrow> <mi>i</mi> <mo>=</mo> <mn>1</mn> </mrow> <mi>L</mi> </munderover> <msub> <mi>M</mi> <mi>predict</mi> </msub> <msub> <mrow> <mo>(</mo> <mi>n</mi> <mo>+</mo> <mn>1</mn> <mo>)</mo> </mrow> <mi>l</mi> </msub> <mo>/</mo> <munderover> <mi>&Sigma;</mi> <mrow> <mi>l</mi> <mo>=</mo> <mn>1</mn> </mrow> <mi>L</mi> </munderover> <msub> <mi>M</mi> <mi>total</mi> </msub> <msub> <mrow> <mo>(</mo> <mi>n</mi> <mo>)</mo> </mrow> <mi>l</mi> </msub> <mo>,</mo> <mo>;</mo> </mrow>(14)计算各虚拟机在第n+1个时间点的内存目标值Mtarget(n+1)l=Mpredict(n+1)l/Uavg(n+1);(15)调用内存热插拔模块调整各虚拟机的内存至目标值Mtarget(n+1)l;(16)睡眠T秒,然后返回步骤(11);所述动态创建虚拟机按照如下方式进行:(21)若物理机的空闲内存大于或等于新虚拟机设定的内存,则直接创建新虚拟机,结束;否则,进入步骤(22);(22)计算已有虚拟机当前的平均内存利用率Uavg=∑Mused/(∑Mtotal‑Mnew+Mfree),其中,∑Mused为已有虚拟机当前的使用内存总和,∑Mtotal为已有虚拟机的内存之和,Mnew为新虚拟机设定的内存,Mfree为物理机当前的空闲内存;(23)计算各已有虚拟机的内存目标值Mtargetl=Musedl/Uavg,Musedl为第l个已有虚拟机当前的使用内存;(24)调用内存热插拔模块将各已有虚拟机的内存调整到步骤(23)得到的内存目标值后创建新虚拟机。
地址 430074 湖北省武汉市洪山区珞喻路1037号