CN101971146A - 改进作为管理程序来宾而运行的虚拟机中内存使用情况的系统和方法 - Google Patents
改进作为管理程序来宾而运行的虚拟机中内存使用情况的系统和方法 Download PDFInfo
- Publication number
- CN101971146A CN101971146A CN2008801060587A CN200880106058A CN101971146A CN 101971146 A CN101971146 A CN 101971146A CN 2008801060587 A CN2008801060587 A CN 2008801060587A CN 200880106058 A CN200880106058 A CN 200880106058A CN 101971146 A CN101971146 A CN 101971146A
- Authority
- CN
- China
- Prior art keywords
- virtual machine
- guest
- heap
- supervisory routine
- guest operating
- 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
Links
- 230000015654 memory Effects 0.000 claims abstract description 85
- 238000000034 method Methods 0.000 claims abstract description 42
- 239000010813 municipal solid waste Substances 0.000 claims abstract description 19
- 238000004891 communication Methods 0.000 claims abstract description 15
- 230000008569 process Effects 0.000 claims description 21
- 230000006872 improvement Effects 0.000 claims description 10
- 238000010586 diagram Methods 0.000 description 8
- 238000005516 engineering process Methods 0.000 description 8
- 230000000694 effects Effects 0.000 description 6
- 238000013507 mapping Methods 0.000 description 6
- 238000006116 polymerization reaction Methods 0.000 description 4
- 239000002699 waste material Substances 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 230000006399 behavior Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000004134 energy conservation Methods 0.000 description 2
- 230000007774 longterm Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000006855 networking Effects 0.000 description 2
- 238000005192 partition Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 239000007799 cork Substances 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 238000007599 discharging Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Images
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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0253—Garbage collection, i.e. reclamation of unreferenced memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/443—Optimisation
- G06F8/4434—Reducing the memory space required by the program code
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1041—Resource optimization
- G06F2212/1044—Space efficiency improvement
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Debugging And Monitoring (AREA)
Abstract
改进作为管理程序来宾运行的虚拟机中的内存使用情况的系统和方法。根据实施例,本发明提供了用于响应来自管理程序的请求更改虚拟机的内存使用情况的系统,包括:管理程序;在所述管理程序内执行的来宾操作系统;所述管理程序和所述来宾操作系统之间的通信信道;所述来宾操作系统中的气球驱动程序;用于执行软件应用的虚拟机;所述气球驱动程序和所述虚拟机之间的通信信道;供所述虚拟机用于作为所述软件应用的一部分存储软件对象和指针的内存空间或堆;以及,供所述虚拟机使用的压缩垃圾收集器。
Description
技术领域
一般而言,本发明涉及虚拟机环境及其他运行时环境,具体来说,涉及作为管理程序内的来宾运行的Java及其他虚拟机环境内的内存使用情况。
优先权声明:
本申请要求2007年9月7日提出的专利申请号为No.60/970,834,标题为“SYSTEM AND METHOD TO IMPROVE MEMORY USAGEIN VIRTUAL MACHINES RUNNING AS HYPERVISOR GUESTS”的美国临时专利申请;以及2008年9月5日提出的专利申请号为No.12/205,467,标题为“SYSTEM AND METHOD TO IMPROVEMEMORY USAGE IN VIRTUAL MACHINES RUNNING ASHYPERVISOR GUESTS”的美国专利申请的优先权,这些专利申请以引用的方式并入本文中。
背景技术:
可以使用服务器虚拟化来将单一物理服务器分区为多个虚拟服务器,其中,每一个虚拟服务器都可以运行其自己的操作系统(OS)和一组应用程序。负责管理虚拟服务器的软件一般被称为“管理程序”(hypervisor,或称为管理器)。系统管理员可以配置管理程序以给每一个虚拟服务器其自己的物理资源(如RAM或CPU时间)的份额。以此方式,操作系统的多个副本以为它们各自都在它们自己的服务器上运行,而实际上它们正在共享一个物理服务器。在管理程序内运行的操作系统一般被称为该管理程序的来宾(guest)。
虚拟化技术的主要用途之一是提高服务器利用率。在服务器上单独运行的服务器应用程序很少能充分利用服务器。例如,如果各自使用40%的服务器容量的两个应用程序可以在同一个服务器上运行,那么,只需要一个物理服务器,而不是两个物理服务器,相应地降低了能源消耗和空间要求。
只要所有应用程序都需要相同的操作系统和库,那么聚合同一个服务器上的多个应用程序久不需要服务器虚拟化。令人遗憾的是,许多旧版服务器应用程序需要不同的操作系统,或其不同的版本。在这些情况下,在同一个服务器上运行多个这些旧版服务器应用程序的唯一途径是使用管理程序来执行服务器虚拟化。在某些情况下,管理程序也可以提供通常在操作系统中不可用的服务,如保证一定量的服务器资源对一个来宾可用,而不对另一个权限较小的来宾可用。利用多个物理服务器,每个服务器运行一个管理程序,一个服务器上的管理程序可以将来宾移动到另一个服务器。这可以用来适应应用程序工作负荷的变化或服务器的必需的升级或修理。当前可用的服务器虚拟化技术的示例包括VMWare和XenSource。
由于空闲的服务器常常与正在工作的服务器使用几乎同样多的能量(这跟例如笔记本电脑不同,笔记本电脑由于电池因素试图节能),聚合来宾可以提供大量的能量和空间节省,这会立即转换成较低的成本。因此,许多信息技术或IT部门的一个共同的项目是数据中心合并。数据中心合并也受必要性的驱动,例如,常常不可能向计算机中心添加更多的能量,或者没有更多的可用的服务器空间。然而,从长远观点来看,将旧的应用程序和操作系统放到使用管理程序的现代的硬件上可能不是有效的解决方案。需要与底层操作系统和管理程序进行协作的更加智能的应用程序,以便将来完全利用数据中心资源。
与模拟已经存在的硬件设计的虚拟服务器相比,虚拟机是可以为其编译应用程序软件的抽象计算机。因此,虚拟机是在不同的硬件和操作系统组合之间是一致的应用程序软件的抽象层。在不同的平台上运行相同应用程序的大部分复杂性由虚拟机进行处理,因此,虚拟机变为非常复杂的软件。现代的虚拟机需要管理特定处理器的代码生成、比如线程操作系统从属的资源、联网和文件系统。虚拟机也管理堆(heap),在堆内,进行虚拟机对象的分配和释放。虚拟机的示例包括Java虚拟机(JVM)以及其不同的实现方式,包括JRockit JVM,以及Hotspot JVM。当今的大部分服务器应用程序都是以Java编写的,并在这样的虚拟机上执行的。数据中心合并的当前趋势需要虚拟机在作为管理程序来宾运行时表现良好,并有助于资源节省。
发明内容
这里说明了改进作为管理程序来宾运行的虚拟机,或其它垃圾收集的运行时环境中的内存使用情况的系统和方法。用于管理程序控制来宾操作系统的当前技术大大地影响了在来宾操作系统内运行的虚拟机的性能。
本发明的实施例是通过提供改进作为管理程序来宾运行的虚拟机或运行时环境收集的其他垃圾中的内存使用情况的系统和方法来解决此问题的。根据实施例,提供了用于响应来自管理程序的请求更改虚拟机的内存使用情况的系统,包括:管理程序;在所述管理程序内运行的来宾操作系统;所述管理程序和所述来宾操作系统之间的通信信道;所述来宾操作系统中的气球驱动程序;用于执行软件应用的虚拟机;所述气球驱动程序和所述虚拟机之间的通信信道;供所述虚拟机用于作为所述软件应用的一部分存储软件对象和指针的内存空间或堆;以及,供所述虚拟机使用的压缩垃圾收集器。
根据另一个实施例,所述气球驱动程序可以使用所述气球驱动程序到虚拟机的通信信道来控制所述虚拟机的堆的大小。
根据另一个实施例,所述管理程序可以在所述虚拟机堆之间均匀地或以指定的比例分割可用的物理RAM。
根据另一个实施例,所述管理程序可以为不同的虚拟机设置不同的堆大小,保证符合服务层次的约束,这些约束对于每一个虚拟机是不同的。
根据另一个实施例,所述操作系统可以被专门定制成只运行单一虚拟机,没有交换也没有其他用户进程。
附图说明:
图1显示了根据实施例的改进了在管理程序内作为来宾运行的虚拟机的内存使用情况的系统的例图。
图2显示了根据实施例的内存布局的示意图,显示了缩小堆大小之前和之后的Java堆。
图3显示了根据实施例的内存布局的示意图,显示了当两个OS/JVM来宾在管理程序内运行的情况。
图4显示了根据实施例的内存布局的示意图,显示了向管理程序内添加了第三OS/JVM来宾的情况。
图5显示了根据实施例的流程图,显示了管理程序RAM的重新分配。
具体实施方式:
可以使用服务器虚拟化来将单一物理服务器分区为多个虚拟服务器,其中,每一个虚拟服务器都可以运行其自己的操作系统(OS)和一组应用程序。负责管理虚拟服务器的软件一般被称为“管理程序”。系统管理员可以配置管理程序以给每一个虚拟服务器提供其自己的物理资源,比如RAM或CPU时间的份额。以此方式,操作系统的多个副本以为它们各自都在它们自己的服务器上运行,而实际上它们正在共享一个物理服务器。在管理程序内运行的操作系统一般被称为管理程序的来宾。
虚拟化技术的主要用途之一是提高服务器利用率。在服务器上单独运行的服务器应用程序很少能充分利用服务器。例如,如果各自使用40%的服务器容量的两个应用程序可以在同一个服务器上运行,那么,只需要一个物理服务器,而不是两个物理服务器,相应地降低了能源消耗和空间要求。
只要所有应用程序都需要相同的操作系统和库,那么聚合同一个服务器上的多个应用程序久不需要服务器虚拟化。令人遗憾的是,许多旧版服务器应用程序需要不同的操作系统,或其不同的版本。在这些情况下,在同一个服务器上运行多个这些旧版服务器应用程序的唯一途径是使用管理程序来执行服务器虚拟化。在某些情况下,管理程序也可以提供通常在操作系统中不可用的服务,如保证一定量的服务器资源对一个来宾可用,而不对另一个权限较小的来宾可用。利用多个物理服务器,每个服务器运行一个管理程序,一个服务器上的管理程序可以将来宾移动到另一个服务器。这可以用来适应应用程序工作负荷的变化或服务器的必需的升级或修理。当前可用的服务器虚拟化技术的示例包括VMWare和XenSource。
由于空闲的服务器常常与正在工作的服务器使用几乎同样多的能量(这跟例如笔记本电脑不同,笔记本电脑由于电池因素试图节能),聚合来宾可以提供大量的能量和空间节省,这会立即转换成较低的成本。因此,许多信息技术或IT部门的一个共同的项目是数据中心合并。数据中心合并也受必要性的驱动,例如,常常不可能向计算机中心添加更多的能量,或者没有更多的可用的服务器空间。然而,从长远观点来看,将旧的应用程序和操作系统放到使用管理程序的现代的硬件上可能不是有效的解决方案。需要与底层操作系统和管理程序进行协作的更加智能的应用程序,以便将来完全利用数据中心资源。
与模拟已经存在的硬件设计的虚拟服务器相比,虚拟机是可以为其编译应用程序软件的抽象计算机。因此,虚拟机是在不同的硬件和操作系统组合之间是一致的应用程序软件的抽象层。在不同的平台上运行相同应用程序的大部分复杂性由虚拟机进行处理,因此,虚拟机变为非常复杂的软件。现代的虚拟机需要管理特定处理器的代码生成、比如线程的操作系统从属的资源、联网和文件系统。虚拟机也管理堆(heap),在堆内,进行虚拟机对象的分配和释放。虚拟机的示例包括Java虚拟机(JVM)以及其不同的实现方式,包括JRockit JVM,以及Hotspot JVM。当今的大部分服务器应用程序都是以Java编写的,并在这样的虚拟机上执行的。数据中心合并的当前趋势需要虚拟机在作为管理程序来宾运行时表现良好,并有助于资源节省。
Java虚拟机内存使用情况
Java程序的工作对象是称为Java对象的数据结构,Java对象存储在Java堆中。Java堆是只为Java对象预留的可用内存的一个区域。在Java堆中创建新对象,而当堆中没有更多空间剩下时,使用垃圾收集进程识别不再被使用的对象,然后,可以收回相应的内存并将其用于新的Java对象。除了基本前提之外,Java虚拟机的定义没有规定对性能的任何要求或垃圾收集进程的行为,基本前提比如:未使用的内存应该重新用于新对象,当要释放对象时,应该调用终结程序(finalizer)。在Tim Lindholm和Frank Yellin所著的“The JavaVirtual Machine Specification(2nd Edition),1999”中提供了有关Java虚拟机的更多信息,该文以引用的方式并入本文中。因此,JVM实施者可以选择优化各种不同的行为,这取决于应用程序软件的要求和所使用的特定硬件的特点。理想的垃圾收集器对于应用程序软件和软件用户是不可检测的,因为没有暂停、没有额外的CPU或内存消费。令人遗憾的是,没有这样的垃圾收集器存在,大量的工作被花费在对不同目标以不同算法实现高性能对象分配和垃圾收集。
一般而言,较大的Java堆提供更好的性能,因为将花费比较长的时间填满可用内存,因此,垃圾收集操作较少。只要Java堆稍微大于应用程序大小JVM就可以继续运转。应用程序大小也被称为活数据(live data)大小,是在进行垃圾收集之后已知仍活着的所有对象的总和。应用程序大小不能超出Java堆的最大大小。如果应用程序试图超出此限制,那么,会引发致命的“内存用尽”错误,JVM结束。
在应用程序大小几乎与Java堆大小相同的情况下,JVM将花费其大部分时间进行垃圾收集,应用程序性能将非常低。如果Java堆是应用程序大小的两倍,那么,垃圾收集的性能影响通常是合理的,或者甚至是比较低的。
操作系统内存使用情况
交换(swapping)是被证实允许比服务器在物理上可用的RAM分配更多RAM的操作系统技术。交换的一般概念是,如果一个进程当前没有访问其RAM的某个区域,那么,操作系统可以将该区域的内容存储在磁盘上,并将内存给予更迫切地需要内存的另一个进程。如果原进程稍后再试图访问该内存区域,则操作系统不得不再次将它从磁盘加载到内存中。(如果当发生请求时操作系统内存不够,则它可能不得不首先将某些其他内存换出到磁盘,以完成该请求)。在理论上和实践中,交换在多进程操作环境中对于许多种进程来说能很好工作。长期以来,硬件和操作系统软件已被设计和优化为有效地执行交换,并且应用程序常常具有相比于同一个应用程序的其他部分来说更少使用的代码和数据。
高效的交换依赖于内存中存在当前没有被活跃地使用并且不会很快被访问的区域。这些内存区域可以包含重要数据,其中,该数据当前没有被访问,但是,在比较远的将来可能被访问。成功的交换依赖于系统发现这些不活动的内存区域的能力。它们与活动的内存区域对比鲜明,因为这些区域被进程频繁地访问。如果大多数内存区域是活动的,那么,系统将不能找到足够多的非活动区域来换出,并且将不得不换出某些活动区域。这种交换将导致严重的性能下降,因为页面不得不被存储到磁盘中然后被立即带回到RAM中。
虚拟机内存的管理程序交换
如同操作系统可以决定换出进程的几部分一样,管理程序可以决定换出虚拟机的几部分,以为具有更大内存需求的其他虚拟机提供空间。此外,如同操作系统交换对操作系统内的进程透明一样,管理程序交换对虚拟机内的操作系统也是透明的。除了操作系统可能检测到它有时运行得较慢些以外,交换过程对来宾操作系统是透明的。操作系统本身不能检测到它的某些部分被换出。由于整个操作系统运行得慢一些,因此,操作系统内的进程也将运行得慢一些。
管理程序换出虚拟机内存的几部分的理由一般与操作系统换出进程的虚拟内存的几部分的理由相同,即,有固定量的物理RAM,并且管理程序试图以最有效的方式在来宾之间共享这些资源。
成功而有效的交换高度依赖于哪些页面(内存的哪些部分)被挑选以换出。在理想情况下,应该选择在最远的未来才会被使用的页面。这样的算法难以设计,但是,对于操作系统交换有相当好的近似。对于管理程序,问题比较复杂。如果管理程序使用了与来宾操作系统相同的交换算法,那么,管理程序和来宾操作系统将希望交换相同的页面。如果管理程序首先将页面换出,有可能随后很快某一时间该虚拟机内的来宾操作系统会决定换出同一个页面。操作系统交换将迫使管理程序再次加载该页面,以便操作系统进行访问以使它可以被再次换出。显而易见,这不是一个好主意。
较好的情况是,如果来宾操作系统先试图交换,并且当操作系统完成换出页面时,管理程序可以换出更多,如果需要的话。如果管理程序可以触发操作系统执行交换,就可以实现这一点。旧式操作系统通常没有从外部软件接收它们应该如何管理RAM的命令的功能。某些管理程序通过在来宾操作系统内插入可以与管理程序进行通信的设备驱动程序来解决此问题。管理程序使用管理程序到操作系统的通信信道,并告诉驱动程序,它希望操作系统进行交换。然后,驱动程序分配操作系统中的非可交换的内存。效果是,操作系统必须换出其他内存。管理程序可以检测到由驱动程序分配的内存,并避免为它分配RAM,因此缩小了供来宾操作系统使用的RAM总量。
这种驱动程序有时被称为“气球驱动程序”(balloon driver,或称气球驱动器),因为由驱动程序分配的内存可以被视为在来宾操作系统内膨胀并将进程推出以交换空间的气球。最终结果是更好的性能,因为操作系统比管理程序更适合选择最佳的页面交换到磁盘。
令人遗憾的是,诸如带有比较大的垃圾收集堆的JVM之类的虚拟机对交换是非常敏感的。如上文所描述的,交换改进了内存使用情况,并且对性能的影响很小,只要内存使用频率是不均匀的,即,内存的某些部分被使用得比其他部分频繁。由于Java堆在垃圾收集被触发之前被完全使用,活动Java对象(live Java object)常常均匀地在Java堆上展开。如此,当执行垃圾收集以及跟踪并发现活动对象时,在垃圾收集器活动的短时间内必须在整个Java堆上随机地执行读取。如果整个堆不能保留在内存中,(即,某些部分始终必须被换出),那么,按随机顺序检查Java堆的大部分的垃圾收集跟踪将导致垃圾收集减慢,或许几乎完全停滞。
因此,使用气球驱动程序的管理程序无法调整运行JVM的来宾操作系统的内存使用情况而不显著影响JVM的性能。这是降低在虚拟服务器环境中运行的任何垃圾收集的虚拟机的效率的严重缺点。改进作为管理程序内的来宾运行的垃圾收集的虚拟机的内存使用情况的任何新技术将增大由服务器虚拟化产生的节省。
作为管理程序来宾运行的虚拟机中的改进的内存使用情况
在此公开了改进作为管理程序来宾运行的虚拟机或运行时环境收集的其他垃圾中的内存使用情况的系统和方法。如上文所描述的,用于管理程序控制来宾操作系统的当前技术大大地影响了在来宾操作系统内运行的虚拟机的性能。通过提供改进作为管理程序来宾运行的虚拟机或运行时环境收集的其他垃圾中的内存使用情况的系统和方法,本发明的实施例解决了此问题的。实施例是通过提供改进作为管理程序来宾运行的虚拟机或运行时环境收集的其他垃圾中的内存使用情况的系统和方法来解决此问题的。根据实施例,该系统用于响应来自管理程序的请求更改虚拟机的内存使用情况,包括:管理程序;在所述管理程序内执行的来宾操作系统;所述管理程序和所述来宾操作系统之间的通信信道;所述来宾操作系统中的气球驱动程序;用于执行软件应用的虚拟机;所述气球驱动程序和所述虚拟机之间的通信信道;供所述虚拟机用于作为所述软件应用的一部分存储软件对象和指针的内存空间或堆;以及,供所述虚拟机使用的压缩垃圾收集器。
图1显示了根据实施例的改进了在管理程序内作为来宾运行的虚拟机的内存使用情况的系统的说明。如图1所示,系统101包括服务器102,服务器102进一步包括计算机硬件103。该计算机硬件正在运行管理程序104。管理程序正在运行两个来宾操作系统105和106。每个操作系统都分别包含气球驱动程序107和108。管理程序分别使用信道109和110控制来宾操作系统的内存使用情况。
根据实施例,第一Java虚拟机111作为来宾操作系统105内的进程运行。当应用软件正在运行时,它利用Java堆112,Java堆112包含未使用的空闲内存113和包含活动Java对象的已使用的内存114。堆是由压缩垃圾收集器115收集的垃圾。压缩垃圾收集器在每一次垃圾收集时选择Java堆的一个区域,并将选定的Java对象移动到彼此靠近,以创建较大的未使用的内存。气球驱动程序107使用信道116控制JVM 111的内存使用情况。
根据实施例,具有其JVM 117的第二来宾操作系统106具有较小的Java堆118,Java堆118的未使用的空间119较多,而活动数据120较少。它还具有压缩垃圾收集器121。气球驱动程序108使用信道122控制操作系统JVM 117的内存使用情况。
图2显示了根据实施例的内存布局的示意图,显示了缩小堆大小之前和之后的Java堆。如图2所示,Java堆201包含随机地在堆上散布的多个Java对象202。根据实施例,Java堆被缩小,以便缩小的Java堆206包含相同的Java对象204,但是,这些对象都被移动得彼此更靠近,即,它们被压缩。这样便可以删除Java堆的末尾205。
图3显示了根据实施例的内存布局的示意图,显示了当两个OS/JVM来宾在管理程序内运行时的情况。如图3所示,管理程序RAM 301正在用于两个来宾OS/JVM,有Java堆302和303。Java堆还分别包含Java对象304和305。
图4显示了根据实施例的内存布局的示意图,显示了向管理程序内添加了第三或随后的OS/JVM来宾的情况。如图4所示,管理程序RAM 301包含两个原始来宾402和403。根据实施例,这些堆中的Java对象404和405被压缩,以便可以缩小406它们的大小,并利用新获取的内存407创建新的Java堆。然后,新的Java堆407可以供新的OS/JVM来宾使用,以存储Java对象408。
图5显示了根据实施例的流程图,显示了管理程序RAM的重新分配。如图5所示,根据实施例,进程从方框501开始,此时管理程序决定需要重新分配物理RAM。在方框502中,向不同的来宾发送调整大小的命令。在方框503中,来宾操作系统气球驱动程序检查操作系统的状态,以判断是否具有比较大的堆的JVM正在运行。如果是,那么,在方框504中,气球驱动程序向JVM发送调整大小的命令。如果JVM必须缩小堆的大小,那么,在方框505中,它使用压缩垃圾收集器来压缩堆,以能够缩小堆大小。如果JVM必须增大堆的大小,那么,它可以只是增大堆大小。JVM还向回报告此信息。在方框506中,气球驱动程序检查操作系统的新的状态。如果JVM调整大小的操作不能完全执行,那么,气球驱动程序可能必须以任何方式对气球进行充气,作为最终报告。在方框507中,当所有气球驱动程序和JVM都执行了它们的内存使用重新分配并向回报告时,管理程序内存重新分配完成。
如上文所描述的,Java堆的大小是十分灵活的。对于稍微大于活动数据的Java堆,垃圾收集执行得频繁,并且将会需要较大比例的可用CPU资源。通过增大Java堆的大小,将会立即降低垃圾收集执行的次数,并增强系统性能。利用如上文所描述的本发明的实施例,可以使用Java堆大小的灵活性以适应在单一管理程序内运行的多个JVM的需求。利用此实施例,当向同一个服务器中添加更多JVM时,可以实现适度退化。否则,一旦气球驱动程序强制来宾进行交换,JVM可能停止有效地运行。
根据另一个实施例,气球驱动程序可以使用气球驱动程序到虚拟机的通信信道来控制所述虚拟机的堆大小。
根据另一个实施例,管理程序可以在虚拟机堆之间均匀地或以指定的比例分割可用的物理RAM。
根据另一个实施例,管理程序可以为不同的虚拟机设置不同的堆大小,以保证符合服务层次的约束,这些约束对于每个虚拟机是不同的。
根据另一个实施例,操作系统可以是专门定制的,以只运行单一虚拟机,没有交换也没有其他用户进程。
可以通过使用常规的通用数字计算机或微处理器或根据本发明的原理编程的专门数字计算机或微处理器来方便地实现本发明。对于那些精通软件技术的人来说显而易见的是,可以由熟练的程序员基于本发明的原理轻松地编制适当的软件代码。
在某些实施例中,本发明包括计算机程序产品,该产品是其中存储了指令的存储介质,这些指令可以用来对计算机进行编程,以执行本发明的任何一个处理。存储介质可以包括但不仅限于任何类型的盘,包括软盘、光盘、DVD、CD-ROM、微驱动,以及磁光盘、ROM、RAM、EPROM、EEPROM、DRAM、VRAM、闪存设备、磁卡或光卡,纳米系统(包括分子内存IC),或适于存储指令和/或数据的任何类型的介质或设备。
前面的对本发明的描述只是为了说明和描述。它不意在成为详尽的说明或将本发明限于所说明的精确形式。那些精通本领域的专业人员将认识到,可以进行许多修改。具体来说,显然,尽管这里所描述的示例显示了这些特征可以如何用于JRockit环境中,但其他应用服务器、虚拟机、JVM、计算环境,以及软件开发系统也可以使用本发明并受益于本发明。给出的代码示例只是为了说明目的而呈现。显然,可以使用其他代码语言,并利用不同的代码来应用这里所描述的技术。
选择和描述实施例只是为了最好地解释本发明的原理以及其实际应用,并使精通本领域的其他技术人员懂得,带有适合于特定用途的各种修改的各种实施例的本发明也在考虑范围内。本发明的范围由下面的权利要求以及它们的等效物限定。
Claims (15)
1.一种改进作为管理程序来宾运行的虚拟机中的内存使用情况的系统,包括:
计算机硬件或机器;
在所述计算机硬件或机器上运行的管理程序;
作为所述管理程序内的来宾来运行的一个或多个来宾操作系统,其中,所述一个或多个来宾操作系统中的每一个都具有与其关联的:
气球驱动程序,
用于执行软件应用的虚拟机,
供所述虚拟机用于作为所述软件应用的一部分存储软件对象和指针的内存空间或堆,以及
供所述虚拟机用于对所述内存空间或堆内的软件对象进行垃圾收集的垃圾收集器;以及
其中,所述系统接收有关所述虚拟机对所述内存空间或堆的使用情况的信息,并使用所述气球驱动程序来控制所述压缩垃圾收集器的使用,并且管理对于供作为所述管理程序内的来宾运行的所述一个或多个来宾操作系统使用来说所必需的内存空间或堆的大小。
2.根据权利要求1所述的系统,进一步包括:
作为所述管理程序内的来宾来运行的多个来宾操作系统;
所述管理程序和作为所述管理程序内的来宾来运行的所述多个来宾操作系统中的每一个之间的通信信道;
对于作为所述管理程序内的来宾来运行的所述多个来宾操作系统中的每一个,该来宾操作系统中的所述气球驱动程序和与该来宾操作系统关联的或在该来宾操作系统上运行的虚拟机之间的通信信道;以及
其中,所述管理程序使用所述信道来管理所述多个来宾操作系统的内存空间或堆的大小。
3.根据权利要求1所述的系统,其中,所述气球驱动程序使用所述气球驱动程序到虚拟机的通信信道来控制所述虚拟机的堆的大小。
4.根据权利要求1所述的系统,其中,所述管理程序在所述虚拟机堆之间均匀地或以指定的份额分割可用的物理RAM。
5.根据权利要求1所述的系统,其中,所述管理程序可以为不同的虚拟机设置不同的堆大小以保证符合服务层次的约束,这些约束对于每一个虚拟机是不同的。
6.根据权利要求1所述的系统,其中,所述操作系统被专门定制成只运行单一虚拟机,没有交换也没有其他用户进程。
7.一种改进作为管理程序来宾运行的虚拟机中的内存使用情况的方法,包括下列步骤:
在计算机硬件或机器上运行管理程序;
提供作为所述管理程序内的来宾来运行的一个或多个来宾操作系统,其中,所述一个或多个来宾操作系统中的每一个都具有与其关联的:
气球驱动程序,
用于执行软件应用的虚拟机,
供所述虚拟机用于作为所述软件应用的一部分存储软件对象和指针的内存空间或堆,以及
供所述虚拟机用于对所述内存空间或堆内的软件对象进行垃圾收集的垃圾收集器;以及
接收有关所述虚拟机对所述内存空间或堆的使用情况的信息,并使用所述气球驱动程序来控制所述压缩垃圾收集器的使用,并且管理对于供作为所述管理程序内的来宾运行的所述一个或多个来宾操作系统使用来说所必需的内存空间或堆的大小。
8.根据权利要求7所述的方法,进一步包括:
提供作为所述管理程序内的来宾来运行的多个来宾操作系统;
在所述管理程序和作为所述管理程序内的来宾来运行的所述多个来宾操作系统中的每一个之间提供通信信道;
对于作为所述管理程序内的来宾来运行的所述多个来宾操作系统中的每一个,在该来宾操作系统中的所述气球驱动程序和与该来宾操作系统关联的或在该来宾操作系统上运行的虚拟机之间提供通信信道;以及
允许所述管理程序使用所述信道来管理所述多个来宾操作系统的内存空间或堆的大小。
9.根据权利要求7所述的方法,其中,所述气球驱动程序使用所述气球驱动程序到虚拟机的通信信道来控制所述虚拟机的堆的大小。
10.根据权利要求7所述的方法,其中,所述管理程序在所述虚拟机堆之间均匀地或以指定的份额分割可用的物理RAM。
11.根据权利要求7所述的方法,其中,所述管理程序可以为不同的虚拟机设置不同的堆大小以保证符合服务层次的约束,这些约束对于每一个虚拟机是不同的。
12.根据权利要求7所述的方法,其中,所述操作系统被专门定制成只运行单一虚拟机,没有交换也没有其他用户进程。
13.一种改进作为管理程序来宾运行的虚拟机中的内存使用情况的方法,包括下列步骤:
在计算机硬件或机器上运行管理程序;
提供作为所述管理程序内的来宾来运行的一个或多个来宾操作系统,其中,所述一个或多个来宾操作系统中的每一个都具有与其关联的:
气球驱动程序,
用于执行软件应用的虚拟机,
供所述虚拟机用于作为所述软件应用的一部分存储软件对象和指针的内存空间或堆,以及
供所述虚拟机用于对所述内存空间或堆内的软件对象进行垃圾收集的垃圾收集器;
由所述管理程序判断需要重新分配系统中的物理RAM;
向所述一个或多个来宾操作系统发送调整大小的命令;
在每一个来宾操作系统气球驱动程序中检查相应操作系统的状态,以判断是否具有大的堆的虚拟机正在运行;
如果具有大的堆的虚拟机正在运行,则向所述虚拟机发送调整大小的命令,而如果所述虚拟机必须缩小所述堆的大小,则允许所述虚拟机压缩所述堆,并向回报告此信息;以及
按需重新分配所述管理程序内存,直到每一个气球驱动程序和虚拟机都已经执行了任何必需的内存空间或堆重新分配并向回报告。
14.根据权利要求13所述的方法,其中,如果所述虚拟机必须增大所述堆的大小,则允许它增大所述堆的大小。
15.根据权利要求13所述的方法,其中,如果不能完全执行大小的缩小,则允许所述气球驱动程序对气球进行充气。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US97083407P | 2007-09-07 | 2007-09-07 | |
US60/970,834 | 2007-09-07 | ||
US12/205,467 | 2008-09-05 | ||
US12/205,467 US8156492B2 (en) | 2007-09-07 | 2008-09-05 | System and method to improve memory usage in virtual machines running as hypervisor guests |
PCT/US2008/075616 WO2009033166A1 (en) | 2007-09-07 | 2008-09-08 | System and method to improve memory usage in virtual machines running as hypervisor guests |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101971146A true CN101971146A (zh) | 2011-02-09 |
CN101971146B CN101971146B (zh) | 2013-11-27 |
Family
ID=40083688
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2008801060587A Active CN101971146B (zh) | 2007-09-07 | 2008-09-08 | 改进作为管理程序来宾而运行的虚拟机中内存使用情况的系统和方法 |
Country Status (4)
Country | Link |
---|---|
US (2) | US8156492B2 (zh) |
EP (1) | EP2195739B1 (zh) |
CN (1) | CN101971146B (zh) |
WO (1) | WO2009033166A1 (zh) |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103324516A (zh) * | 2013-07-04 | 2013-09-25 | 曙光信息产业(北京)有限公司 | 基于虚拟化驱动的硬件管理方法和装置 |
CN103430159A (zh) * | 2011-03-13 | 2013-12-04 | 国际商业机器公司 | 虚拟化计算环境中的动态内存管理 |
CN104094234A (zh) * | 2011-12-29 | 2014-10-08 | 甲骨文国际公司 | 用于嵌入过程通信的虚拟通道 |
CN104583979A (zh) * | 2012-09-27 | 2015-04-29 | 英特尔公司 | 动态物理存储器分区技术 |
CN104737138A (zh) * | 2012-10-08 | 2015-06-24 | 国际商业机器公司 | 用半虚拟化的管理程序提供全虚拟化的附属部件 |
CN105103144A (zh) * | 2013-03-15 | 2015-11-25 | 美光科技公司 | 用于存储器的自适应控制的设备及方法 |
WO2016041118A1 (en) * | 2014-09-15 | 2016-03-24 | Intel Corporation | Memory management in virtualized computing |
CN105808319A (zh) * | 2016-03-07 | 2016-07-27 | 华为技术有限公司 | 一种控制内存气球的方法、装置和系统 |
CN107168766A (zh) * | 2016-03-08 | 2017-09-15 | 深圳市深信服电子科技有限公司 | 虚拟机内存管理方法和装置、虚拟机管理器 |
CN109564514A (zh) * | 2016-06-30 | 2019-04-02 | 亚马逊科技公司 | 部分卸载的虚拟化管理器中的存储器分配技术 |
CN112579251A (zh) * | 2019-09-29 | 2021-03-30 | 华为技术有限公司 | 虚拟机内存管理的方法及设备 |
CN113448722A (zh) * | 2020-03-28 | 2021-09-28 | 阿里巴巴集团控股有限公司 | 进程内存的映射方法和基于无服务器架构的实例处理方法 |
US11429414B2 (en) | 2016-06-30 | 2022-08-30 | Amazon Technologies, Inc. | Virtual machine management using partially offloaded virtualization managers |
Families Citing this family (61)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100031270A1 (en) * | 2006-08-01 | 2010-02-04 | Gansha Wu | Heap manager for a multitasking virtual machine |
US8949295B2 (en) * | 2006-09-21 | 2015-02-03 | Vmware, Inc. | Cooperative memory resource management via application-level balloon |
US8156492B2 (en) * | 2007-09-07 | 2012-04-10 | Oracle International Corporation | System and method to improve memory usage in virtual machines running as hypervisor guests |
JP5526784B2 (ja) * | 2007-12-26 | 2014-06-18 | 日本電気株式会社 | 縮退構成設計システムおよび方法 |
US8527466B2 (en) * | 2009-05-31 | 2013-09-03 | Red Hat Israel, Ltd. | Handling temporary files of a virtual machine |
US8943498B2 (en) * | 2009-05-31 | 2015-01-27 | Red Hat Israel, Ltd. | Method and apparatus for swapping virtual machine memory |
EP2449469B1 (en) * | 2009-06-29 | 2019-04-03 | Hewlett-Packard Enterprise Development LP | Hypervisor-based management of local and remote virtual memory pages |
US9740533B2 (en) * | 2009-08-03 | 2017-08-22 | Oracle International Corporation | Altruistic dependable memory overcommit for virtual machines |
US8261269B2 (en) * | 2009-09-21 | 2012-09-04 | Oracle International Corporation | System and method for synchronizing transient resource usage between virtual machines in a hypervisor environment |
EP2483778B1 (en) * | 2009-09-30 | 2019-09-04 | Citrix Systems, Inc. | Dynamic reallocation of physical memory responsive to virtual machine events |
KR101640769B1 (ko) * | 2009-11-06 | 2016-07-19 | 삼성전자주식회사 | 가상화 시스템 및 그것의 명령어 실행 방법 |
US8365020B2 (en) | 2010-03-18 | 2013-01-29 | Red Hat Israel, Ltd. | Mechanism for saving crash dump files of a virtual machine on a designated disk |
US8793439B2 (en) * | 2010-03-18 | 2014-07-29 | Oracle International Corporation | Accelerating memory operations using virtualization information |
US8583875B1 (en) | 2010-07-13 | 2013-11-12 | Vmware, Inc. | Efficient readable ballooning of guest memory by backing balloon pages with a shared page |
CN102236603B (zh) | 2010-04-29 | 2014-12-17 | 国际商业机器公司 | 虚拟化环境中垃圾回收的方法和系统 |
US8812400B2 (en) | 2010-07-09 | 2014-08-19 | Hewlett-Packard Development Company, L.P. | Managing a memory segment using a memory virtual appliance |
CN101894049A (zh) * | 2010-07-14 | 2010-11-24 | 中兴通讯股份有限公司 | 一种自适应回收垃圾对象的系统及方法 |
US8850156B2 (en) | 2010-11-03 | 2014-09-30 | Huawei Technologies Co., Ltd. | Method and system for managing virtual machine storage space and physical host |
CN101986285B (zh) * | 2010-11-03 | 2012-09-19 | 华为技术有限公司 | 虚拟机存储空间管理方法、系统及物理主机 |
JP5633440B2 (ja) * | 2011-03-17 | 2014-12-03 | 富士通株式会社 | 情報処理装置、電力制御方法及び電力制御プログラム |
US8904384B2 (en) * | 2011-06-14 | 2014-12-02 | Lenovo Enterprise Solutions (Singapore) Pte. Ltd. | Reducing data transfer overhead during live migration of a virtual machine |
US9191454B2 (en) | 2011-06-27 | 2015-11-17 | Microsoft Technology Licensing, Llc | Host enabled management channel |
US9176787B2 (en) * | 2011-08-18 | 2015-11-03 | Lenovo Enterprise Solutions (Singapore) Pte. Ltd. | Preserving, from resource management adjustment, portions of an overcommitted resource managed by a hypervisor |
US9804870B2 (en) | 2011-10-28 | 2017-10-31 | Intel Corporation | Instruction-set support for invocation of VMM-configured services without VMM intervention |
US8631408B2 (en) * | 2011-11-30 | 2014-01-14 | Red Hat, Inc. | Configuring parameters of a guest operating system based on detected events |
US10310878B2 (en) * | 2011-12-16 | 2019-06-04 | Vmware, Inc. | Execution of an application in a runtime environment installed in a virtual appliance |
US9311250B2 (en) | 2011-12-19 | 2016-04-12 | Intel Corporation | Techniques for memory de-duplication in a virtual system |
KR101679487B1 (ko) * | 2012-01-25 | 2016-11-24 | 엠파이어 테크놀로지 디벨롭먼트 엘엘씨 | 사용자 생성 데이터 센터 전력 절감 |
US9501224B2 (en) | 2012-04-03 | 2016-11-22 | Goolge Inc. | Method and system for memory oversubscription for virtual machines |
US10152409B2 (en) | 2012-04-30 | 2018-12-11 | Vmware, Inc. | Hybrid in-heap out-of-heap ballooning for java virtual machines |
US9852054B2 (en) | 2012-04-30 | 2017-12-26 | Vmware, Inc. | Elastic caching for Java virtual machines |
US9311119B2 (en) * | 2012-05-30 | 2016-04-12 | Red Hat, Inc. | Reconfiguring virtual machines |
US9015203B2 (en) * | 2012-05-31 | 2015-04-21 | Vmware, Inc. | Balloon object feedback for Java Virtual Machines |
CN102722447B (zh) * | 2012-06-06 | 2015-01-14 | 北京航空航天大学 | 一种内存垃圾收集器中对象状态的增量式跟踪记录方法 |
US9940228B2 (en) | 2012-06-14 | 2018-04-10 | Vmware, Inc. | Proactive memory reclamation for java virtual machines |
CN102779074B (zh) * | 2012-06-18 | 2015-04-08 | 中国人民解放军国防科学技术大学 | 基于内存空洞机制的虚拟机内存资源分配方法 |
US9952909B2 (en) * | 2012-06-20 | 2018-04-24 | Paypal, Inc. | Multiple service classes in a shared cloud |
US9753846B2 (en) * | 2012-09-06 | 2017-09-05 | Red Hat, Inc. | Adjusting the operating memory used by a virtual machine during runtime |
US9355032B2 (en) | 2012-10-08 | 2016-05-31 | International Business Machines Corporation | Supporting multiple types of guests by a hypervisor |
US9280488B2 (en) | 2012-10-08 | 2016-03-08 | International Business Machines Corporation | Asymmetric co-existent address translation structure formats |
US9348757B2 (en) | 2012-10-08 | 2016-05-24 | International Business Machines Corporation | System supporting multiple partitions with differing translation formats |
US9740624B2 (en) | 2012-10-08 | 2017-08-22 | International Business Machines Corporation | Selectable address translation mechanisms within a partition |
US9600419B2 (en) | 2012-10-08 | 2017-03-21 | International Business Machines Corporation | Selectable address translation mechanisms |
US9311236B2 (en) | 2012-11-20 | 2016-04-12 | International Business Machines Corporation | Out-of-memory avoidance in dynamic virtual machine memory adjustment |
US9256469B2 (en) | 2013-01-10 | 2016-02-09 | International Business Machines Corporation | System and method for improving memory usage in virtual machines |
US9495395B2 (en) * | 2013-04-11 | 2016-11-15 | Oracle International Corporation | Predictive diagnosis of SLA violations in cloud services by seasonal trending and forecasting with thread intensity analytics |
US10740358B2 (en) | 2013-04-11 | 2020-08-11 | Oracle International Corporation | Knowledge-intensive data processing system |
US9645923B1 (en) * | 2013-09-10 | 2017-05-09 | Google Inc. | Generational garbage collector on multiple heaps |
US9183035B2 (en) | 2013-11-08 | 2015-11-10 | International Business Machines Corporation | Virtual machine migration with swap pages |
WO2015132753A1 (en) * | 2014-03-07 | 2015-09-11 | Eco4Cloud S.R.L. | Method for memory management in virtual machines, and corresponding system and computer program product |
US9678868B2 (en) | 2014-10-31 | 2017-06-13 | Xiaomi Inc. | Method and device for optimizing memory |
CN104407924B (zh) * | 2014-10-31 | 2017-11-21 | 小米科技有限责任公司 | 内存优化方法及装置 |
US9946573B2 (en) * | 2015-05-20 | 2018-04-17 | Oracle International Corporation | Optimizing virtual machine memory sizing for cloud-scale application deployments |
US10248561B2 (en) | 2015-06-18 | 2019-04-02 | Oracle International Corporation | Stateless detection of out-of-memory events in virtual machines |
US9720722B2 (en) | 2015-09-03 | 2017-08-01 | Red Hat Israel, Ltd. | Hypervisor driven gradual balloon inflation |
US9992238B2 (en) | 2015-11-11 | 2018-06-05 | International Business Machines Corporation | Proxy based data transfer utilizing direct memory access |
US9880740B2 (en) * | 2015-12-17 | 2018-01-30 | Vmware, Inc. | Rapid virtual machine power-on with iterative swap space reservation |
US10417111B2 (en) | 2016-05-09 | 2019-09-17 | Oracle International Corporation | Correlation of stack segment intensity in emergent relationships |
US10296363B2 (en) * | 2016-09-16 | 2019-05-21 | Oracle International Corporation | Tuning a virtual machine startup parameter |
US10628307B2 (en) | 2017-05-08 | 2020-04-21 | International Business Machines Corporation | Coordinating heap contraction of multiple runtimes in the cloud environment |
US10474509B1 (en) * | 2018-10-17 | 2019-11-12 | Fmr Llc | Computing resource monitoring and alerting system |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1490724A (zh) * | 2002-10-18 | 2004-04-21 | 上海贝尔有限公司 | 一种用于嵌入式系统软件开发的虚拟机装置 |
CN1527206A (zh) * | 2003-03-03 | 2004-09-08 | 华为技术有限公司 | 一种内存池管理的方法 |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6286016B1 (en) * | 1998-06-09 | 2001-09-04 | Sun Microsystems, Inc. | Incremental heap expansion in a real-time garbage collector |
US6854115B1 (en) * | 2000-06-02 | 2005-02-08 | Sun Microsystems, Inc. | Process persistence in a virtual machine |
US6763440B1 (en) * | 2000-06-02 | 2004-07-13 | Sun Microsystems, Inc. | Garbage collection using nursery regions for new objects in a virtual heap |
US6760815B1 (en) * | 2000-06-02 | 2004-07-06 | Sun Microsystems, Inc. | Caching mechanism for a virtual heap |
US6971097B1 (en) * | 2000-06-09 | 2005-11-29 | Sun Microsystems, Inc. | Method and apparatus for implementing concurrently running jobs on an extended virtual machine using different heaps managers |
US7433951B1 (en) * | 2000-09-22 | 2008-10-07 | Vmware, Inc. | System and method for controlling resource revocation in a multi-guest computer system |
US7174354B2 (en) * | 2002-07-31 | 2007-02-06 | Bea Systems, Inc. | System and method for garbage collection in a computer system, which uses reinforcement learning to adjust the allocation of memory space, calculate a reward, and use the reward to determine further actions to be taken on the memory space |
US7340493B2 (en) * | 2003-07-02 | 2008-03-04 | International Business Machines Corporation | System and method for reducing memory leaks in virtual machine programs |
US7089273B2 (en) * | 2003-08-01 | 2006-08-08 | Intel Corporation | Method and apparatus for improving the performance of garbage collection using stack trace cache |
US7197521B2 (en) * | 2003-11-21 | 2007-03-27 | Intel Corporation | Method and system performing concurrently mark-sweep garbage collection invoking garbage collection thread to track and mark live objects in heap block using bit vector |
US7302515B1 (en) * | 2004-03-12 | 2007-11-27 | Sun Microsystems, Inc. | Exploiting popular objects to reduce mutator overhead |
US7788461B2 (en) * | 2004-04-15 | 2010-08-31 | International Business Machines Corporation | System and method for reclaiming allocated memory to reduce power in a data processing system |
US7953773B2 (en) * | 2005-07-15 | 2011-05-31 | Oracle International Corporation | System and method for deterministic garbage collection in a virtual machine environment |
US7925850B1 (en) * | 2007-02-16 | 2011-04-12 | Vmware, Inc. | Page signature disambiguation for increasing the efficiency of virtual machine migration in shared-page virtualized computer systems |
US8032897B2 (en) * | 2007-07-31 | 2011-10-04 | Globalfoundries Inc. | Placing virtual machine monitor (VMM) code in guest context to speed memory mapped input/output virtualization |
US8156492B2 (en) * | 2007-09-07 | 2012-04-10 | Oracle International Corporation | System and method to improve memory usage in virtual machines running as hypervisor guests |
-
2008
- 2008-09-05 US US12/205,467 patent/US8156492B2/en active Active
- 2008-09-08 CN CN2008801060587A patent/CN101971146B/zh active Active
- 2008-09-08 EP EP08829577.9A patent/EP2195739B1/en active Active
- 2008-09-08 WO PCT/US2008/075616 patent/WO2009033166A1/en active Application Filing
-
2012
- 2012-03-28 US US13/432,266 patent/US8959512B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1490724A (zh) * | 2002-10-18 | 2004-04-21 | 上海贝尔有限公司 | 一种用于嵌入式系统软件开发的虚拟机装置 |
CN1527206A (zh) * | 2003-03-03 | 2004-09-08 | 华为技术有限公司 | 一种内存池管理的方法 |
Cited By (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103430159A (zh) * | 2011-03-13 | 2013-12-04 | 国际商业机器公司 | 虚拟化计算环境中的动态内存管理 |
CN103430159B (zh) * | 2011-03-13 | 2016-08-10 | 国际商业机器公司 | 虚拟化计算环境中的动态内存管理 |
CN104094234A (zh) * | 2011-12-29 | 2014-10-08 | 甲骨文国际公司 | 用于嵌入过程通信的虚拟通道 |
CN104094234B (zh) * | 2011-12-29 | 2018-10-02 | 甲骨文国际公司 | 便利原生实体与虚拟机间通信的方法、系统及存储介质 |
CN104583979B (zh) * | 2012-09-27 | 2017-10-24 | 英特尔公司 | 动态物理存储器分区技术 |
CN104583979A (zh) * | 2012-09-27 | 2015-04-29 | 英特尔公司 | 动态物理存储器分区技术 |
CN104737138A (zh) * | 2012-10-08 | 2015-06-24 | 国际商业机器公司 | 用半虚拟化的管理程序提供全虚拟化的附属部件 |
CN104737138B (zh) * | 2012-10-08 | 2018-01-12 | 国际商业机器公司 | 用半虚拟化的管理程序提供全虚拟化的附属部件 |
CN105103144A (zh) * | 2013-03-15 | 2015-11-25 | 美光科技公司 | 用于存储器的自适应控制的设备及方法 |
CN105103144B (zh) * | 2013-03-15 | 2018-06-12 | 美光科技公司 | 用于存储器的自适应控制的设备及方法 |
CN103324516A (zh) * | 2013-07-04 | 2013-09-25 | 曙光信息产业(北京)有限公司 | 基于虚拟化驱动的硬件管理方法和装置 |
CN103324516B (zh) * | 2013-07-04 | 2017-02-08 | 曙光信息产业(北京)有限公司 | 基于虚拟化驱动的硬件管理方法和装置 |
WO2016041118A1 (en) * | 2014-09-15 | 2016-03-24 | Intel Corporation | Memory management in virtualized computing |
CN106663051A (zh) * | 2014-09-15 | 2017-05-10 | 英特尔公司 | 虚拟化计算中的存储器管理 |
CN105808319A (zh) * | 2016-03-07 | 2016-07-27 | 华为技术有限公司 | 一种控制内存气球的方法、装置和系统 |
CN105808319B (zh) * | 2016-03-07 | 2020-01-10 | 华为技术有限公司 | 一种控制内存气球的方法、装置和系统 |
CN107168766A (zh) * | 2016-03-08 | 2017-09-15 | 深圳市深信服电子科技有限公司 | 虚拟机内存管理方法和装置、虚拟机管理器 |
CN107168766B (zh) * | 2016-03-08 | 2020-02-28 | 深信服科技股份有限公司 | 虚拟机内存管理方法和装置、虚拟机管理器 |
CN109564514A (zh) * | 2016-06-30 | 2019-04-02 | 亚马逊科技公司 | 部分卸载的虚拟化管理器中的存储器分配技术 |
CN109564514B (zh) * | 2016-06-30 | 2022-04-08 | 亚马逊科技公司 | 用于部分卸载的虚拟化管理器处的存储器分配的方法和系统 |
US11429414B2 (en) | 2016-06-30 | 2022-08-30 | Amazon Technologies, Inc. | Virtual machine management using partially offloaded virtualization managers |
CN112579251A (zh) * | 2019-09-29 | 2021-03-30 | 华为技术有限公司 | 虚拟机内存管理的方法及设备 |
CN112579251B (zh) * | 2019-09-29 | 2024-04-23 | 华为技术有限公司 | 虚拟机内存管理的方法及设备 |
CN113448722A (zh) * | 2020-03-28 | 2021-09-28 | 阿里巴巴集团控股有限公司 | 进程内存的映射方法和基于无服务器架构的实例处理方法 |
CN113448722B (zh) * | 2020-03-28 | 2024-11-29 | 阿里巴巴集团控股有限公司 | 进程内存的映射方法和基于无服务器架构的实例处理方法 |
Also Published As
Publication number | Publication date |
---|---|
US20090070776A1 (en) | 2009-03-12 |
US20120185854A1 (en) | 2012-07-19 |
CN101971146B (zh) | 2013-11-27 |
EP2195739A1 (en) | 2010-06-16 |
US8959512B2 (en) | 2015-02-17 |
EP2195739B1 (en) | 2018-04-18 |
WO2009033166A1 (en) | 2009-03-12 |
US8156492B2 (en) | 2012-04-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101971146A (zh) | 改进作为管理程序来宾而运行的虚拟机中内存使用情况的系统和方法 | |
CN108459898B (zh) | 一种资源回收方法及装置 | |
US9213562B2 (en) | Garbage collection safepoint system using non-blocking asynchronous I/O call to copy data when the garbage collection safepoint is not in progress or is completed | |
US10310971B2 (en) | Method and apparatus for processing memory page in memory | |
WO2008043197A1 (en) | Dynamically changing a garbage collector in a managed runtime system | |
US20100031270A1 (en) | Heap manager for a multitasking virtual machine | |
CN102693188B (zh) | 用于在可控运行时环境中进行基于硬件的动态逸出检测的方法和装置 | |
CN100447744C (zh) | 堆栈管理系统及方法 | |
US20100088675A1 (en) | System and method of using pooled thread-local character arrays | |
US8930732B2 (en) | Fast speed computer system power-on and power-off method | |
US7822938B2 (en) | System and method for performing garbage collection based on unmanaged memory allocations | |
CN110291508A (zh) | 垃圾收集器 | |
CN106445691A (zh) | 一种面向虚拟化云计算平台的内存优化的方法 | |
US8782306B2 (en) | Low-contention update buffer queuing for large systems | |
CN102270134B (zh) | 一种Java卡中垃圾回收的方法及装置 | |
US6829686B2 (en) | Method and apparatus for bag-to-set, buffering remembered set | |
US20120221821A1 (en) | Method of managing memory in computer system, computer system and memory managing program | |
US20060059323A1 (en) | Physical memory control using memory classes | |
WO2024222605A1 (zh) | 内存管理方法、装置、电子设备及可读存储介质 | |
Oestreicher et al. | Object lifetimes in Java card | |
US20080034022A1 (en) | System and method for updating references when incrementally compacting a heap | |
US7925841B2 (en) | Managing shared memory usage within a memory resource group infrastructure | |
CN103729249A (zh) | 虚拟机的存储器管理的方法和计算机系统 | |
EP3620912B1 (en) | Deserialization method, apparatus, and computing device | |
CN116339965A (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 |