CN102222014A - 基于内存热插拔的虚拟机动态内存管理*** - Google Patents

基于内存热插拔的虚拟机动态内存管理*** Download PDF

Info

Publication number
CN102222014A
CN102222014A CN2011101626150A CN201110162615A CN102222014A CN 102222014 A CN102222014 A CN 102222014A CN 2011101626150 A CN2011101626150 A CN 2011101626150A CN 201110162615 A CN201110162615 A CN 201110162615A CN 102222014 A CN102222014 A CN 102222014A
Authority
CN
China
Prior art keywords
memory
virtual machine
internal memory
desired value
machine
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN2011101626150A
Other languages
English (en)
Other versions
CN102222014B (zh
Inventor
金海�
廖小飞
马博
刘海坤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huazhong University of Science and Technology
Original Assignee
Huazhong University of Science and Technology
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huazhong University of Science and Technology filed Critical Huazhong University of Science and Technology
Priority to CN 201110162615 priority Critical patent/CN102222014B/zh
Publication of CN102222014A publication Critical patent/CN102222014A/zh
Application granted granted Critical
Publication of CN102222014B publication Critical patent/CN102222014B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Memory System (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

本发明公开了一种基于内存热插拔的虚拟机动态内存管理***,包括内存监视模块、内存分配模块及内存热插拔模块。内存热插拔模块利用Linux内存热插拔机制,在半虚拟化Linux虚拟机上实现内存热插拔,打破虚拟机初始的内存上限,任意的增加或减小内存,有效提高了虚拟机内存的扩展性。内存分配模块一方面动态预测虚拟机的内存需求,平衡各虚拟机的内存压力,既能满足虚拟机的内存需求,又能提高物理机的内存利用率;另一方面可以在物理机内存不足时,通过合理减小现有虚拟机的内存来创建新的虚拟机,实现了内存过量使用,提高了物理机的内存利用率。

Description

基于内存热插拔的虚拟机动态内存管理***
技术领域
本发明属于计算机应用领域,涉及Xen半虚拟化虚拟机的内存管理,具体为一种多虚拟机环境下的动态内存管理***。
背景技术
当前计算***的资源规模不断扩展,处理能力快速增强,资源种类日益丰富,应用需求灵活多样。虚拟化技术能够动态组织多种计算资源,实现透明化的可伸缩计算***架构,从而灵活构建满足多种应用需求的计算环境,提高计算资源的使用效率。各种不同的虚拟化解决方案不断涌现,虚拟化软件Xen无疑是其中的佼佼者。Xen是剑桥大学发起的一个开源的虚拟机项目,其性能接近单机操作***的性能。由于其优越的性能和开源性,所以被业界广泛看好,被认为是未来最有前途的虚拟化解决方案之一。气球驱动是Xen虚拟机内存管理的重要功能,用来调整虚拟机的内存大小。但是气球驱动存在缺陷,比如不能扩展虚拟机的物理地址空间,导致虚拟机内存大小存在上限;频繁使用气球驱动会导致物理地址空间不连续,产生内存碎片。内存热插拔是操作***内存管理的一项重要技术,可以有效改善气球驱动的缺点,但是在Xen虚拟机上还未实现。
一般情况下,单台物理机上运行多台虚拟机使用静态内存分配,即虚拟机的内存大小始终不变或者由管理员手动调整,在虚拟机负载变化时,可能出现内存不足或内存利用率过低的情况。因此需要一种动态的内存管理策略,根据每个虚拟机负载的变化自动调整虚拟机的内存大小,满足虚拟机的内存需求并充分利用物理机内存。
发明内容
本发明的目的在于提供一种基于内存热插拔的虚拟机动态内存管理***,该***能够打破虚拟机的内存上限,任意的增加或减小虚拟机;可根据虚拟机负载的变化,动态的调整每个虚拟机的内存大小,满足虚拟机的内存需求并提高物理机的内存利用率;在物理机内存不足时,通过合理减小现有虚拟机的内存,动态创建新的虚拟机。
基于内存热插拔的虚拟机动态内存管理***,包括
内存监视模块,用于获取各虚拟机的内存信息;
内存分配模块,用于依据各虚拟机的内存信息进行动态内存分配和动态创建虚拟机;
内存热插拔模块,用于将虚拟机的内存调整到内存分配模块计算得到的内存目标值;
所述动态内存分配按照如下方式进行:
(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个时间点的平均内存利用率 U avg ( n + 1 ) = Σ i = 1 L M predict ( n + 1 ) l / Σ l = 1 L M total ( n ) l , ;
(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)得到的内存目标值后创建新虚拟机。
进一步地,所述内存热插拔模块按照如下方式调整虚拟机内存:
(31)将虚拟机的内存目标值与虚拟机的当前内存进行比较,若大于,进入步骤(32);若小于,进入步骤(34);若等于,则结束;
(32)若虚拟机的物理地址空间小于虚拟机的内存目标值,则扩展其物理地址空间至大于或等于内存目标值,记扩展的新物理地址空间中的内存页面为离线页面,进入步骤(33),否则,直接进入步骤(33);
(33)增加虚拟机内存至内存目标值:
(331)若虚拟机的内存目标值大于当前内存,则计算虚拟机内存目标值与当前内存的差值Δ1,进入步骤(332),否则,结束;
(332)如果存在保留页面,则为一个保留页面分配内存,记该保留页面为可用页面,返回步骤(331);否则,进入步骤(333);
(333)若Δ1大于128M且存在离线内存段,则为一个离线内存段分配内存,记该离线内存段为可用内存段,返回步骤(331),否则,进入步骤(334);
(335)按照地址先后顺序逐一对离线页面分配内存直到被分配的内存和等于Δ1,记被分配内存的离线页面为可用页面;
(34)减小虚拟机内存至内存目标值:
(341)若虚拟机的内存目标值小于当前内存,则计算当前内存与虚拟机内存目标值的差值Δ2,进入步骤(342),否则,结束;
(342)若Δ2大于或等于128M,则进入步骤(343),否则,进入步骤(344);
(343)查询是否存在可删除的内存段,若存在,则将其中一个内存段的内存释放给虚拟机管理器,记该内存段为离线内存段,返回步骤(341),否则,进入步骤(344);
(344)向虚拟机操作***申请大小为Δ2的内存,将申请到的内存页面释放给虚拟机管理器,并记这些页面为保留页面。
具体而言,本发明有如下特点:
(1)扩展性好
Xen现在使用气球驱动来调整虚拟机的内存大小,气球驱动不能扩展虚拟机的物理地址空间,即不能突破虚拟机启动时的内存上限,另外频繁的使用气球驱动会产生大量的内存碎片。本发明中实现的虚拟机内存热插拔技术,可以扩展虚拟机的物理地址空间,使虚拟机的内存大小无上限,可以任意的增加或减小虚拟机内存,有效的提高了虚拟机内存的扩展性;与气球驱动相比,通过内存热插拔的方式减小内存可以避免内存碎片的产生。
(2)可用性好
Xen虚拟机的内存管理是静态的,只能手动地调整虚拟机内存大小,随着负载的变化,可能出现内存不足或内存浪费的情况。本发明中的动态内存分配功能可以动态感知虚拟机的内存压力,预测虚拟机的内存需求,平衡虚拟机的内存压力,既能满足虚拟机的内存需求,提高虚拟机性能,又能提高物理机的内存利用率,增强了虚拟机的可用性。
在物理机内存不足时,Xen无法创建新虚拟机。本发明中的动态创建虚拟机功能可以在物理机内存不足时,通过合理减小现有虚拟机的内存,来创建新的虚拟机,实现了虚拟化技术中的重要功能内存过量使用(memory overcommit),增强了虚拟机的可用性。
(3)稳定性好
本发明经过长时间的测试,测试时使用多种测试环境,包括手动设置的各种极端情况,以及使用各种权威的基准测试程序进行长时间的测试,结果证明***中的各项功能都是稳定的,可靠的。
附图说明
图1为本发明的***结构图;
图2为本发明的***功能模块图;
图3为本发明的物理地址空间状态图;
图4为本发明的内存热插拔驱动工作流程图;
图5为本发明的热插拔增加内存流程图;
图6为本发明的热插拔减小内存流程图;
图7为本发明的动态内存分配流程图;
图8为本发明的动态创建虚拟机流程图。
具体实施方式
本发明实现的动态内存管理***基于Xen4.0开发,针对半虚拟化虚拟机。
***结构如图1所示,该***应用于x86架构的物理硬件,虚拟机管理器(Virtual Machine Monitor)运行在物理硬件之上,负责最底层的资源管理,比如内存管理,CPU调度,设备访问等。Domain 0是特权域,只有一个,负责管理每个domain U。Domain U是客户域,可以有多个,下文中提到的虚拟机均指domain U。Xenstore是一个类似数据库的文件***,由domain 0建立,与每个domain U共享。Xenstore存储了虚拟机的配置和状态信息,每种信息都有对应的数据项,domain 0和domain U通过读写同一个数据项进行域间通信。每个domain U中运行一个内存信息监控进程,获得内存信息并发送给domain 0;domain 0中运行一个动态内存分配进程,负责接收domain U的内存信息,为动态内存分配和动态创建虚拟机功能计算每个domain U的内存目标值,并发送给domain U中的内存热插拔驱动。Domain 0和domain U的操作***均为64位的Linux(内核版本为2.6.31)。
如图2所示,该***由三个模块构成,分别是内存监视模块,内存分配模块和内存热插拔模块。
内存监视模块的作用是监视每个虚拟机的内存信息,具体做法是通过xenstore进行域间通信。Domain U中运行一个进程获得所需的内存信息,包括内存利用率,交换分区利用率等,并写入xenstore;domain 0中运行一个进程读取xenstore,获得domain U的内存信息。虚拟机的内存包括使用内存和空闲内存,内存利用率就是使用内存占虚拟机内存的比例。
内存分配模块的作用是计算动态内存分配和动态创建虚拟机时如何分配虚拟机内存。具体做法是分析内存监视模块获得的内存信息,使用相应的分配算法计算每个虚拟机内存大小的目标值。
内存热插拔模块的作用是调整每个虚拟机的内存大小,具体做法是根据内存分配模块计算出的虚拟机内存目标值,调用内存热插拔驱动调整虚拟机内存至目标值;另外还提供了用户态的调用接口,可以手动调用内存热插拔驱动调整虚拟机内存大小。
内存热插拔驱动执行过程中物理地址空间可能出现的状态如图3所示。白色部分代表操作***的可用内存;阴影部分代表操作***的不可用内存,包括减小内存时产生的离线内存段和保留页面,以及细粒度增加内存时留下的物理地址空间末尾的离线页面。
动态内存管理***具有内存热插拔,动态内存分配,动态创建虚拟机三种基本功能,下面结合附图和实例对本发明作详细的说明。
(1)如图4所示,内存热插拔驱动的工作流程如下:
(1.1)加载内存热插拔驱动模块,并初始化;
(1.2)接收内存目标值,执行内存热插拔任务;
(1.3)若内存目标值大于虚拟机内存当前值,执行增加内存处理函数,进行增加内存的相关操作,进入步骤(1.4),;若目标值小于虚拟机内存当前值,执行减小内存处理函数,进行减小内存的相关操作,进入步骤(1.4),;
(1.4)如果目标值等于当前值,结束;否则(某个步骤出现错误),休眠一个时钟节拍(HZ)后进入步骤(1.3),继续执行内存热插拔任务。
如图5所示,增加内存的流程如下:
(A1)若虚拟机的物理地址空间小于虚拟机的内存目标值,则扩展其物理地址空间至大于或等于内存目标值,记扩展的新物理地址空间中的内存页面为离线页面,进入步骤(2.2),否则,直接进入步骤(2.2)
(A2)若虚拟机的内存目标值大于当前内存,则计算虚拟机内存目标值与当前内存的差值Δ1,进入步骤(A3),否则,结束;
(A3)如果存在保留页面,则为其中一个保留页面分配内存,记该保留页面为可用页面即增加了一页内存,返回步骤(A2);否则,进入步骤(A4);
(A4)若Δ1大于等于128M且存在离线内存段,则为其中一个离线内存段分配内存,记该离线内存段为可用内存段即增加了一段内存,返回步骤(A2),否则,进入步骤(A5);
(A5)按照地址先后顺序逐一对离线页面分配内存直到被分配的内存和等于Δ1,记被分配内存的离线页面为可用页面,此时增加内存操作已经完成。
如图6所示,减小内存的流程如下:
(B1)若虚拟机的内存目标值小于当前内存,则计算当前内存与虚拟机内存目标值的差值Δ2,进入步骤(B2),否则,结束;
(B2)若Δ2大于或等于128M,则进入步骤(B3),否则,进入步骤(B4);
(B3)查询是否存在可删除的内存段,可删除的内存段是指可以通过内存迁移技术使该内存段中的所有内存页面变成空闲页面,若存在,则将其中一个内存段对应的物理地址空间从内存分配器中删除,并将该内存段的内存释放给虚拟机管理器,记该内存段为离线内存段即减小了一段内存,返回步骤(B1),否则,进入步骤(B4)
(B4)向虚拟机操作***申请大小为Δ2的内存,将申请到的内存页面释放给虚拟机管理器,并记这些页面为保留页面,即减小了大小为Δ2的内存,此时减小内存的操作已完成。
(2)如图7所示,动态内存分配工作流程如下:
(2.1)通过内存监控模块获得每个虚拟机的内存信息;
(2.2)计算各虚拟机的内存增量ΔMl和交换分区增量ΔSl,计算方法如下,其中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为虚拟机总数,第n个时间点为当前时间点;
Figure BDA0000068870340000101
(2.3)预测内存需求,即下一个时间点需要的使用内存,预测值Mpredict(n+1)l等于当前的使用内存Mused(n)l加上内存增量和交换分区增量;
  Mpredict(n+1)l=Mused(n)l+ΔMl+ΔSl
(2.4)计算第n+1个时间点的平均内存利用率Uavg(n+1),Mtotal(n)l是第l个虚拟机在第n个时间点的内存;
Figure BDA0000068870340000102
(2.5)计算各虚拟机在第n+1个时间点的内存目标值Mtarget(n+1)l,等于内存需求预测值除以平均内存利用率。
  Mtarget(n+1)l=Mpredict(n+1)l/Uavg(n+1)
(2.6)如果虚拟机内存利用率在平均内存利用率范围(1~10%)内,进入步骤(2.7);否则进入步骤(2.8);
  |Mpredict(n+1)l/Mtotal(n)l-Uavg(n+1)|≤平均内存利用率范围
(2.7)内存目标值赋值为内存当前值,不调整内存大小,目的是减少内存调整的次数;
  Mtarget(n+1)l=Mtotal(n)l
(2.8)如果内存目标值小于产生内存溢出的临界值(/proc/meminfo中的Committed_AS),进入步骤(2.9),否则进入步骤(2.10);
(2.9)内存目标值赋值为Committed_AS,避免产生内存溢出;
  Mtarget(n+1)l=Committed_AS
(2.10)调用内存热插拔驱动调整每个虚拟机的内存至目标值Mtarget(n+1)l
(2.11)睡眠T秒,T为动态内存分配的周期,然后返回步骤(2.1)。
其中步骤(2.6)到步骤(2.9)是针对一些特殊情况的优化处理,一方面使用内存利用率范围来减少内存调整的次数,另一方面要避免产生内存溢出。步骤(2.6)到步骤(2.9)不是必要的步骤。
(3)如图8所示,动态创建虚拟机的流程如下:
(3.1)若物理机的空闲内存大于或等于新虚拟机设定的内存,则直接创建新虚拟机,结束;否则,进入步骤(3.2);
(3.2)通过内存监控模块获得每个虚拟机的内存信息;
(3.3)保留新虚拟机设定的内存后,计算平均内存利用率Uavg,其中∑Mused为已有虚拟机的使用内存总和,∑Mtotal为已有虚拟机的内存之和,Mnew是新虚拟机设定的内存,Mfree是物理机的空闲内存;
  Uavg=∑Mused/(∑Mtotal-Mnew+Mfree)
(3.4)计算各已有虚拟机的内存目标值Mtargetl,其中Mused l为第l个已有虚拟机当前的使用内存
  Mtarget l=Mused l/Uavg
(3.5)调用内存热插拔驱动调整每个虚拟机的内存至步骤(3.4)中的内存目标值Mtargetl
(3.6)创建新虚拟机,此时物理机已经有足够的空闲内存来创建新虚拟机。
实例:
本发明所阐述的动态内存管理***可以通过具体实例来说明,实验环境只需一台PC机,配置如下:
Figure BDA0000068870340000121
物理机上需要安装本发明修改后的Xen 4.0和Linux 2.6.31内核,domain U与domain 0都使用Linux 2.6.31内核,下面分别测试本发明的三种功能。
(1)虚拟机内存热插拔测试
(1.1)初始状态:物理机内存为2G,domain 0内存固定为1G(不能被改变);
(1.2)创建一个256M内存的虚拟机;
(1.3)粗粒度增加内存:使用内存热插拔驱动在domain 0的用户态接口设置虚拟机内存为512M,增加了256M内存,即增加了两段内存;
(1.4)细粒度增加内存:设置虚拟机内存为562M,增加了50内存;
(1.5)粗粒度减小内存:设置虚拟机内存为434M,减小了128M内存,即一段内存;
(1.6)细粒度减小内存:设置虚拟机内存为400M,减小了34M内存。
以上测试证明了虚拟机内存热插拔可以打破虚拟机初始的内存上限,任意的增加或减小虚拟机内存。另外动态内存分配的测试过程需要长时间频繁的调整内存大小,可以证明内存热插拔驱动的稳定性和可靠性。
(2)动态创建虚拟机测试
(2.1)初始状态:物理机内存为2G,domain 0内存固定为1G,物理机的空闲内存约为1G;
(2.2)创建两个虚拟机,内存都是500M,物理机空闲约为20M;
(2.3)使用“xm create”命令直接创建一个256M内存的虚拟机,创建失败,因为物理机的空闲内存不足;
(2.4)使用动态创建虚拟机功能,创建新虚拟机成功;
(2.5)使用动态创建虚拟机功能,创建第四个256M内存的虚拟机成功;
(2.6)使用动态创建虚拟机功能,创建第五个256M内存的虚拟机成功。以上测试证明了动态创建虚拟机功能可以在物理机内存不足的情况下,通过合理减小现有虚拟机的内存,创建新虚拟机,实现了内存过量使用。
(3)动态内存分配测试
(3.1)初始状态:物理机内存为2G,domain0内存固定为1G,物理机的空闲内存约为1G;
(3.2)创建两个虚拟机,内存都是512M;
(3.3)静态内存分配测试:一个虚拟机运行基准测试程序Spec CPU 2006,另一个虚拟机空转;
(3.4)静态内存分配测试完毕后,将两个虚拟机关闭,然后按照相同的配置重新创建两个虚拟机;
(3.5)动态内存分配测试:一个虚拟机运行基准测试程序Spec CPU 2006,另一个虚拟机空转。
在动态内存分配测试过程中,随着虚拟机负载的变化,两个虚拟机内存大小动态变化,使高负载的虚拟机具有较大的内存,低负载的虚拟机具有较小的内存。
基准测试程序Spec CPU 2006的测试结果如下表所示,动态内存分配对内存密集型测试项目perlbench,bzip2和gcc的性能有明显的提升,其他测试项目对内存要求不高,性能变化不大。长时间的运行高负载的基准测试程序也证明了动态内存分配的高稳定性和可靠性。

Claims (2)

1.基于内存热插拔的虚拟机动态内存管理***,包括
内存监视模块,用于获取各虚拟机的内存信息;
内存分配模块,用于依据各虚拟机的内存信息进行动态内存分配和动态创建虚拟机;
内存热插拔模块,用于将虚拟机的内存调整到内存分配模块计算得到的内存目标值;
所述动态内存分配按照如下方式进行:
(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个时间点的平均内存利用率 U avg ( n + 1 ) = Σ i = 1 L M predict ( n + 1 ) l / Σ l = 1 L M total ( n ) l , ;
(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)得到的内存目标值后创建新虚拟机。
2.根据权利要求1所述的基于内存热插拔的虚拟机动态内存管理***,其特征在于,所述内存热插拔模块按照如下方式调整虚拟机内存:
(31)将虚拟机的内存目标值与虚拟机的当前内存进行比较,若大于,进入步骤(32);若小于,进入步骤(34);若等于,则结束;
(32)若虚拟机的物理地址空间小于虚拟机的内存目标值,则扩展其物理地址空间至大于或等于内存目标值,记扩展的新物理地址空间中的内存页面为离线页面,进入步骤(33),否则,直接进入步骤(33);
(33)增加虚拟机内存至内存目标值:
(331)若虚拟机的内存目标值大于当前内存,则计算虚拟机内存目标值与当前内存的差值Δ1,进入步骤(332),否则,结束;
(332)如果存在保留页面,则为一个保留页面分配内存,记该保留页面为可用页面,返回步骤(331);否则,进入步骤(333);
(333)若Δ1大于128M且存在离线内存段,则为一个离线内存段分配内存,记该离线内存段为可用内存段,返回步骤(331),否则,进入步骤(334);
(335)按照地址先后顺序逐一对离线页面分配内存直到被分配的内存和等于Δ1,记被分配内存的离线页面为可用页面;
(34)减小虚拟机内存至内存目标值:
(341)若虚拟机的内存目标值小于当前内存,则计算当前内存与虚拟机内存目标值的差值Δ2,进入步骤(342),否则,结束;
(342)若Δ2大于或等于128M,则进入步骤(343),否则,进入步骤(344);
(343)查询是否存在可删除的内存段,若存在,则将其中一个内存段的内存释放给虚拟机管理器,记该内存段为离线内存段,返回步骤(341),否则,进入步骤(344);
(344)向虚拟机操作***申请大小为Δ2的内存,将申请到的内存页面释放给虚拟机管理器,并记这些页面为保留页面。
CN 201110162615 2011-06-16 2011-06-16 基于内存热插拔的虚拟机动态内存管理方法 Expired - Fee Related CN102222014B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN 201110162615 CN102222014B (zh) 2011-06-16 2011-06-16 基于内存热插拔的虚拟机动态内存管理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN 201110162615 CN102222014B (zh) 2011-06-16 2011-06-16 基于内存热插拔的虚拟机动态内存管理方法

Publications (2)

Publication Number Publication Date
CN102222014A true CN102222014A (zh) 2011-10-19
CN102222014B CN102222014B (zh) 2013-05-22

Family

ID=44778574

Family Applications (1)

Application Number Title Priority Date Filing Date
CN 201110162615 Expired - Fee Related CN102222014B (zh) 2011-06-16 2011-06-16 基于内存热插拔的虚拟机动态内存管理方法

Country Status (1)

Country Link
CN (1) CN102222014B (zh)

Cited By (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102681792A (zh) * 2012-04-16 2012-09-19 华中科技大学 一种固态盘内存分区方法
CN103092678A (zh) * 2013-01-22 2013-05-08 华中科技大学 一种多增量虚拟机内存管理***和方法
CN103309698A (zh) * 2012-03-16 2013-09-18 鸿富锦精密工业(深圳)有限公司 虚拟机内存管理***及方法
CN103324516A (zh) * 2013-07-04 2013-09-25 曙光信息产业(北京)有限公司 基于虚拟化驱动的硬件管理方法和装置
CN103365700A (zh) * 2013-06-28 2013-10-23 福建师范大学 一种面向云计算虚拟化环境的资源监测和调整***
CN103605613A (zh) * 2013-11-21 2014-02-26 中标软件有限公司 云计算环境中动态调整虚拟机内存的方法及***
CN104978233A (zh) * 2014-04-11 2015-10-14 郑建锋 动态使用内存的方法与装置
CN105162667A (zh) * 2015-09-10 2015-12-16 华为技术有限公司 虚拟机配置方法和装置
CN105320559A (zh) * 2014-07-30 2016-02-10 ***通信集团广东有限公司 一种云计算***的调度方法和装置
CN105511940A (zh) * 2015-11-30 2016-04-20 广州云宏信息科技股份有限公司 一种Xen虚拟化中授权虚拟机访问Xenstore的方法及***
CN103176832B (zh) * 2013-02-07 2016-04-27 宝龙计算机***(湖南)有限公司 一种类unix操作***运行虚拟操作***的方法及装置
CN105740050A (zh) * 2016-01-28 2016-07-06 华中科技大学 一种虚拟化环境下信任传递方法
CN106708596A (zh) * 2015-11-13 2017-05-24 华为技术有限公司 一种输入输出虚拟化资源的调整方法及处理器
CN107391227A (zh) * 2017-07-20 2017-11-24 郑州云海信息技术有限公司 一种内存管理方法及装置
CN107506286A (zh) * 2017-09-26 2017-12-22 郑州云海信息技术有限公司 Cpu和内存块的自动上下线方法和***
CN107783812A (zh) * 2016-08-24 2018-03-09 阿里巴巴集团控股有限公司 虚拟机内存管理方法及装置
CN110580195A (zh) * 2019-08-29 2019-12-17 上海仪电(集团)有限公司中央研究院 一种基于内存热插拔的内存分配方法和装置
CN110580194A (zh) * 2019-08-29 2019-12-17 上海仪电(集团)有限公司中央研究院 基于内存热插拔技术的容器调度方法及管理节点调度器
CN110633130A (zh) * 2019-08-29 2019-12-31 上海仪电(集团)有限公司中央研究院 一种基于内存热插拔技术的虚拟内存管理方法和装置
US10719342B2 (en) 2015-11-25 2020-07-21 International Business Machines Corporation Provisioning based on workload displacement
CN111752674A (zh) * 2020-05-20 2020-10-09 上海仪电(集团)有限公司中央研究院 Linux***环境中的技术架构、内存分配方法、设备及介质
CN114237831A (zh) * 2022-02-25 2022-03-25 阿里巴巴(中国)有限公司 虚拟中央处理器热插拔方法、物理主机和存储介质
CN115543862A (zh) * 2022-09-27 2022-12-30 超聚变数字技术有限公司 内存管理方法及相关装置

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101504620A (zh) * 2009-03-03 2009-08-12 华为技术有限公司 一种虚拟化集群***负载平衡方法、装置及***
CN101620573A (zh) * 2009-07-03 2010-01-06 中国人民解放军国防科学技术大学 X86体系结构内存管理单元虚拟化方法
CN101706742A (zh) * 2009-11-20 2010-05-12 北京航空航天大学 一种基于多核动态划分的非对称虚拟机i/o调度方法
US20100312982A1 (en) * 2009-06-04 2010-12-09 Hitachi, Ltd. Storage management command control in virtualized environment
CN101916207A (zh) * 2010-08-28 2010-12-15 华为技术有限公司 桌面虚拟化环境下的节能方法、装置及***
CN101986285A (zh) * 2010-11-03 2011-03-16 华为技术有限公司 虚拟机存储空间管理方法、***及物理主机
US20110083132A1 (en) * 2009-10-02 2011-04-07 Dor Laor Mechanism for Prioritized Scheduling of Virtual Machines
CN102053858A (zh) * 2010-12-28 2011-05-11 华中科技大学 一种虚拟cpu调度方法

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101504620A (zh) * 2009-03-03 2009-08-12 华为技术有限公司 一种虚拟化集群***负载平衡方法、装置及***
US20100312982A1 (en) * 2009-06-04 2010-12-09 Hitachi, Ltd. Storage management command control in virtualized environment
CN101620573A (zh) * 2009-07-03 2010-01-06 中国人民解放军国防科学技术大学 X86体系结构内存管理单元虚拟化方法
US20110083132A1 (en) * 2009-10-02 2011-04-07 Dor Laor Mechanism for Prioritized Scheduling of Virtual Machines
CN101706742A (zh) * 2009-11-20 2010-05-12 北京航空航天大学 一种基于多核动态划分的非对称虚拟机i/o调度方法
CN101916207A (zh) * 2010-08-28 2010-12-15 华为技术有限公司 桌面虚拟化环境下的节能方法、装置及***
CN101986285A (zh) * 2010-11-03 2011-03-16 华为技术有限公司 虚拟机存储空间管理方法、***及物理主机
CN102053858A (zh) * 2010-12-28 2011-05-11 华中科技大学 一种虚拟cpu调度方法

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
HAI JIN等: "ChinaV: Building Virtualized Computing System", 《PROCEEDING OF 10TH IEEE INTERNATIONAL CONFERENCE ON HIGH PERFORMANCE COMPUTING AND COMMUNICATIONS》, 3 October 2008 (2008-10-03) *
王凌飞等: "Java虚拟机内存管理分析", 《现代电子技术》, 31 May 2007 (2007-05-31) *
郭晓琼: "虚拟机Xen及其内存管理研究", 《中国优秀硕士学位论文全文数据库》, 15 July 2008 (2008-07-15) *

Cited By (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103309698A (zh) * 2012-03-16 2013-09-18 鸿富锦精密工业(深圳)有限公司 虚拟机内存管理***及方法
CN102681792A (zh) * 2012-04-16 2012-09-19 华中科技大学 一种固态盘内存分区方法
CN102681792B (zh) * 2012-04-16 2015-03-04 华中科技大学 一种固态盘内存分区方法
CN103092678B (zh) * 2013-01-22 2016-01-13 华中科技大学 一种多增量虚拟机内存管理***和方法
CN103092678A (zh) * 2013-01-22 2013-05-08 华中科技大学 一种多增量虚拟机内存管理***和方法
CN103176832B (zh) * 2013-02-07 2016-04-27 宝龙计算机***(湖南)有限公司 一种类unix操作***运行虚拟操作***的方法及装置
CN103365700A (zh) * 2013-06-28 2013-10-23 福建师范大学 一种面向云计算虚拟化环境的资源监测和调整***
CN103365700B (zh) * 2013-06-28 2016-01-06 福建师范大学 一种面向云计算虚拟化环境的资源监测和调整***
CN103324516A (zh) * 2013-07-04 2013-09-25 曙光信息产业(北京)有限公司 基于虚拟化驱动的硬件管理方法和装置
CN103324516B (zh) * 2013-07-04 2017-02-08 曙光信息产业(北京)有限公司 基于虚拟化驱动的硬件管理方法和装置
CN103605613A (zh) * 2013-11-21 2014-02-26 中标软件有限公司 云计算环境中动态调整虚拟机内存的方法及***
CN103605613B (zh) * 2013-11-21 2016-09-21 中标软件有限公司 云计算环境中动态调整虚拟机内存的方法及***
CN104978233A (zh) * 2014-04-11 2015-10-14 郑建锋 动态使用内存的方法与装置
CN105320559A (zh) * 2014-07-30 2016-02-10 ***通信集团广东有限公司 一种云计算***的调度方法和装置
CN105320559B (zh) * 2014-07-30 2019-02-19 ***通信集团广东有限公司 一种云计算***的调度方法和装置
CN105162667A (zh) * 2015-09-10 2015-12-16 华为技术有限公司 虚拟机配置方法和装置
CN105162667B (zh) * 2015-09-10 2018-08-14 华为技术有限公司 虚拟机配置方法和装置
CN106708596A (zh) * 2015-11-13 2017-05-24 华为技术有限公司 一种输入输出虚拟化资源的调整方法及处理器
CN106708596B (zh) * 2015-11-13 2020-02-14 华为技术有限公司 一种输入输出虚拟化资源的调整方法及处理器
US10719342B2 (en) 2015-11-25 2020-07-21 International Business Machines Corporation Provisioning based on workload displacement
US10725805B2 (en) 2015-11-25 2020-07-28 International Business Machines Corporation Provisioning based on workload displacement
CN105511940B (zh) * 2015-11-30 2019-02-01 云宏信息科技股份有限公司 一种Xen虚拟化中授权虚拟机访问Xenstore的方法及***
CN105511940A (zh) * 2015-11-30 2016-04-20 广州云宏信息科技股份有限公司 一种Xen虚拟化中授权虚拟机访问Xenstore的方法及***
CN105740050B (zh) * 2016-01-28 2019-03-05 华中科技大学 一种虚拟化环境下信任传递方法
CN105740050A (zh) * 2016-01-28 2016-07-06 华中科技大学 一种虚拟化环境下信任传递方法
CN107783812B (zh) * 2016-08-24 2022-03-08 阿里巴巴集团控股有限公司 虚拟机内存管理方法及装置
CN107783812A (zh) * 2016-08-24 2018-03-09 阿里巴巴集团控股有限公司 虚拟机内存管理方法及装置
CN107391227A (zh) * 2017-07-20 2017-11-24 郑州云海信息技术有限公司 一种内存管理方法及装置
CN107506286A (zh) * 2017-09-26 2017-12-22 郑州云海信息技术有限公司 Cpu和内存块的自动上下线方法和***
CN110633130A (zh) * 2019-08-29 2019-12-31 上海仪电(集团)有限公司中央研究院 一种基于内存热插拔技术的虚拟内存管理方法和装置
CN110580194A (zh) * 2019-08-29 2019-12-17 上海仪电(集团)有限公司中央研究院 基于内存热插拔技术的容器调度方法及管理节点调度器
CN110580195A (zh) * 2019-08-29 2019-12-17 上海仪电(集团)有限公司中央研究院 一种基于内存热插拔的内存分配方法和装置
CN110633130B (zh) * 2019-08-29 2023-10-31 上海仪电(集团)有限公司中央研究院 一种基于内存热插拔技术的虚拟内存管理方法和装置
CN110580195B (zh) * 2019-08-29 2023-11-07 上海仪电(集团)有限公司中央研究院 一种基于内存热插拔的内存分配方法和装置
CN111752674A (zh) * 2020-05-20 2020-10-09 上海仪电(集团)有限公司中央研究院 Linux***环境中的技术架构、内存分配方法、设备及介质
CN111752674B (zh) * 2020-05-20 2023-08-01 上海仪电(集团)有限公司中央研究院 Linux***环境中的技术架构、内存分配方法、设备及介质
CN114237831A (zh) * 2022-02-25 2022-03-25 阿里巴巴(中国)有限公司 虚拟中央处理器热插拔方法、物理主机和存储介质
CN115543862A (zh) * 2022-09-27 2022-12-30 超聚变数字技术有限公司 内存管理方法及相关装置
CN115543862B (zh) * 2022-09-27 2023-09-01 超聚变数字技术有限公司 内存管理方法及相关装置

Also Published As

Publication number Publication date
CN102222014B (zh) 2013-05-22

Similar Documents

Publication Publication Date Title
CN102222014B (zh) 基于内存热插拔的虚拟机动态内存管理方法
US20080320203A1 (en) Memory Management in a Computing Device
US7996690B2 (en) System and method for dynamic utilization-based power allocation in a modular information handling system
US7721052B2 (en) System and method of reducing power consumption of a main memory
US8810584B2 (en) Smart power management in graphics processing unit (GPU) based cluster computing during predictably occurring idle time
CN101346701A (zh) 降低正在被供电的存储体的数量
CN103365700A (zh) 一种面向云计算虚拟化环境的资源监测和调整***
CN112825042A (zh) 资源管理方法和装置、电子设备及存储介质
CN103218305A (zh) 存储空间的分配方法
TW202145010A (zh) 數據儲存方法、電子設備及儲存媒體
CN103365784A (zh) 内存回收与分配的方法及装置
ITRM20110433A1 (it) Sistema per il risparmio di energia nei data center aziendali.
US10185384B2 (en) Reducing power by vacating subsets of CPUs and memory
CN104978233A (zh) 动态使用内存的方法与装置
CN107479949A (zh) 低能耗云计算任务调度方法
Xilong et al. An energy-efficient virtual machine scheduler based on CPU share-reclaiming policy
US8341638B2 (en) Delegated virtualization across physical partitions of a multi-core processor (MCP)
US10180793B2 (en) Performance attributes for memory
US20240086086A1 (en) Ssd performance per power state improvement by deterministic utilization control
CN104111892A (zh) 内存动态分配方法及***
CN115640098A (zh) 一种虚拟机异构内存池化方法和***
US8775840B2 (en) Virtualization in a multi-core processor (MCP)
US8438404B2 (en) Main processing element for delegating virtualized control threads controlling clock speed and power consumption to groups of sub-processing elements in a system such that a group of sub-processing elements can be designated as pseudo main processing element
CN113742059A (zh) 任务分配方法、装置、计算机设备和存储介质
Ding et al. Review of virtual memory optimization in cloud environment

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20130522

Termination date: 20200616