CN102141931A - 一种创建虚拟机的方法、虚拟机监控器及虚拟机系统 - Google Patents

一种创建虚拟机的方法、虚拟机监控器及虚拟机系统 Download PDF

Info

Publication number
CN102141931A
CN102141931A CN2011100617385A CN201110061738A CN102141931A CN 102141931 A CN102141931 A CN 102141931A CN 2011100617385 A CN2011100617385 A CN 2011100617385A CN 201110061738 A CN201110061738 A CN 201110061738A CN 102141931 A CN102141931 A CN 102141931A
Authority
CN
China
Prior art keywords
page
virtual machine
memory
gfn
physical memory
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
CN2011100617385A
Other languages
English (en)
Other versions
CN102141931B (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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN201110061738.5A priority Critical patent/CN102141931B/zh
Publication of CN102141931A publication Critical patent/CN102141931A/zh
Priority to PCT/CN2011/080573 priority patent/WO2012122796A1/zh
Priority to ES11799061.4T priority patent/ES2581597T3/es
Priority to EP11799061.4A priority patent/EP2581828B1/en
Priority to US13/339,862 priority patent/US9183157B2/en
Application granted granted Critical
Publication of CN102141931B publication Critical patent/CN102141931B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本发明实施例提供了一种创建虚拟机的方法、虚拟机监控器及虚拟机系统,该方法包括:将虚拟机的伪物理内存对应的客户机页框号GFN映射到一共享零页,所述共享零页为物理内存中页面内容全为零的页;当所述虚拟机写所述GFN时,如果产生页面异常则分配物理内存页以解除所述客户机页框号GFN与所述共享零页的映射关系,并建立所述客户机页框号GFN与所述物理内存页的机器页框号MFN的映射关系。该方法可以减少虚拟机启动过程中的内存使用量,提高虚拟机密度,支持并发启动Memory Overcommitted数量的虚拟机。

Description

一种创建虚拟机的方法、虚拟机监控器及虚拟机系统
技术领域
本发明涉及虚拟机技术,具体地涉及一种创建虚拟机的方法、虚拟机监控器及虚拟机系统。
背景技术
虚拟化技术是一种将底层硬件设备与上层操作系统、应用程序分离的去耦合方法,其引入虚拟机监控器(Virtual Machine Monitor,VMM)层来直接管理底层硬件资源,并创建与底层硬件无关的虚拟机(Virtual Machine,VM)供上层操作系统和应用程序使用。虚拟化技术作为当前流行的云计算(Cloud Computing)平台的底层重要支撑技术之一,可以大大提高物理设备的资源使用效率。如图1所示,经过系统虚拟化后,一台物理机器上可以同时运行多个虚拟机VM,物理机器上支持同时运行的虚拟机数量称为虚拟机密度(Virtual Machine Density),虚拟机密度越大,资源利用率越高。
为提高虚拟机密度,CPU虚拟化时采用调度的方式使得虚拟机的虚拟处理器可以共享物理CPU,如果不考虑性能,理论上可以虚拟出任意多个虚拟CPU。外设虚拟化通过软件模拟或连接到外部子系统,例如SAN(存储域网络,Storage AreaNetwork),同样可以虚拟出任意多份。但在内存虚拟化方面,将同一个物理内存页给多个虚拟机同时使用的前提是虚拟机之间具有页面内容完全相同的页,因此虚拟内存量理论上不能超过物理内存量。为使虚拟内存量大于物理内存量的限制,业界提出了Memory Overcommitted(虚拟内存量大于物理内存)方法,该方法包括:气球驱动(Balloon Driver)、基于页内容的内存页共享(Content Based Page Sharing,CBPS)、内存页交换(Memory Page Swap)、内存页压缩(Memory Page Compression)和Populate on Demand(PoD)等。
气球驱动(Balloon Driver)安装在客户机操作系统(Guest Operating System,GOS)内部,并诱导GOS释放或分配内存,气球驱动将相应的内存收回或分配给GOS,从而实现自动伸缩内存调节。
基于页内容的内存页共享CBPS方法是扫描全局物理页,发现页内容相同的页就共享,从而释放冗余页,减少虚拟机的物理内存使用量。
内存页交换(Memory Page Swap)或内存页压缩方法(Memory Page Compression)选择虚拟机的若干页交换到磁盘等外部设备上,或无损压缩成1/n页大小,从而释放出内存给更多的虚拟机使用。
PoD方法为每个虚拟机分配指定数量的内存页作为内存池(Memory Pool),刚启动的时候虚拟机的虚拟内存都是空的,没有对应到物理内存页,只有当虚拟内存真正被访问的时候才从内存池中拿出物理页。
发明人在实现本发明的过程中发现,现有技术至少存在以下不足:
以上技术都没有考虑虚拟机创建后并启动GOS这个过程当中内存使用情况,而是先将虚拟机需要的内存全部分配给虚拟机,然后再回收部分内存,这使得物理机器能并发启动虚拟机的数量受到物理内存量的限制,从而降低了虚拟机密度。
发明内容
本发明实施例的目的在于,提供一种创建虚拟机的方法、虚拟机监控器及虚拟机系统。
一方面,本发明实施例提供了一种创建虚拟机的方法,所述方法包括:将虚拟机的伪物理内存(Pseudo-physical Memory)对应的客户机页框号GFN映射到一共享零页,所述共享零页为物理内存中页面内容全为零的页;当所述虚拟机写所述GFN时,如果产生页面异常则分配物理内存页以解除所述客户机页框号GFN与所述共享零页的映射关系,并建立所述客户机页框号GFN与物理内存页的机器页框号MFN的映射关系。
另一方面,本发明实施例提供了一种虚拟机监控器,所述虚拟机监控器包括:初始化虚拟内存单元,用于将虚拟机的伪物理内存对应的客户机页框号GFN映射到一共享零页,所述共享零页为物理内存中页面内容全为零的页;写时拷贝单元,用于当所述虚拟机写所述GFN时,如果产生页面异常则分配物理内存页以解除所述客户机页框号GFN与所述共享零页的映射关系,并建立所述客户机页框号GFN与所述物理内存页的机器页框号MFN的映射关系。
又一方面,本发明实施例提供了一种虚拟机系统,所述系统包括:虚拟机监控器和虚拟机;其中,所述虚拟机监控器,用于将虚拟机的伪物理内存对应的客户机页框号GFN映射到一共享零页,所述共享零页为物理内存中页面内容全为零的页;当所述虚拟机写所述GFN时,如果产生页面异常则分配物理内存页以解除所述客户机页框号GFN与所述共享零页的映射关系,并建立所述客户机页框号GFN与物理内存页的机器页框号MFN的映射关系。
本发明实施例提供的上述技术方案,虚拟机监控器通过将虚拟机的伪物理内存映射到共享零页的方式初始化虚拟内存,使得创建虚拟机不需要消耗物理内存;当虚拟化开始使用虚拟内存时,虚拟机监控器通过写时拷贝分配物理内存给虚拟机并解除到共享零页的映射关系,从而可以减少虚拟机启动过程中的内存使用量,提高虚拟机密度。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图做一简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为现有技术的虚拟机架构示意图;
图2为本发明实施例一的系统及实施例二的装置的结构示意图;
图3是本发明实施例三的一种创建虚拟机的方法的流程图;
图4为本发明实施例四的一种创建虚拟机的方法的流程图;
图5为本发明实施例五的一种创建虚拟机的方法的流程图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例一:
图2为本发明实施例的虚拟机系统的体系架构示意图。如图2所示,该系统包括:虚拟机监控器和虚拟机;其中,
该虚拟机监控器,用于将虚拟机的伪物理内存对应的客户机页框号GFN映射到一共享零页,所述共享零页为物理内存中页面内容全为零的页;当所述虚拟机写所述GFN时,如果产生页面异常则分配物理内存页以解除所述客户机页框号GFN与所述共享零页的映射关系,并建立所述客户机页框号GFN与所述物理内存页的机器页框号MFN的映射关系。
进一步地,该虚拟机监控器,还可以用于在为所述虚拟机分配了物理内存页后,更新所述虚拟机的内存使用增量;当所述内存使用增量达到预设的阈值时,对虚拟机启动过程中分配的物理内存页进行扫描,将搜索到的内容为零的内存页释放或加入至内存池中,并将GFN重新映射到共享零页上,在扫描完成后将内存使用增量置零。
再请参阅图2,以下进行更为详细的说明:
硬件层:作为虚拟化环境运行的整个硬件平台,具体可以包括处理器CPU、内存Memory、网卡(NIC,Network Interface Card)、外部存储设备等高速I/O设备和基本输入输出等低速设备。
宿主机Host或者虚拟机监控器VMM:虚拟机监控器(VMM)作为一个管理层,其主要功能包括:完成硬件资源的管理、分配;为虚拟机呈现一个虚拟硬件平台;以及执行虚拟机的调度和隔离。可选地,有些VMM的实现里面需要一个特权虚拟机配合,两者结合组成宿主机。虚拟硬件平台对其上的虚拟机提供各种硬件资源,如虚拟处理器VCPU、虚拟内存、虚拟磁盘、虚拟网卡等。其中虚拟内存对于VM而言,是一个隔离的、从零开始且具有连续性的伪物理内存空间,VMM为每个VM建立一个P2M表以将GFN转换成MFN(Machine Frame Number,机器页框号),从而使虚拟内存离散分布在物理内存中。
一个或多个虚拟机VM:虚拟机运行宿主机为其准备的虚拟平台中。大多数时间虚拟机的执行不受宿主机的影响。
较佳地,GFN到MFN的映射由p2m表记录。如图2中的p2m表所示,p2m表由p2m表项组成,p2m表项中记录了mfn。把gfn作为索引,能找到唯一一个p2m表项,从而找到mfn。假设共享零页的mfn等于m1,那么在虚拟机创建阶段,host/vmm用虚拟机伪物理内存对应的全部GFN去索引该虚拟机对应的p2m表,在每个GFN索引到的p2m项中MFN的位置填入m1;假设虚拟机创建完成后,开始写内存,该内存所在的GFN为g2,且产生页面异常,host/vmm开始处理该异常,并分配一页物理内存,假设该物理内存的MFN等于m2,host/vmm将m2内存页清零后把m2填入g2索引p2m表得到的表项,从而解除g2到共享零页的映射;在零页扫描阶段,假设host/vmm发现虚拟机伪物理内存的GFN为g3对应的MFN内存页m3是零页,host/vmm把g3索引p2m表得到的表项中填入m1,使其重新映射到共享零页上,最后host/vmm回收m3,使其成为空闲内存页。
可选地,该虚拟机监控器还可以用于在为所述虚拟机分配了物理内存页后,更新所述虚拟机的内存使用增量;当内存使用增量达到预设的阈值时,对虚拟机启动过程中分配的物理内存页进行扫描,将搜索到的内容为零的内存页释放或加入至内存池中,并将GFN重新映射到共享零页上,在扫描完成后将内存使用增量置零。本发明实施例是实时扫描虚拟机启动过程中使用的内存页,而不是全局扫描,从而可以提高扫描效率低,降低扫描间隔。其中,释放表示host/vmm回收一页内存,使其成为空闲内存。需要说明的是,虚拟机的内存使用增量是一个计数值,用来表示距离上一次零页扫描以来,虚拟机由于写内存而解除原本映射到共享零页上的GFN的数量;如果这个计数值超过了阈值,那么就启动新的一次零页扫描,扫描结束后将计数值置零,即把内存使用增量置零,开始下一轮计数。也就是说内存使用增量就是零页扫描间隔内解除映射到共享零页上的GFN的数量。
本发明实施例的系统,可以减少虚拟机启动过程中的内存使用量,提高虚拟机密度,支持并发启动Memory Overcommitted数量的虚拟机,并使虚拟机启动过程当中内存使用量单调递增。
实施例二:
本发明实施例二提供了一种虚拟机监控器VMM。请继续参阅图2,该虚拟机监控器包括:
初始化虚拟内存单元210,用于将虚拟机的伪物理内存对应的客户机页框号GFN映射到一共享零页,该共享零页为物理内存中页面内容全为零的页;
写时拷贝单元220,用于当上述虚拟机写所述GFN时,如果产生页面异常则分配物理内存页以解除所述客户机页框号GFN与所述共享零页的映射关系,并建立所述客户机页框号GFN与物理内存页的机器页框号MFN的映射关系。
具体地,初始化虚拟内存单元210,具体用于在虚拟机伪物理地址到机器物理地址的映射关系P2M表中,将所述虚拟机的伪物理内存对应的全部GFN都索引至所述共享零页的机器页框号MFN。
具体地,写时拷贝单元220,具体用于在虚拟机伪物理地址到机器物理地址的映射关系P2M表中,将所述客户机页框号GFN索引至所述物理内存页的机器页框号MFN。
具体地,初始化虚拟内存单元210,用于将VM的所有GFN都映射到VMM分配的共享零页上。该初始化虚拟内存单元210在创建虚拟机时被VMM调用。
由于VM的GFN到该共享零页的映射是只读映射,所以当VM写映射到共享零页的GFN时会产生异常,VMM捕获该异常并调用写时拷贝Copy on Write单元。写时拷贝Copy on Write单元220具有以下功能:首先分配一块物理内存页并将这页清零;接着解除产生异常的GFN到共享零页的映射关系;最后将产生异常的GFN重新映射到上述分配的物理内存页对应的MFN上。写时拷贝单元,还用于判断内存池中是否包含零页,如是,则从所述内存池中获取零页并分配给虚拟机。
在一较佳实施例中,如图2所示,该虚拟机监控器还进一步包括:阈值控制单元230和零页扫描单元240;该阈值控制单元230,用于判断已分配的物理内存页的数量是否达到预设的阈值,如是,则启动该零页扫描单元;该零页扫描单元240,用于对上述已分配的物理内存页进行扫描,并释放扫描到的的零页或者将扫描到的零页放入内存池中
具体地,阈值控制单元230,与写时拷贝单元220连接,随着VM不断地写映射到共享零页的GFN,VM占用的物理内存页也在不断增加,因此阈值控制单元230的功能包括:判断VM增加的内存页数量是否超过预设的阈值,如果VM增加的内存页数量超过预设的阈值,则启动零页扫描单元,例如当VM使用的内存量超过4096页时启动零页扫描单元。
零页扫描单元240,与阈值控制单元230连接,在VM启动阶段中GOS大量写内存操作是往内存页中写零,所以零页扫描单元240的功能包括:对VM触发写异常后调用写时拷贝单元为虚拟机分配的物理内存页进行扫描,以搜索到上述分配的物理内存页中内面内容全为零的页,将内容为全零的内存页对应的GFN重新映射共享零页上,并释放该GFN之前映射的物理内存页。
写时拷贝单元220,还可进一步用于判断内存池中是否包含零页,如是,则从该内存池中获取零页并分配给虚拟机,如否,则从空闲内存中分配页给虚拟机。
本发明实施例的虚拟机监控器,可以减少虚拟机启动过程中的内存使用量,提高虚拟机密度,支持并发启动Memory Overcommitted数量的虚拟机,并使虚拟机启动过程当中内存使用量单调递增。如果虚拟机的内存使用量是单调递增的,那么可以确定某个时刻所有虚拟机使用的内存总量不会超过某个值,这样可以减少Memory Overcommitted失效。如果虚拟机的内存使用量与时间轴形成的是带有波峰波谷的曲线,那么无法确定到底最多能同时启动多少台虚拟机。如果虚拟机的内存使用量与时间轴形成的是与时间轴平行的直线,那么能够启动虚拟机的数量受到理内存大小的限制。
实施例三:
本发明实施例三提供了一种创建虚拟机的方法,图3是本发明实施例3的一种创建虚拟机的方法的整体流程图,如图3所示,该方法包括:
步骤310、将虚拟机的伪物理内存对应的客户机页框号GFN映射到共享零页,所述共享零页为物理内存中页面内容全为零的页;
步骤320、当所述虚拟机写所述GFN时,如果产生页面异常则分配物理内存页以解除所述客户机页框号GFN与所述共享零页的映射关系,并建立所述客户机页框号GFN与所述物理内存页的机器页框号MFN的映射关系。
具体地,步骤310中将所述虚拟机的伪物理内存对应的客户机页框号GFN都映射到一共享零页可以包括如下过程:在虚拟机伪物理地址到机器物理地址的映射关系P2M表中,将所述虚拟机的伪物理内存对应的全部GFN都索引至所述共享零页的机器页框号MFN。
具体地,步骤320中建立所述客户机页框号GFN与所述物理内存页的机器页框号MFN的映射关系可以包括如下过程:在虚拟机伪物理地址到机器物理地址的映射关系P2M表中,将所述客户机页框号MFN索引至所述物理内存页的机器页框号MFN。
较佳地,在步骤320中分配物理内存页后,图3所示方法还可以包括步骤:判断已分配的物理内存页的数量是否达到预设的阈值,如是,则对所述已分配的物理内存页进行扫描,并释放扫描到的零页或者将扫描到的零页放入内存池中。
较佳地,在步骤320中分配物理内存页的具体过程还可以包括:判断内存池中是否包含零页,如是,则从所述内存池中获取零页并分配给虚拟机,如否,则从空闲内存中分配页给虚拟机。
本发明实施例三的方法,可以减少虚拟机启动过程中的内存使用量,提高虚拟机密度,支持并发启动Memory Overcommitted数量的虚拟机,并使虚拟机启动过程当中内存使用量单调递增。
以下通过实施例四和实施例五,对实施例三的方法进行更为详细的说明。
实施例四:
虚拟机启动可以分为两个过程:第一,在虚拟机创建阶段,创建虚拟机并分配必要的资源,VMM为了安全起见,分配给虚拟机的内存是经过清零的;第二,启动Guest OS(客户操作系统,GOS)的阶段,GOS对内存的使用包括两部分,即用于存放内核代码及数据的内存和空闲内存,GOS为了安全起见会对空闲内存做清零工作。从前述分析可以看出,在现有Memory Overcommitted方法中,要么没有考虑虚拟机启动这种场景,要么没有考虑虚拟机启动过程中Guest OS对内存的使用。
在本发明实施例中,充分考虑了上述两种场景,首先,在创建虚拟机时将客户机内存页全部共享映射到一张内容为零的机器物理页,即共享零页上,接着,在虚拟机写GFN(GuestFrameNumber,客户机页框号)时产生异常并用CoW(Copy on Write,写时拷贝)机制解除共享,并记录虚拟机的内存使用增量,当内存使用增量超过预设的阈值时,启用零页扫描,搜索到内容为零的空闲页,将内容为零的页释放并将GFN重新映射到共享零页上,通过上述方法可减少虚拟机启动时内存使用量。
图4为本发明实施例四的方法流程图。结合参阅图2和图4,该流程包括如下步骤:
步骤10、创建VM;
步骤11、将所有GFN都映射到共享零页;零页是指VM的数据全为零的内存页;VM中的零页是冗余的,在整个系统中,零页只需要一份就行,因此本发明实施例将VM中的原本是零页的GFN都共享映射到这一份零页上,这份给VM共享的零页叫共享零页。
步骤12、启动客户操作系统Guest OS;
具体地,在步骤10-12中,创建虚拟机并启动Guest OS,在创建虚拟内存时并不给虚拟机分配任何物理内存资源,而是由初始化虚拟内存单元将VM的所有GFN都映射到VMM分配的共享零页上。尽管此时VM没有物理内存资源,但是VM通过P2M表仍然能获知全额并且内容都为零的虚拟内存,所以Guest OS仍能够启动。
步骤20、VM写GFN;
步骤21、判断是否产生页面异常PageFault,如是,则转入步骤22a,如否,则转入步骤22b;
步骤22a、CoW单元申请物理内存页,更新P2M表,并使内存使用增量加1;更新P2M表是指:解除所访问的GFN与共享零页的映射关系,并将所访问的GFN映射至申请的物理内存页;
步骤22b、VM访问已经申请的页;
具体地,在步骤20、步骤21和步骤22a中,VM开始使用虚拟内存,使用内存操作包括读内存和写内存。如果是写内存操作并且所访问的GFN是映射到共享零页上的,则处理器将产生页面异常PageFault。VMM开始处理这个异常,VMM调用CoW单元解除所访问的GFN到共享零页的映射关系,CoW单元再将所访问的GFN重新映射到一个新分配的且页内容为全零的MFN上,在这种情况下,VMM还更新VM的内存使用增量计数,将这个计数值加1。其中解除映射关系及重新映射是由CoW单元完成。在步骤20、步骤21和步骤22b中,如果VM写的GFN不是映射到共享零页上,则不会产生PageFault异常,VM正常使用内存。
步骤30、判断VM的内存使用增量是否小于预设的阈值,如是,则转入步骤20,如否,则转入步骤40;
步骤40、扫描零页,并将内存使用增量置零;
步骤41、释放零页。
具体地,在CoW单元写成申请物理内存页、解除及重新建立映射关系之后,阈值控制单元,根据内存使用增量与预设的阈值之间的关系判断是否需要启动零页扫描单元。如果不需要启动零页扫描单元,则VMM从异常处理流程中退出,返回到VM中,VM继续运行,如图4中步骤30和步骤20所示;
如果内存增量已经超过阈值,则启动零页扫描单元,阈值的大小可以由虚拟配置文件制定,也可以是VMM设定的默认值,例如32MB。
在步骤40中,如果需要进行零页扫描,则零页扫描单元开始扫描已经分配给VM的物理内存,把内容为全零的页对应的GFN重新映射到共享零页上,并释放这些内容为零的物理页且将内存增量置为0。扫描零页是指:找到VM的内存页中内容为全零的页。扫描VM的物理页时,可以扫描VM当前拥有的全部物理页,也可以只扫描增量内存。如果只扫描增量内存则需要步骤22a完成后记录相应的MFN,也即VM新增的物理页对应的MFN,记录的数据结构可以是二进制位图(Bitmap)或是链表等数据结构。这一步完成后从异常处理流程中退出,返回到VM中,VM继续运行。图4中的流程运行直到阈值控制单元单元收到启动完成通知消息,这个消息的发送者可以是VMM本身、特权域或者VM的前端驱动。
本发明实施例四的方法,可以减少虚拟机启动过程中的内存使用量,提高虚拟机密度,支持并发启动Memory Overcommitted数量的虚拟机,并使虚拟机启动过程当中内存使用量单调递增。
实施例五:
实施例四的流程中,零页扫描单元将零页重新映射到共享零页上后,直接释放物理内存页,而CoW单元每次都重新申请一块物理内存页,因此为提高性能,实施例五中将零页扫描单元发现的零页先放入一个内存池,CoW单元申请内存页时先从该内存池中获取,如果内存已经为空再由VMM分配物理页。通过本发明实施例五,可以减少本发明实现流程中的反复先申请后释放的操作,从而提高效率。
本发明实施例五图5的具体流程与本发明实施例四图4类似,不同之处在于:
第一,图4中步骤22a在图5中对应于以下两种情况:
一种情况,如图5中步骤120、步骤121b和步骤123所示,当内存池不为空的时候,VMM在为GFN重新分配页时从内存池中取出一页,并把GFN映射到该页对应的MFN上,接着将内存使用增量加一。
另一种情况,当内存池为空时,执行图5中的步骤120、步骤121a、步骤122和步骤123,完成与图4中22a一样的操作,即VMM重新分配一块物理内存页并清零,然后把GFN映射到该物理内存页对应的MFN上,最后将内存使用增量加一。
第二,图4中的步骤41变为图5中的步骤141。当零页扫描单元发现内容为零的页后将该页的GFN映射到共享零页上,并把扫描到的零页放入内存池中。
零页扫描单元扫描到的零页GFN重新映射到共享零页后,将GFN之前对应得MFN被放入了内存池,而CoW单元申请内存时又从内存池中取页,因此可以不要释放零页这个步骤,相应地把释放零页这个步骤换成了将零页加入内存池的步骤。从而有利于减少重复的申请内存池和释放内存。
根据图5流程可知,内存池的大小不会超过增量阈值,因此内存可以用数组或链表等线性表数据结构表示。这种线性表适用简单且效率高。
本发明实施例的有益效果:1、节省虚拟机启动过程中的内存使用量;2、支持并发启动Memory Overcommitted数量的虚拟机;这里强调的是并发数量,因为通过本发明实施例的方法能使VM尽量少的占用内存,并且VM的内存使用量是单调递增的,因此能够增加并发启动VM的数量3、虚拟机启动过程当中内存使用量单调递增;4、提高了虚拟机密度;5、该方法可以应用于小型机虚拟化和聚合虚拟化等虚拟化领域。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此本发明的保护范围应该以权利要求的保护范围为准。

Claims (12)

1.一种创建虚拟机的方法,其特征在于,所述方法包括:
将虚拟机的伪物理内存对应的客户机页框号GFN映射到共享零页,所述共享零页为物理内存中页面内容全为零的页;
当所述虚拟机写所述GFN时,如果产生页面异常则分配物理内存页以解除所述客户机页框号GFN与所述共享零页的映射关系,并建立所述客户机页框号GFN与所述物理内存页的机器页框号MFN的映射关系。
2.根据权利要求1所述的方法,其特征在于,将所述虚拟机的伪物理内存对应的客户机页框号GFN映射到一共享零页包括:
在虚拟机伪物理地址到机器物理地址的映射关系P2M表中,将所述虚拟机的伪物理内存对应的全部GFN都索引至所述共享零页的机器页框号MFN。
3.根据权利要求1所述的方法,其特征在于,建立所述客户机页框号GFN与所述物理内存页的机器页框号MFN的映射关系包括:
在虚拟机伪物理地址到机器物理地址的映射关系P2M表中,将所述客户机页框号GFN索引至所述物理内存页的机器页框号MFN。
4.根据权利要求1所述的方法,其特征在于,在分配物理内存页后,所述方法还包括:
判断已分配的物理内存页的数量是否达到预设的阈值,如是,则对所述已分配的物理内存页进行扫描,并释放扫描到的零页或者将扫描到的零页放入内存池中。
5.根据权利要求1所述的方法,其特征在于,所述分配物理内存页包括:
判断内存池中是否包含零页,如是,则从所述内存池中获取零页并分配给虚拟机,如否,则从空闲内存中分配页给虚拟机。
6.一种虚拟机监控器,其特征在于,所述虚拟机监控器包括:
初始化虚拟内存单元,用于将虚拟机的伪物理内存对应的客户机页框号GFN映射到一共享零页,所述共享零页为物理内存中页面内容全为零的页;
写时拷贝单元,用于当所述虚拟机写所述GFN时,如果产生页面异常则分配物理内存页以解除所述客户机页框号GFN与所述共享零页的映射关系,并建立所述客户机页框号GFN与所述物理内存页的机器页框号MFN的映射关系。
7.根据权利要求6所述的虚拟机监控器,其特征在于,所述初始化虚拟内存单元,具体用于在虚拟机伪物理地址到机器物理地址的映射关系P2M表中,将所述虚拟机的伪物理内存对应的全部GFN都索引至所述共享零页的机器页框号MFN。
8.根据权利要求6所述的虚拟机监控器,其特征在于,所述写时拷贝单元,具体用于在虚拟机伪物理地址到机器物理地址的映射关系P2M表中,将所述客户机页框号GFN索引至所述物理内存页的机器页框号MFN。
9.根据权利要求6所述的虚拟机监控器,其特征在于,所述虚拟机监控器还包括:阈值控制单元和零页扫描单元;
所述阈值控制单元,用于判断已分配的物理内存页的数量是否达到预设的阈值,如是,则启动所述零页扫描单元;
所述零页扫描单元,用于对所述已分配的物理内存页进行扫描,并释放扫描到的零页或者将扫描到的零页放入内存池中。
10.根据权利要求6所述的虚拟机监控器,其特征在于,所述写时拷贝单元,还用于判断内存池中是否包含零页,如是,则从所述内存池中获取零页并分配给虚拟机,如否,则从空闲内存中分配页给虚拟机。
11.一种虚拟机系统,其特征在于,所述系统包括:虚拟机监控器和虚拟机;
所述虚拟机监控器,用于将虚拟机的伪物理内存对应的客户机页框号GFN映射到一共享零页,所述共享零页为物理内存中页面内容全为零的页;当所述虚拟机写所述GFN时,如果产生页面异常则分配物理内存页以解除所述客户机页框号GFN与所述共享零页的映射关系,并建立所述客户机页框号GFN与所述物理内存页的机器页框号MFN的映射关系。
12.根据权利要求11所述的虚拟机系统,其特征在于,所述虚拟机监控器,还用于在为所述虚拟机分配了物理内存页后,更新所述虚拟机的内存使用增量;当所述内存使用增量达到预设的阈值时,对虚拟机启动过程中分配的物理内存页进行扫描,将搜索到的内容为零的内存页释放或加入至内存池中,并将GFN重新映射到共享零页上,在扫描完成后将内存使用增量置零。
CN201110061738.5A 2011-03-15 2011-03-15 一种创建虚拟机的方法、虚拟机监控器及虚拟机系统 Active CN102141931B (zh)

Priority Applications (5)

Application Number Priority Date Filing Date Title
CN201110061738.5A CN102141931B (zh) 2011-03-15 2011-03-15 一种创建虚拟机的方法、虚拟机监控器及虚拟机系统
PCT/CN2011/080573 WO2012122796A1 (zh) 2011-03-15 2011-10-09 一种创建虚拟机的方法、虚拟机监控器及虚拟机系统
ES11799061.4T ES2581597T3 (es) 2011-03-15 2011-10-09 Método para crear una máquina virtual, monitor de máquinas virtuales y sistema de máquinas virtuales
EP11799061.4A EP2581828B1 (en) 2011-03-15 2011-10-09 Method for creating virtual machine, virtual machine monitor and virtual machine system
US13/339,862 US9183157B2 (en) 2011-03-15 2011-12-29 Method for creating virtual machine, a virtual machine monitor, and a virtual machine system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201110061738.5A CN102141931B (zh) 2011-03-15 2011-03-15 一种创建虚拟机的方法、虚拟机监控器及虚拟机系统

Publications (2)

Publication Number Publication Date
CN102141931A true CN102141931A (zh) 2011-08-03
CN102141931B CN102141931B (zh) 2014-06-11

Family

ID=44409470

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201110061738.5A Active CN102141931B (zh) 2011-03-15 2011-03-15 一种创建虚拟机的方法、虚拟机监控器及虚拟机系统

Country Status (4)

Country Link
EP (1) EP2581828B1 (zh)
CN (1) CN102141931B (zh)
ES (1) ES2581597T3 (zh)
WO (1) WO2012122796A1 (zh)

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012122796A1 (zh) * 2011-03-15 2012-09-20 华为技术有限公司 一种创建虚拟机的方法、虚拟机监控器及虚拟机系统
CN102779074A (zh) * 2012-06-18 2012-11-14 中国人民解放军国防科学技术大学 基于内存空洞机制的虚拟机内存资源分配方法
WO2013189343A2 (zh) * 2013-01-31 2013-12-27 中兴通讯股份有限公司 自适应的虚拟机启动控制方法及装置
US9183157B2 (en) 2011-03-15 2015-11-10 Huawei Technologies Co., Ltd. Method for creating virtual machine, a virtual machine monitor, and a virtual machine system
WO2016000298A1 (zh) * 2014-06-30 2016-01-07 中兴通讯股份有限公司 一种系统异常的捕获方法、主系统、影子系统及智能设备
CN107783812A (zh) * 2016-08-24 2018-03-09 阿里巴巴集团控股有限公司 虚拟机内存管理方法及装置
CN107832143A (zh) * 2017-10-17 2018-03-23 北京京东尚科信息技术有限公司 一种物理机资源的处理方法和装置
CN109309584A (zh) * 2018-09-03 2019-02-05 郑州云海信息技术有限公司 一种虚拟机密度配置方法、装置、终端及存储介质
CN110888823A (zh) * 2019-11-26 2020-03-17 深圳忆联信息系统有限公司 页扫描效率的提升方法、装置及计算机设备
CN113900775A (zh) * 2021-12-08 2022-01-07 北京交研智慧科技有限公司 一种边端云计算跨节点虚拟机处理方法及装置

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109426547B (zh) * 2017-09-04 2022-05-17 华为技术有限公司 一种虚拟机的热迁移方法、装置和系统
US20200409576A1 (en) * 2019-06-25 2020-12-31 Intel Corporation Physical page tracking for handling overcommitted memory in a virtualized environment
CN113449292B (zh) * 2020-03-27 2022-07-29 支付宝(杭州)信息技术有限公司 一种可信应用的运行方法、装置及设备
CN113254147B (zh) * 2021-04-29 2024-01-16 中国科学院信息工程研究所 一种基于物理地址陷入的虚拟机行为监控方法及系统

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050235123A1 (en) * 2004-04-19 2005-10-20 Zimmer Vincent J Method to manage memory in a platform with virtual machines
CN101158924A (zh) * 2007-11-27 2008-04-09 北京大学 一种虚拟机管理器的动态内存映射方法
US20080133875A1 (en) * 2006-12-05 2008-06-05 Microsoft Corporation Operational efficiency of virtual TLBs
CN101477492A (zh) * 2009-01-21 2009-07-08 华中科技大学 一种用于固态硬盘的循环重写闪存均衡方法
CN101697134A (zh) * 2009-10-27 2010-04-21 北京大学 一种支持相似虚拟机快速启动的方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7222221B1 (en) * 2004-02-06 2007-05-22 Vmware, Inc. Maintaining coherency of derived data in a computer system
CN102141931B (zh) * 2011-03-15 2014-06-11 华为技术有限公司 一种创建虚拟机的方法、虚拟机监控器及虚拟机系统

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050235123A1 (en) * 2004-04-19 2005-10-20 Zimmer Vincent J Method to manage memory in a platform with virtual machines
US20080133875A1 (en) * 2006-12-05 2008-06-05 Microsoft Corporation Operational efficiency of virtual TLBs
CN101158924A (zh) * 2007-11-27 2008-04-09 北京大学 一种虚拟机管理器的动态内存映射方法
CN101477492A (zh) * 2009-01-21 2009-07-08 华中科技大学 一种用于固态硬盘的循环重写闪存均衡方法
CN101697134A (zh) * 2009-10-27 2010-04-21 北京大学 一种支持相似虚拟机快速启动的方法

Cited By (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9183157B2 (en) 2011-03-15 2015-11-10 Huawei Technologies Co., Ltd. Method for creating virtual machine, a virtual machine monitor, and a virtual machine system
WO2012122796A1 (zh) * 2011-03-15 2012-09-20 华为技术有限公司 一种创建虚拟机的方法、虚拟机监控器及虚拟机系统
CN102779074A (zh) * 2012-06-18 2012-11-14 中国人民解放军国防科学技术大学 基于内存空洞机制的虚拟机内存资源分配方法
CN103970555B (zh) * 2013-01-31 2017-09-12 中兴通讯股份有限公司 自适应的虚拟机启动控制方法及装置
WO2013189343A2 (zh) * 2013-01-31 2013-12-27 中兴通讯股份有限公司 自适应的虚拟机启动控制方法及装置
WO2013189343A3 (zh) * 2013-01-31 2014-02-20 中兴通讯股份有限公司 自适应的虚拟机启动控制方法及装置
CN103970555A (zh) * 2013-01-31 2014-08-06 中兴通讯股份有限公司 自适应的虚拟机启动控制方法及装置
WO2016000298A1 (zh) * 2014-06-30 2016-01-07 中兴通讯股份有限公司 一种系统异常的捕获方法、主系统、影子系统及智能设备
CN107783812A (zh) * 2016-08-24 2018-03-09 阿里巴巴集团控股有限公司 虚拟机内存管理方法及装置
CN107783812B (zh) * 2016-08-24 2022-03-08 阿里巴巴集团控股有限公司 虚拟机内存管理方法及装置
CN107832143A (zh) * 2017-10-17 2018-03-23 北京京东尚科信息技术有限公司 一种物理机资源的处理方法和装置
CN109309584A (zh) * 2018-09-03 2019-02-05 郑州云海信息技术有限公司 一种虚拟机密度配置方法、装置、终端及存储介质
CN110888823A (zh) * 2019-11-26 2020-03-17 深圳忆联信息系统有限公司 页扫描效率的提升方法、装置及计算机设备
CN110888823B (zh) * 2019-11-26 2022-01-21 深圳忆联信息系统有限公司 页扫描效率的提升方法、装置及计算机设备
CN113900775A (zh) * 2021-12-08 2022-01-07 北京交研智慧科技有限公司 一种边端云计算跨节点虚拟机处理方法及装置

Also Published As

Publication number Publication date
EP2581828A4 (en) 2013-09-18
CN102141931B (zh) 2014-06-11
EP2581828A1 (en) 2013-04-17
WO2012122796A1 (zh) 2012-09-20
EP2581828B1 (en) 2016-04-13
ES2581597T3 (es) 2016-09-06

Similar Documents

Publication Publication Date Title
CN102141931B (zh) 一种创建虚拟机的方法、虚拟机监控器及虚拟机系统
US9183157B2 (en) Method for creating virtual machine, a virtual machine monitor, and a virtual machine system
US10908968B2 (en) Instantiating a virtual machine with a virtual non-uniform memory architecture and determining a highest detected NUMA ratio in a datacenter
US10338839B2 (en) Memory system and method for controlling nonvolatile memory
US8082400B1 (en) Partitioning a memory pool among plural computing nodes
US20180157519A1 (en) Consolidation of idle virtual machines
WO2010111149A2 (en) Virtual non-uniform memory architecture for virtual machines
US11016817B2 (en) Multi root I/O virtualization system
US11188365B2 (en) Memory overcommit by speculative fault
US20240143377A1 (en) Overlay container storage driver for microservice workloads
CN111158911A (zh) 一种处理器配置方法、装置、处理器及网络设备
CN110447019B (zh) 存储器分配管理器及由其执行的用于管理存储器分配的方法
US10379912B2 (en) Data storage allocation utilizing virtual machine resource allocation
US20220276889A1 (en) Non fragmenting memory ballooning
CN108139980B (zh) 用于合并存储器页的方法和存储器合并功能
US11016685B2 (en) Method and defragmentation module for defragmenting resources
US9021506B2 (en) Resource ejectability in multiprocessor systems
US11914512B2 (en) Writeback overhead reduction for workloads
US20230333766A1 (en) Modified copy-on-write snapshotting
Mlynski The influence of the IBM pSeries servers virtualization mechanism on dynamic resource allocation in AIX 5L
CN116257176A (zh) 数据存储系统、数据存储方法和存储介质

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