专利名称:基于内存热插拔的虚拟机动态内存管理系统的制作方法
技术领域:
本发明属于计算机应用领域,涉及Xen半虚拟化虚拟机的内存管理,具体为一种多虚拟机环境下的动态内存管理系统。
背景技术:
当前计算系统的资源规模不断扩展,处理能力快速增强,资源种类日益丰富,应用需求灵活多样。虚拟化技术能够动态组织多种计算资源,实现透明化的可伸缩计算系统架构,从而灵活构建满足多种应用需求的计算环境,提高计算资源的使用效率。各种不同的虚拟化解决方案不断涌现,虚拟化软件Xen无疑是其中的佼佼者。Xen是剑桥大学发起的一个开源的虚拟机项目,其性能接近单机操作系统的性能。由于其优越的性能和开源性,所以被业界广泛看好,被认为是未来最有前途的虚拟化解决方案之一。气球驱动是Xen虚拟机内存管理的重要功能,用来调整虚拟机的内存大小。但是气球驱动存在缺陷,比如不能扩展虚拟机的物理地址空间,导致虚拟机内存大小存在上限;频繁使用气球驱动会导致物理地址空间不连续,产生内存碎片。内存热插拔是操作系统内存管理的一项重要技术,可以有效改善气球驱动的缺点,但是在Xen虚拟机上还未实现。一般情况下,单台物理机上运行多台虚拟机使用静态内存分配,即虚拟机的内存大小始终不变或者由管理员手动调整,在虚拟机负载变化时,可能出现内存不足或内存利用率过低的情况。因此需要一种动态的内存管理策略,根据每个虚拟机负载的变化自动调整虚拟机的内存大小,满足虚拟机的内存需求并充分利用物理机内存。
发明内容
本发明的目的在于提供一种基于内存热插拔的虚拟机动态内存管理系统,该系统能够打破虚拟机的内存上限,任意的增加或减小虚拟机;可根据虚拟机负载的变化,动态的调整每个虚拟机的内存大小,满足虚拟机的内存需求并提高物理机的内存利用率;在物理机内存不足时,通过合理减小现有虚拟机的内存,动态创建新的虚拟机。基于内存热插拔的虚拟机动态内存管理系统,包括内存监视模块,用于获取各虚拟机的内存信息;内存分配模块,用于依据各虚拟机的内存信息进行动态内存分配和动态创建虚拟机;内存热插拔模块,用于将虚拟机的内存调整到内存分配模块计算得到的内存目标值;所述动态内存分配按照如下方式进行(11)计算各虚拟机的内存增量AM1 = M^Oih-M^Oi-lh和交换分区增量AS1 =S (Ii)1-S (H)1,其中Mused(Ii)1和Mused(Ii-I)1分别为第1个虚拟机在第η和η-1个时间点的使用内存,S (n) i和S (η-1) χ分别为第1个虚拟机在第η和η_1个时间点的使用交换分区, 1 = 1,...,L,L为虚拟机总数;
(12)预测各虚拟机下一个时间点需要的使用内存Mpredirt (n+1) x = Mused (η) !+ Δ M1+ Δ S1 ;(13)计算第η + 1个时间点的平均内存利用率
权利要求
1.基于内存热插拔的虚拟机动态内存管理系统,包括内存监视模块,用于获取各虚拟机的内存信息;内存分配模块,用于依据各虚拟机的内存信息进行动态内存分配和动态创建虚拟机;内存热插拔模块,用于将虚拟机的内存调整到内存分配模块计算得到的内存目标值;所述动态内存分配按照如下方式进行(11)计算各虚拟机的内存增量AM1= Mused(n)1-Mused(n-l)dP交换分区增量AS1 = S(n)^S(Ii-I)1,其中Mused(Ii)1和Mused(n_l)i分别为第1个虚拟机在第η和η-1个时间点的使用内存,S(Ii)1和S(Ii-I)1分别为第1个虚拟机在第η和η-1个时间点的使用交换分区, 1 = 1,...,L,L为虚拟机总数;(12)预测各虚拟机下一个时间点需要的使用内存Mpredirt(I^l)1= Mused(n) !+AM1+Δ S1 ;(13)计算第η+ 1个时间点的平均内存利用率
2.根据权利要求1所述的基于内存热插拔的虚拟机动态内存管理系统,其特征在于, 所述内存热插拔模块按照如下方式调整虚拟机内存(31)将虚拟机的内存目标值与虚拟机的当前内存进行比较,若大于,进入步骤(32); 若小于,进入步骤(34);若等于,则结束;(32)若虚拟机的物理地址空间小于虚拟机的内存目标值,则扩展其物理地址空间至大于或等于内存目标值,记扩展的新物理地址空间中的内存页面为离线页面,进入步骤(33), 否则,直接进入步骤(33);(33)增加虚拟机内存至内存目标值(331)若虚拟机的内存目标值大于当前内存,则计算虚拟机内存目标值与当前内存的差值A1,进入步骤(332),否则,结束;(332)如果存在保留页面,则为一个保留页面分配内存,记该保留页面为可用页面,返回步骤(331);否则,进入步骤(333);(333)若A1大于128M且存在离线内存段, 则为一个离线内存段分配内存,记该离线内存段为可用内存段,返回步骤(331),否则,进入步骤(334);(335)按照地址先后顺序逐一对离线页面分配内存直到被分配的内存和等于A1,记被分配内存的离线页面为可用页面;(34)减小虚拟机内存至内存目标值(341)若虚拟机的内存目标值小于当前内存,则计算当前内存与虚拟机内存目标值的差值Δ 2,进入步骤(342),否则,结束;(342)若Δ2大于或等于128Μ,则进入步骤(343),否则,进入步骤(344);(343)查询是否存在可删除的内存段,若存在,则将其中一个内存段的内存释放给虚拟机管理器,记该内存段为离线内存段,返回步骤(341),否则,进入步骤(344);(344)向虚拟机操作系统申请大小为Δ2的内存,将申请到的内存页面释放给虚拟机管理器,并记这些页面为保留页面。
全文摘要
本发明公开了一种基于内存热插拔的虚拟机动态内存管理系统,包括内存监视模块、内存分配模块及内存热插拔模块。内存热插拔模块利用Linux内存热插拔机制,在半虚拟化Linux虚拟机上实现内存热插拔,打破虚拟机初始的内存上限,任意的增加或减小内存,有效提高了虚拟机内存的扩展性。内存分配模块一方面动态预测虚拟机的内存需求,平衡各虚拟机的内存压力,既能满足虚拟机的内存需求,又能提高物理机的内存利用率;另一方面可以在物理机内存不足时,通过合理减小现有虚拟机的内存来创建新的虚拟机,实现了内存过量使用,提高了物理机的内存利用率。
文档编号G06F12/02GK102222014SQ20111016261
公开日2011年10月19日 申请日期2011年6月16日 优先权日2011年6月16日
发明者刘海坤, 廖小飞, 金海 , 马博 申请人:华中科技大学