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

文档序号:6356036阅读:410来源:国知局
专利名称:一种创建虚拟机的方法、虚拟机监控器及虚拟机系统的制作方法
技术领域
本发明涉及虚拟机技术,具体地涉及一种创建虚拟机的方法、虚拟机监控器及虚 拟机系统。
背景技术
虚拟化技术是一种将底层硬件设备与上层操作系统、应用程序分离的去耦合方 法,其引入虚拟机监控器(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)等。气球驱动(BalloonDriver)安装在客户机操作系统(Guest Operating System, G0S)内部,并诱导GOS释放或分配内存,气球驱动将相应的内存收回或分配给G0S,从而实 现自动伸缩内存调节。基于页内容的内存页共享CBPS方法是扫描全局物理页,发现页内容相同的页就 共享,从而释放冗余页,减少虚拟机的物理内存使用量。内存页交换(Memory Page Swap)或内存页压缩方法(Memory Page Compression) 选择虚拟机的若干页交换到磁盘等外部设备上,或无损压缩成1/n页大小,从而释放出内 存给更多的虚拟机使用。PoD方法为每个虚拟机分配指定数量的内存页作为内存池(Memory Pool),刚启动 的时候虚拟机的虚拟内存都是空的,没有对应到物理内存页,只有当虚拟内存真正被访问 的时候才从内存池中拿出物理页。发明人在实现本发明的过程中发现,现有技术至少存在以下不足以上技术都没有考虑虚拟机创建后并启动GOS这个过程当中内存使用情况,而是 先将虚拟机需要的内存全部分配给虚拟机,然后再回收部分内存,这使得物理机器能并发 启动虚拟机的数量受到物理内存量的限制,从而降低了虚拟机密度。

发明内容
本发明实施例的目的在于,提供一种创建虚拟机的方法、虚拟机监控器及虚拟机 系统。一方面,本发明实施例提供了一种创建虚拟机的方法,所述方法包括将虚拟机的 伪物理内存a^seudo-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的映射由ρ^ιι表记录。如图2中的ρ^ιι表所示,ρ^ιι表由ρ^ιι 表项组成,p2m表项中记录了 mfn。把gfn作为索引,能找到唯一一个ρ^ιι表项,从而找到 mfn。假设共享零页的mfn等于ml,那么在虚拟机创建阶段,host/vmm用虚拟机伪物理内存 对应的全部GFN去索引该虚拟机对应的pan表,在每个GFN索引到的ρ^ιι项中MFN的位置 填入ml ;假设虚拟机创建完成后,开始写内存,该内存所在的GFN为g2,且产生页面异常, host/vmm开始处理该异常,并分配一页物理内存,假设该物理内存的MFN等于m2,host/vmm 将m2内存页清零后把m2填入g2索引ρ^ιι表得到的表项,从而解除g2到共享零页的映射; 在零页扫描阶段,假设host/vmm发现虚拟机伪物理内存的GFN为g3对应的MFN内存页m3 是零页,host/vmm把g3索引ρ^ιι表得到的表项中填入ml,使其重新映射到共享零页上,最 后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 feite单元。写时拷贝Copy on Write单元220具有以下功能首先分配一块物理内存页并将这页清零;接着解除产生 异常的GFN到共享零页的映射关系;最后将产生异常的GFN重新映射到上述分配的物理内 存页对应的MFN上。写时拷贝单元,还用于判断内存池中是否包含零页,如是,则从所述内 存池中获取零页并分配给虚拟机。在一较佳实施例中,如图2所示,该虚拟机监控器还进一步包括阈值控制单元 230和零页扫描单元MO ;该阈值控制单元230,用于判断已分配的物理内存页的数量是否 达到预设的阈值,如是,则启动该零页扫描单元;该零页扫描单元M0,用于对上述已分配 的物理内存页进行扫描,并释放扫描到的的零页或者将扫描到的零页放入内存池中具体地,阈值控制单元230,与写时拷贝单元220连接,随着VM不断地写映射到共 享零页的GFN,VM占用的物理内存页也在不断增加,因此阈值控制单元230的功能包括判 断VM增加的内存页数量是否超过预设的阈值,如果VM增加的内存页数量超过预设的阈值, 则启动零页扫描单元,例如当VM使用的内存量超过4096页时启动零页扫描单元。
零页扫描单元MO,与阈值控制单元230连接,在VM启动阶段中GOS大量写内存操 作是往内存页中写零,所以零页扫描单元MO的功能包括对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(客 户操作系统,G0S)的阶段,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 0S,在创建虚拟内存时并不给 虚拟机分配任何物理内存资源,而是由初始化虚拟内存单元将VM的所有GFN都映射到VMM 分配的共享零页上。尽管此时VM没有物理内存资源,但是VM通过P2M表仍然能获知全额 并且内容都为零的虚拟内存,所以Guest OS仍能够启动。步骤20、VM 写 GFN;步骤21、判断是否产生页面异常I^ageFault,如是,则转入步骤22a,如否,则转入 步骤22b ;步骤22a、CoW单元申请物理内存页,更新P2M表,并使内存使用增量加1 ;更新P2M 表是指解除所访问的GFN与共享零页的映射关系,并将所访问的GFN映射至申请的物理内 存页;步骤22b、VM访问已经申请的页;具体地,在步骤20、步骤21和步骤22a中,VM开始使用虚拟内存,使用内存操作包 括读内存和写内存。如果是写内存操作并且所访问的GFN是映射到共享零页上的,则处理 器将产生页面异常I^ageFault。VMM开始处理这个异常,VMM调用CoW单元解除所访问的GFN 到共享零页的映射关系,Coff单元再将所访问的GFN重新映射到一个新分配的且页内容为 全零的MFN上,在这种情况下,VMM还更新VM的内存使用增量计数,将这个计数值加1。其 中解除映射关系及重新映射是由CoW单元完成。在步骤20、步骤21和步骤22b中,如果VM 写的GFN不是映射到共享零页上,则不会产生I^geFault异常,VM正常使用内存。步骤30、判断VM的内存使用增量是否小于预设的阈值,如是,则转入步骤20,如 否,则转入步骤40;
步骤40、扫描零页,并将内存使用增量置零;步骤41、释放零页。具体地,在CoW单元写成申请物理内存页、解除及重新建立映射关系之后,阈值控 制单元,根据内存使用增量与预设的阈值之间的关系判断是否需要启动零页扫描单元。如 果不需要启动零页扫描单元,则VMM从异常处理流程中退出,返回到VM中,VM继续运行,如 图4中步骤30和步骤20所示;如果内存增量已经超过阈值,则启动零页扫描单元,阈值的大小可以由虚拟配置 文件制定,也可以是VMM设定的默认值,例如32MB。在步骤40中,如果需要进行零页扫描,则零页扫描单元开始扫描已经分配给VM的 物理内存,把内容为全零的页对应的GFN重新映射到共享零页上,并释放这些内容为零的 物理页且将内存增量置为0。扫描零页是指找到VM的内存页中内容为全零的页。扫描VM 的物理页时,可以扫描VM当前拥有的全部物理页,也可以只扫描增量内存。如果只扫描增 量内存则需要步骤2 完成后记录相应的MFN,也即VM新增的物理页对应的MFN,记录的数 据结构可以是二进制位图(Bitmap)或是链表等数据结构。这一步完成后从异常处理流程 中退出,返回到VM中,VM继续运行。图4中的流程运行直到阈值控制单元单元收到启动完 成通知消息,这个消息的发送者可以是VMM本身、特权域或者VM的前端驱动。本发明实施例四的方法,可以减少虚拟机启动过程中的内存使用量,提高虚拟机 密度,支持并发启动Memory Overcommitted数量的虚拟机,并使虚拟机启动过程当中内存 使用量单调递增。实施例五实施例四的流程中,零页扫描单元将零页重新映射到共享零页上后,直接释放物 理内存页,而CoW单元每次都重新申请一块物理内存页,因此为提高性能,实施例五中将零 页扫描单元发现的零页先放入一个内存池,CoW单元申请内存页时先从该内存池中获取,如 果内存已经为空再由VMM分配物理页。通过本发明实施例五,可以减少本发明实现流程中 的反复先申请后释放的操作,从而提高效率。本发明实施例五图5的具体流程与本发明实施例四图4类似,不同之处在于第一,图4中步骤2 在图5中对应于以下两种情况一种情况,如图5中步骤120、步骤121b和步骤123所示,当内存池不为空的时候, VMM在为GFN重新分配页时从内存池中取出一页,并把GFN映射到该页对应的MFN上,接着 将内存使用增量加一。另一种情况,当内存池为空时,执行图5中的步骤120、步骤121a、步骤122和步骤 123,完成与图4中2 —样的操作,即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、或技术领域 内所公知的任意其它形式的存储介质中。以上所述,仅为本发明较佳的具体实施方式
,但本发明的保护范围并不局限于此, 任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换, 都应涵盖在本发明的保护范围之内。因此本发明的保护范围应该以权利要求的保护范围为 准。
1权利要求
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重新映射到共享零页上,在扫描完成后将内 存使用增量置零。
全文摘要
本发明实施例提供了一种创建虚拟机的方法、虚拟机监控器及虚拟机系统,该方法包括将虚拟机的伪物理内存对应的客户机页框号GFN映射到一共享零页,所述共享零页为物理内存中页面内容全为零的页;当所述虚拟机写所述GFN时,如果产生页面异常则分配物理内存页以解除所述客户机页框号GFN与所述共享零页的映射关系,并建立所述客户机页框号GFN与所述物理内存页的机器页框号MFN的映射关系。该方法可以减少虚拟机启动过程中的内存使用量,提高虚拟机密度,支持并发启动Memory Overcommitted数量的虚拟机。
文档编号G06F12/08GK102141931SQ201110061738
公开日2011年8月3日 申请日期2011年3月15日 优先权日2011年3月15日
发明者叶川, 邱军 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1