CN103064796B - 虚拟机内存的共享方法与计算机系统 - Google Patents
虚拟机内存的共享方法与计算机系统 Download PDFInfo
- Publication number
- CN103064796B CN103064796B CN201110442250.7A CN201110442250A CN103064796B CN 103064796 B CN103064796 B CN 103064796B CN 201110442250 A CN201110442250 A CN 201110442250A CN 103064796 B CN103064796 B CN 103064796B
- Authority
- CN
- China
- Prior art keywords
- those
- virtual machine
- free page
- memory
- memory pages
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 43
- 238000012545 processing Methods 0.000 claims description 13
- 238000010586 diagram Methods 0.000 description 17
- 230000006870 function Effects 0.000 description 6
- 238000013507 mapping Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000012790 confirmation Methods 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 239000002023 wood Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45583—Memory 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
本发明公开了一种虚拟机内存的共享方法,此共享方法用于在执行至少一个虚拟机的计算机系统上。此共享方法包括以下步骤:取得虚拟机所对应的内存映像图,此内存映像图存有所对应的虚拟机中内存页面的使用状态;根据虚拟机所对应的内存映像图,标记虚拟机上未被使用的内存页面为空闲页;共享虚拟机中的空闲页。藉此,虚拟机可以共享未被使用的内存页面。本发明还提出了一种使用上述共享方法的计算机系统。
Description
技术领域
本发明涉及一种可共享虚拟机中未使用内存的方法与一种使用该方法的计算机系统。
背景技术
随着计算机硬件装置的成本越来越降低以及大型服务器的需求越来越高,虚拟机(Virtual Machine)也越来越被重视。虚拟机为一种接口,应用于一软件与计算机系统之间,并可提供此计算机系统的各种资源给上述软件使用。此软件通常为一操作系统,因此,操作系统可以通过虚拟机来存取计算机系统上的资源。然而,在一计算机系统上可以安装多个虚拟机,每个虚拟机上可安装不同的操作系统。举例来说,微软的windows操作系统与linux操作系统便可同时安装在一个计算机系统上不同的虚拟机中。
另一方面,在开发新的操作系统时还可在一计算机系统上测试不同版本的操作系统,其中各个操作系统也被安装在不同的虚拟机上,当其中一个测试的操作系统发生错误时便不会导致整个计算机系统当机。另外,随着云端计算(Cloud Computing)的应用越来越广,服务器的机动性(mobility)也越来越重要。而由于虚拟机能让操作系统与计算机系统之间的耦合关系被松绑,因此一个操作系统可以随着虚拟机动态的被移动到另外一个计算机系统,藉此平衡服务器的负载。
然而,虽然理论上计算机系统上可以执行多个虚拟机,但是可执行的虚拟机数量还是会受到限制,其中一个限制的原因便是内存容量的问题。在一计算机系统上所配置的内存是有限的,若平均的将所有的内存分配给所执行的虚拟机,则每个虚拟机所能运用的内存便可能不足。然而,这些虚拟机中可能会使用到相同的程序代码或是数据(例如,window操作系统的核心程序),因此每一个虚拟机上都存有这些相同的数据。若能将这些虚拟机中相同的数据共享,使各个虚拟机只使用一份程序代码或数据于计算机系统的内存中,便能更有效的利用计算机系统的内存。其中一种共享内存的作法是,针对每个虚拟机中的每一个内存分页(memory page),根据一个哈希函数(hash function)来计算出一个哈希值,并比对各个虚拟机中的内存分页是否有相同哈希值。若不同的虚拟机中存在相同的哈希值的内存分页,则这些内存分页便可能是存有相同的资料,可以进一步的共享。然而,此方法必须对每个虚拟机的每个内存分页都计算哈希值,所以非常的耗时。因此如何有效的共享虚拟机中的内存,为此领域研究人员所关心的问题。
发明内容
本发明提出一种虚拟机内存的共享方法,此共享方法用于执行至少一个虚拟机的计算机系统中。此共享方法包括以下步骤。取得虚拟机所对应的内存映像图,此内存映像图存有所对应的虚拟机中内存页面的使用状态。根据虚拟机所对应的内存映像图,标记虚拟机上未被使用的内存页面为第一空闲页。以及,共享虚拟机中的第一空闲页。
以另外一个角度来说,本发明还提出一种计算机系统,用以执行至少一个虚拟机。此计算机系统包括有内存单元、处理单元、内存控制单元。其中内存单元包括有多个物理内存页面,而处理单元耦接至该内存单元。内存控制单元则耦接至上述处理单元与内存单元,并用以取得上述虚拟机所对应的内存映像图,此内存映像图存有所对应的虚拟机中内存页面的使用状态。内存控制单元还用以根据虚拟机所对应的内存映像图,标记虚拟机上未被使用的内存页面为多个第一空闲页,并共享各虚拟机中的第一空闲页。
附图说明
图1为依照本发明第一实施例所绘示的计算机系统方块图。
图2为依照本发明第一实施例所绘示的计算机系统与虚拟机的示意图。
图3为依照本发明第一实施例的虚拟机内存共享方法的流程图。
图4A为依照本发明第一实施例所绘示的第一空闲页的示意图。
图4B为依照本发明第一实施例所绘示的一个虚拟机的内存页面的共享示意图。
图5为依照本发明第二实施例的内存共享方法的流程图。
图6为依照本发明第三实施例的内存共享方法的流程图。
图7为依照本发明第三实施例所绘示的未使用内存分页的示意图。
图8为依照本发明第三实施例所绘示的共享内存方法各步骤的时间轴示意图。
【主要组件符号说明】
100:计算机系统
120:处理单元
140:内存单元
142、143、144、145:物理内存页面
220:虚拟机监控程序
230、240:虚拟机
232、234、236、242、731、740:内存页面
250、260:操作系统
262、252:虚拟内存页面
254、264:内存映像图
234、244、720:第一空闲页
730:第二空闲页
S302、S303、S304、S305、S306、S602、S604、S606:虚拟机内存共享方法的各步骤
S802:写入资料
S804:呼叫nominate指令
S806:呼叫share指令
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明进一步详细说明。
[第一实施例]
图1为依照本发明第一实施例所绘示的计算机系统方块图。
请参照图1,计算机系统100包括处理单元120、内存单元140、与内存控制单元160。
处理单元120耦接至内存单元140,用以执行计算机系统100中的软件及轫体。处理单元120例如为中央处理器(Central Process Unit,CPU)。
内存单元140包含了多个物理内存页面142。内存单元140例如为动态随机存取内存(Dynamic Random Access Memory,DRAM)或静态随机存取内存(Static Random Access Memory,SRAM)。
内存控制单元160耦接至处理单元120与内存单元140,用以控制内存单元140中的物理内存页面142。内存控制单元160例如为微处理器(microprocessor),执行一非挥发性内存(未绘示)中的程序代码。
计算机系统100上执行了多个虚拟机,而每个虚拟机上可执行一操作系统。请参照图2,图2为依照本发明实施例所绘示的计算机系统与虚拟机的示意图。虚拟机监控程序(Virtual Machine Monitor,VMM)220被执行在计算机系统100上,用以控制计算机系统100上所有的资源。其中计算机系统100的资源包括处理单元120、内存单元140、或是计算机系统100上的输入输出(input output,IO)装置(未绘示)的执行与使用。在本实施例中,VMM 220建置了虚拟机230与虚拟机240,虚拟机230与虚拟机240便可以通过VMM 220来存取上述计算机系统100的资源。然而虚拟机监控程序220可以提供数目更多或更少的虚拟机,本发明并不限制虚拟机的数目。
VMM 220可将计算机系统100上的资源分配给虚拟机230与虚拟机240。以内存为例,VMM 220将内存单元140中的物理内存页面142分配给虚拟机230与虚拟机240,使虚拟机230中包含了多个内存页面232,并使虚拟机240中包含了多个内存页面242。值得注意的是,内存页面232与内存页面242为客端物理内存(guest physical memory),也就是说内存页面232与内存页面242并不是实体的内存,仅是被对应至内存单元140中物理内存页面142的虚拟内存。
另一方面,虚拟机230上安装了操作系统260,且虚拟机240上安装了操作系统250。如此一来,操作系统260便可以存取虚拟机230上的资源(例如,内存页面232),而操作系统250便可以存取虚拟机240上的资源(例如,内存页面242)。而操作系统260中也包含了多个虚拟内存页面262,操作系统260是用逻辑地址(logical address)来存取这些虚拟内存页面262。当操作系统260用逻辑地址存取虚拟内存页面262时,此逻辑地址会被操作系统260转换为内存页面232的客端实体位置(guest physicaladdress),而VMM 220再将此客端实体位置转换为物理内存页面142的实体位置(physical address)。操作系统260通过这样的转换关系来存取物理内存页面142。操作系统250也通过类似的转换用逻辑地址来存取物理内存页面142,在此便不再赘述。
而操作系统260中的内存映像图(memory map)264则存放着内存页面232的使用状态。在一实施例中,操作系统260为微软windows操作系统,内存映像图264则为页框值数据库(page frame number database,PFNdatabase)。而页框值数据库为数组型态的数据结构,此数组的每一个元素中包括”Type”字段,而”Type”字段记录着对应的一个内存页面232的使用状态。而内存页面232的使用状态例如为已配置、或未使用等。在一实施例中,操作系统250为Linux操作系统,并使用对偶式内存管理算法(Buddy System Algorithm)来管理空闲页,内存映像图254是名为mem_map的数组数据结构。然而,本发明并不限制虚拟机上操作系统的种类,也不限制内存映像图的数据结构。
图3为依照本发明实施例的虚拟机内存共享方法的流程图。
请参照图3,在步骤S302中,本实施例的内存控制单元160取得对应各虚拟机的内存映像图在内存中的地址,并通过此地址得到内存映像图。详细的说,内存控制单元160取得对应于虚拟机230的内存映像图264,以及对应于虚拟机240的内存映像图254。在一实施例中,操作系统260为windows操作系统,而在windows操作系统中执行文件、动态链接数据库(dynamically linked libraries,DLLs)或核心映像文件(kernel image)皆符合可携带可执行(portable executable,PE)的格式。内存控制单元160可以根据有PE格式的核心映像文件找到此核心映像文件在内存中的基准地址(base address),并可以找到所对应的程序数据库(program database,PDB)档案。内存控制单元160可以从上述程序数据库档案找到操作系统260中内存映像图264在内存中相对于核心映像文件的相对位置。内存控制单元160将上述的相对位置与基准位置结合,便可以得到内存映像图264的内存位置。然而,本发明并不限制内存控制单元160取得内存映像图的方式。
在步骤S304中,内存控制单元160根据各虚拟机所对应的内存映像图,标记各虚拟机上未被使用的内存页面为多个第一空闲页。请参考图4A(a),图4A为依照本发明实施例所绘示的第一空闲页的示意图。举例来说,内存控制单元160根据内存映像表264取得内存页面232的使用状态,并将使用状态为”未使用”的内存页面标示为第一空闲页234;并且根据内存映像表254取得内存页面242的使用状态,将虚拟机240中未使用的内存页面标示为第一空闲页244。以下称第一空闲页时所指的是标记为第一空闲页的内存分页。值得注意的是,第一空闲页234对应至内存单元140中的物理内存页面143,而第一空闲页244对应至内存单元140中的物理内存页面144,因此,第一空闲页234与第一空闲页244分别占据了内存单元140不同的物理内存页面。值得注意的是,若第一空闲页234与第一空闲页244内的资料并没有被重置(即,全设为0),则即使经过哈希函数的运算,第一空闲页234与第一空闲页244很有可能会产生不同的哈希值,也就不能被公知的做法共享。
在步骤S306中,内存控制单元160共享各虚拟机的第一空闲页。举例来说,内存控制单元160共享第一空闲页234与第一空闲页244,使得第一空闲页234与第一空闲页244会对应至相同的物理内存页面143(如图4A(b)所示)。在一实施例中,VMM 220是名为Xen的开放原始码的虚拟机监控程序,其中提供了nominate与share的指令,用以共享内存。内存控制单元160可通过呼叫上述nominate与share的指令来共享内存。另一方面,在另一实施例中,内存控制单元160所执行的功能被实作为在虚拟机230上的程序代码,由处理单元120执行并呼叫上述的nominate与share指令来共享内存。本发明并不限制共享虚拟机上内存的方式。
在其他实施例中,为了避免内存控制单元160在共享第一空闲页234与第一空闲页244的同时,虚拟机230(或虚拟机240)将数据写入第一空闲页234(或第一空闲页244),此种情形会使得内存控制单元160共享已被使用的内存分页,造成错误。因此,在本发明的一实施例中,内存控制单元160在步骤S306之前还会暂停各虚拟机对第一空闲页的存取。并且在步骤S306之后,内存空置单元160还会恢复各虚拟机对第一空闲页的存取。
然而,本发明并不限制共享内存页面时虚拟机的个数,本发明也可用在只有建置一个虚拟机的计算机系统上。图4B为依照本发明一实施例所绘示的一个虚拟机的内存页面的共享示意图。
请参考图4B,在一实施例中,VMM 220上只建置了一个虚拟机230,虚拟机230上执行操作系统260。内存控制单元160依照图3的流程,先取得虚拟机220上的内存映像图264(步骤S302)。接着在步骤S304中,内存控制单元160根据虚拟机所对应的内存映像图264,标记虚拟机230上未被使用的内存页面232为第一空闲页。例如,内存控制单元160标记未使用的内存页面234与内存页面264为第一空闲页。接着在步骤S306中,共享虚拟机230中的第一空闲页,使得内存页面232中不同的内存页面可映像至物理内存页面142中相同的物理内存页面。例如,内存控制单元160在共享内存页面234与内存页面236之后,使得内存页面234与内存页面236被映像至物理内存页面145。
[第二实施例]
请参考图5,图5为依照本发明第二实施例的内存共享方法的流程图。其中步骤S302、S304、S306已详细说明如上,在此便不再赘述。
在步骤S303中,内存控制单元160暂停各虚拟机对内存页面的存取。也就是说,内存控制单元160暂停了虚拟机230对内存页面232的存取,也暂停了虚拟机240对内存页面242的存取。
并且,在步骤S305中,内存控制单元恢复了各虚拟机对内存页面的存取。也就是说,内存控制单元160恢复了虚拟机230对内存页面232的存取,也恢复了虚拟机240对内存页面242的存取。
如此一来,就可以避免内存控制单元160在进行步骤S304的同时,各虚拟机将数据写入内存页面所造成的错误。
[第三实施例]
请参考图6及图7,图6为依照本发明第三实施例的内存共享方法的流程图;图7为依照本发明第三实施例所绘示的未使用内存分页的示意图。其中步骤S302与步骤S304已详细说明如上,在此便不再赘述。然而,为了避免在步骤S304之后并且在内存控制单元160共享内存页面之前有数据写入至要共享的内存页面,本实施例还会根据内存映像图再次标记未使用的内存页面为第二空闲页并且使用只读(read-only)标记来确认内存页面未被写入过。
举例来说,在步骤S304中,内存控制单元160根据虚拟机230所对应的内存映像图264,标记各虚拟机上未被使用的内存页面为多个第一空闲页720(如图7(a)所示)。
接着在步骤S602中,内存控制单元160标记虚拟机上的内存页面为只读状态。具体来说,内存控制单元160是将被标记为第一空闲页的内存页面标记为只读状态。以虚拟机230为例,第一空闲页720皆被内存控制单元160标记为只读状态。除此之外,在步骤S602之后,若有被标记为只读状态的内存页面(例如,第一空闲页720)被写入时,内存控制单元160会取消被写入的内存页面的只读状态。
接着在步骤S604中,内存控制单元160根据各虚拟机所对应的内存映像图,标记各虚拟机上未被使用的内存页面为多个第二空闲页。例如,内存控制单元160根据对应于虚拟机230的内存映像图264,将内存页面232中未使用的内存页面标示为第二空闲页730(如图7(b)所示)。值得注意的是,在内存控制单元执行步骤S304与步骤S604的时间之间,内存页面731被改写了,因此第二空闲页730与第一空闲页720的范围并不相同。并且,内存页面731的只读状态也会被取消。
接着,在步骤S606中,内存控制单元160将共享各虚拟机中同时被标记为只读、第一空闲页以及第二空闲页的内存页面。举例来说,内存控制单元160检查第一空闲页720与第二空闲页730所包含的内存分页,得到重复的内存页面740(如图7(c)所示)。并且在共享内存页面时,内存控制单元160检查内存页面740是否仍是只读状态以判断内存页面740是否有遭到写入。如果内存页面740仍是只读状态则内存控制单元160保持其只读状态并共享内存页面740。
在本实施例中,VMM 220是名为Xen的开放原始码的虚拟机监控程序,其中提供了nominate与share的指令,用以共享内存。更详细的说,内存控制单元160是先呼叫nominate指令,取得内存页面的手柄(handle)。然后再根据两个内存页面的手柄来呼叫share指令,藉此共享此两内存页面(步骤S606)。也就是说步骤S606是通过呼叫share指令来实作,而nominate的指令必须在步骤S606之前完成。举例来说,请参照图4A,内存控制单元160先呼叫nominate指令取得被标记为第一空闲页234的各个内存分页的手柄,接着呼叫nominate指令取得虚拟机240里标记为第一空闲页244的各个内存分页的手柄。接着内存控制单元160再跟据标记为第一空闲页234的内存分页的手柄,以及被标记为第一空闲页244的内存分页的手柄来呼叫share指令,使得第一空闲页234与第一空闲页244的内存分页可以共享物理内存分页143。由于nominate与share的指令并不是被同时执行,因此会产生在nominate与share之间有数据写入的问题。
请参考图8,图8为依照本发明第三实施例所绘示的共享内存方法各步骤的时间轴示意图。请同时参考图7与图8。
如图8(a)所示的情况,内存控制单元160先执行步骤S304并将未使用的内存分页标示为第一空闲页720,接着虚拟机230写入数据到内存页面731(步骤S802)。然后在步骤S804中内存控制单元160执行nominate指令,但所得到的内存手柄会是标记为第一空闲页720的内存分页。也就是说,内存控制单元160所得到的手柄所指向的第一空闲页720中包含有一个已被使用的内存分页731。在这样的情况下,内存控制单元160在执行share指令时(步骤S806),会共享已被使用的内存分页731,造成错误。
然而,在本实施例的共享方法中会确认两次未使用的内存分页并使用只读标记。本实施例如图8(b)所示,在内存控制单元160执行步骤S304之后,内存控制单元160会标记内存页面232为只读状态(步骤S602)。并且在步骤S802与S804以后,还会进行第二次的确认(步骤S604),标示非使用的内存页面为第二空闲页730。如此一来,在步骤S604中便会得到第二空闲页730,而不会包括已被写入的内存页面731。因此在步骤S606中内存控制单元160执行share指令以共享同时被标记为只读、第一空闲页以及第二空闲页的内存页面740时,并不会共享已被使用的内存分页731。
在其他实施例中,内存控制单元160在图6的流程图中也可只执行步骤S302、S304、S604与S606。也就是说,内存控制单元160并不标记内存页面为只读状态(步骤S602);而在步骤S606中,内存控制单元160共享被标记为第一空闲页且也被标记为第二空闲页的内存页面。
综上所述,本发明提出了一种虚拟机内存的共享方法与一种计算机系统。本发明由于所共享的内存是虚拟机中未被使用的内存分页,因此不需要经过哈希函数的比对,能够提升效率。另一方面,本发明在确认虚拟机中未被使用的内存分页时,会先暂停各虚拟机对内存分页的存取,或者是确认两次未使用的内存分页,使得可以解决在存取内存分页的同时有数据被写入的问题。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (20)
1.一种虚拟机内存的共享方法,用于一计算机系统,该计算机系统用以执行至少一虚拟机,其中该计算机系统包括多个物理内存页面,该共享方法包括:
取得该至少一虚拟机所对应的一内存映像图,该内存映像图存有所对应的该至少一虚拟机中多个客端物理内存页面的使用状态;
根据该至少一虚拟机所对应的该内存映像图,从该些客端物理内存页面中,标记该至少一虚拟机上未被使用的该些内存页面为多个第一空闲页;以及
共享该至少一虚拟机中的该些第一空闲页,以使所分享的该些第一空闲页当中的至少两个被映射至该些物理内存页面当中相同的一个。
2.如权利要求1所述的共享方法,该方法还包括:
根据该至少一虚拟机所对应的该内存映像图,从该些客端物理内存页面中,标记该至少一虚拟机上未被使用的内存页面为多个第二空闲页;
共享该至少一虚拟机中被标记为该些第一空闲页且也被标记为该些第二空闲页的该些客端物理内存页面。
3.如权利要求2所述的共享方法,其中被标记为该些第二空闲页的该些客端物理内存页面的个数少于被标记为该些第一空闲页的该些客端物理内存页面的个数。
4.如权利要求2所述的共享方法,其中根据该至少一虚拟机所对应的该内存映像图,标记该至少一虚拟机上未被使用的该些内存页面为该些第一空闲页的步骤之后还包括:
标记被标记为该些第一空闲页的该些客端物理内存页面为只读状态。
5.如权利要求4所述的共享方法,其中标记被标记为该些第一空闲页的该些客端物理内存页面为只读状态的步骤之后还包括:
当被标记为只读状态且被标记为该些第一空闲页的该些客端物理内存页面被写入时,取消被写入的该些客端物理内存页面的只读状态。
6.如权利要求5所述的共享方法,其中共享该至少一虚拟机中被标记为该些第一空闲页且也被标记为该些第二空闲页的该些客端物理内存页面的步骤还包括:
共享被标记为只读状态、第一空闲页以及第二空闲页的该些客端物理内存页面。
7.如权利要求1所述的共享方法,其中根据该至少一虚拟机所对应的该内存映像图,标记该至少一虚拟机上未被使用的该些内存页面为该些第一空闲页的步骤之前还包括:
暂停该至少一虚拟机对该些客端物理内存页面的存取。
8.如权利要求7所述的共享方法,其中根据该至少一虚拟机所对应的该内存映像图,标记该至少一虚拟机上未被使用的该些内存页面为该些第一空闲页的步骤之后还包括:
恢复该至少一虚拟机对该些客端物理内存页面的存取。
9.如权利要求1所述的共享方法,其中共享该至少一虚拟机中的该些第一空闲页的步骤之前还包括:
暂停该至少一虚拟机对该些第一空闲页的存取。
10.如权利要求9所述的共享方法,其中共享该至少一虚拟机中的该些第一空闲页的步骤之后还包括:
恢复该至少一虚拟机对该些第一空闲页的存取。
11.一种计算机系统,用以执行至少一虚拟机,该计算机系统包括:
一内存单元,包括有多个物理内存页面;
一处理单元,耦接至该内存单元;以及
一内存控制单元,耦接至该处理单元与该内存单元;
其中,该内存控制单元取得该至少一虚拟机所对应的一内存映像图,该内存映像图存有所对应的该虚拟机中多个客端物理内存页面的使用状态;该内存控制单元根据该至少一虚拟机所对应的该内存映像图,从该些客端物理内存页面中,标记该至少一虚拟机上未被使用的内存页面为多个第一空闲页;以及该内存控制单元共享该至少一虚拟机中的该些第一空闲页,以使所分享的该些第一空闲页当中的至少两个被映射至该些物理内存页面当中相同的一个。
12.如权利要求11所述的计算机系统,其中该内存控制单元根据该至少一虚拟机所对应的该内存映像图,从该些客端物理内存页面中,标记该至少一虚拟机上未被使用的该些内存页面为多个第二空闲页;以及该内存控制单元共享该至少一虚拟机中被标记为该些第一空闲页且也被标记为该些第二空闲页的该些客端物理内存页面。
13.如权利要求12所述的计算机系统,其中被标记为该些第二空闲页的该些客端物理内存页面的个数少于被标记为该些第一空闲页的该些客端物理内存页面的个数。
14.如权利要求12所述的计算机系统,其中该内存控制单元在标记该至少一虚拟机上未被使用的该些内存页面为该些第一空闲页之后,该内存控制单元还将被标记为该些第一空闲页的该些客端物理内存页面标记为只读状态。
15.如权利要求14所述的计算机系统,其中该内存控制单元在标记被标记为该些第一空闲页的该些客端物理内存页面为只读状态之后,当被标记为只读状态且被标记为该些第一空闲页的该些客端物理内存页面被写入时,该内存控制单元取消被写入的该些客端物理内存页面的只读状态。
16.如权利要求15所述的计算机系统,其中该内存控制单元在共享该至少一虚拟机中被标记为该些第一空闲页且也被标记为该些第二空闲页的该些客端物理内存页面时,该内存控制单元是共享被标记为只读状态、该些第一空闲页以及该些第二空闲页的该些客端物理内存页面。
17.如权利要求11所述的计算机系统,其中在标记该至少一虚拟机上未被使用的该些内存页面为该些第一空闲页之前,该内存控制单元暂停该至少一虚拟机对该些客端物理内存页面的存取。
18.如权利要求17所述的计算机系统,其中在标记该至少一虚拟机上未被使用的该些内存页面为该些第一空闲页之后,该内存控制单元恢复该至少一虚拟机对该些客端物理内存页面的存取。
19.如权利要求11所述的计算机系统,其中在共享该至少一虚拟机中的该些第一空闲页之前,该内存控制单元暂停该至少一虚拟机对该些第一空闲页的存取。
20.如权利要求19所述的计算机系统,其中在共享该至少一虚拟机中的该些第一空闲页之后,该内存控制单元恢复该至少一虚拟机对该些第一空闲页的存取。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201161548697P | 2011-10-18 | 2011-10-18 | |
US61/548,697 | 2011-10-18 | ||
TW100145074A TWI452468B (zh) | 2011-10-18 | 2011-12-07 | 虛擬機器記憶體的分享方法與電腦系統 |
TW100145074 | 2011-12-07 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103064796A CN103064796A (zh) | 2013-04-24 |
CN103064796B true CN103064796B (zh) | 2015-09-23 |
Family
ID=48086780
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110442250.7A Active CN103064796B (zh) | 2011-10-18 | 2011-12-26 | 虚拟机内存的共享方法与计算机系统 |
Country Status (2)
Country | Link |
---|---|
US (1) | US9058197B2 (zh) |
CN (1) | CN103064796B (zh) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9135038B1 (en) * | 2010-05-28 | 2015-09-15 | Bromium, Inc. | Mapping free memory pages maintained by a guest operating system to a shared zero page within a machine frame |
US9825884B2 (en) | 2013-12-30 | 2017-11-21 | Cavium, Inc. | Protocol independent programmable switch (PIPS) software defined data center networks |
US10616144B2 (en) | 2015-03-30 | 2020-04-07 | Cavium, Llc | Packet processing system, method and device having reduced static power consumption |
US9747226B2 (en) * | 2015-03-30 | 2017-08-29 | Cavium, Inc. | Packet processing system, method and device to optimize packet buffer space |
US9934157B2 (en) * | 2015-11-25 | 2018-04-03 | Red Hat Israel, Ltd. | Post-copy VM migration speedup using free page hinting |
US10628192B2 (en) * | 2015-12-24 | 2020-04-21 | Intel Corporation | Scalable techniques for data transfer between virtual machines |
CN107783812B (zh) * | 2016-08-24 | 2022-03-08 | 阿里巴巴集团控股有限公司 | 虚拟机内存管理方法及装置 |
CN107797937A (zh) * | 2016-09-05 | 2018-03-13 | 康齐科技股份有限公司 | 内存管理系统及其方法 |
CN106790162B (zh) * | 2016-12-29 | 2020-07-03 | 中国科学院计算技术研究所 | 虚拟网络优化方法与系统 |
CN108595244A (zh) * | 2017-12-05 | 2018-09-28 | 北京神州绿盟信息安全科技股份有限公司 | 虚拟机内外通信方法、虚拟机、物理主机及虚拟机系统 |
US11010221B2 (en) * | 2019-04-02 | 2021-05-18 | Dell Products L.P. | Dynamic distribution of memory for virtual machine systems |
CN113641465A (zh) * | 2021-10-15 | 2021-11-12 | 云宏信息科技股份有限公司 | 虚拟机内存的超分方法、系统及计算机可读存储介质 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7310718B1 (en) | 1998-11-25 | 2007-12-18 | Sun Microsystems, Inc. | Method for enabling comprehensive profiling of garbage-collected memory systems |
US6789156B1 (en) | 2001-05-22 | 2004-09-07 | Vmware, Inc. | Content-based, transparent sharing of memory units |
AU2003298616A1 (en) | 2002-11-06 | 2004-06-03 | International Business Machines Corporation | Confidential data sharing and anonymous entity resolution |
US7500048B1 (en) | 2005-12-15 | 2009-03-03 | Vmware, Inc. | Transparent page sharing on commodity operating systems |
US8095931B1 (en) * | 2006-04-27 | 2012-01-10 | Vmware, Inc. | Controlling memory conditions in a virtual machine |
US7504969B2 (en) | 2006-07-11 | 2009-03-17 | Data Domain, Inc. | Locality-based stream segmentation for data deduplication |
US7840537B2 (en) | 2006-12-22 | 2010-11-23 | Commvault Systems, Inc. | System and method for storing redundant information |
CN100527098C (zh) | 2007-11-27 | 2009-08-12 | 北京大学 | 一种虚拟机管理器的动态内存映射方法 |
US7814149B1 (en) | 2008-09-29 | 2010-10-12 | Symantec Operating Corporation | Client side data deduplication |
US8006043B2 (en) | 2008-10-06 | 2011-08-23 | Vmware, Inc. | System and method for maintaining memory page sharing in a virtual environment |
US8103849B2 (en) | 2009-04-24 | 2012-01-24 | International Business Machines Corporation | Reducing memory usage of kernel memory management structures |
-
2011
- 2011-12-26 CN CN201110442250.7A patent/CN103064796B/zh active Active
-
2012
- 2012-01-31 US US13/363,365 patent/US9058197B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US9058197B2 (en) | 2015-06-16 |
US20130097358A1 (en) | 2013-04-18 |
CN103064796A (zh) | 2013-04-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103064796B (zh) | 虚拟机内存的共享方法与计算机系统 | |
US9529611B2 (en) | Cooperative memory resource management via application-level balloon | |
CN103309786B (zh) | 用于在非可抢占式图形处理单元上交互调试的方法和装置 | |
US10996968B2 (en) | Support for application transparent, high available GPU computing with VM checkpointing | |
US20110113426A1 (en) | Apparatuses for switching the running of a virtual machine between multiple computer devices belonging to the same computer platform and the associated switching methods | |
CN105830026A (zh) | 用于调度来自虚拟机的图形处理单元工作负荷的装置和方法 | |
US20170046185A1 (en) | Page table based dirty page tracking | |
TWI457759B (zh) | 用於處理分頁錯誤的方法和裝置以及非暫時性的電腦可讀取媒體 | |
KR20070100367A (ko) | 하나의 가상 머신에서 다른 가상 머신으로 메모리를동적으로 재할당하기 위한 방법, 장치 및 시스템 | |
EP2881860B1 (en) | Method for implementing an interrupt between virtual processors, related device, and system | |
CN103034524A (zh) | 半虚拟化的虚拟gpu | |
US9697031B2 (en) | Method for implementing inter-virtual processor interrupt by writing register data in a single write operation to a virtual register | |
TW201339971A (zh) | 虛擬機器控制結構陰影化技術 | |
US9959134B2 (en) | Request processing using VM functions | |
US9569223B2 (en) | Mixed shared/non-shared memory transport for virtual machines | |
US9575796B2 (en) | Virtual device timeout by memory offlining | |
US10698713B2 (en) | Virtual processor state switching virtual machine functions | |
CN105556473A (zh) | 一种i/o任务处理的方法、设备和系统 | |
US11875145B2 (en) | Virtual machine update while keeping devices attached to the virtual machine | |
US10503659B2 (en) | Post-copy VM migration speedup using free page hinting | |
US20150242330A1 (en) | Guest-programmable location of advanced configuration and power interface (acpi) tables in virtualized systems | |
TWI452468B (zh) | 虛擬機器記憶體的分享方法與電腦系統 | |
US9122549B2 (en) | Method and system for emulation of instructions and hardware using background guest mode processing | |
Waddington et al. | The magazine archive includes every article published in Communications of the ACM for over the past 50 years. | |
Ambika et al. | A Novel Framework for Hypervisor Design |
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 |