CN103838633A - 在动态虚拟机存储器调整中避免内存不足 - Google Patents
在动态虚拟机存储器调整中避免内存不足 Download PDFInfo
- Publication number
- CN103838633A CN103838633A CN201310585908.9A CN201310585908A CN103838633A CN 103838633 A CN103838633 A CN 103838633A CN 201310585908 A CN201310585908 A CN 201310585908A CN 103838633 A CN103838633 A CN 103838633A
- Authority
- CN
- China
- Prior art keywords
- heap
- largest amount
- adjustment
- storer
- 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
Links
Images
Classifications
-
- 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
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
-
- 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
-
- 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
-
- 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
- G06F12/0269—Incremental or concurrent garbage collection, e.g. in real-time systems
-
- 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/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0615—Address space extension
-
- 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/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0646—Configuration or reconfiguration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0608—Saving storage space on storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0626—Reducing size or complexity of storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0631—Configuration or reconfiguration of storage systems by allocating resources to storage systems
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Memory System (AREA)
Abstract
本发明涉及在动态虚拟机存储器调整中避免内存不足。检测相对于与应用存储器的存储器堆相关联的调整的堆最大大小的未使用空闲存储器不足。调整的堆最大大小被设置为小于最大堆分配大小的堆大小。计算解决所述未使用空闲存储器不足的对所述调整的堆最大大小的增大量。将所述调整的堆最大大小增大所计算出的对所述调整的堆最大大小的增大量。
Description
技术领域
本发明涉及虚拟机工作集存储器空间。更具体而言,本发明涉及在动态虚拟机存储器调整中避免内存不足(out-of-memory)。
背景技术
虚拟机可以在硬件平台上执行,所述硬件平台允许虚拟机就好像虚拟机是硬件计算设备一样地执行程序/进程。硬件平台可以允许多个单独的虚拟机共存。每一个虚拟机都可以具有其自己的存储器空间、操作系统实例、以及资源集,或可以共享某些资源。
发明内容
一种方法包括:通过处理器,检测相对于与应用程序存储器分配的存储器堆(heap)相关联的调整的堆最大大小的未使用空闲存储器不足,其中,调整的堆最大大小被设置为小于最大堆分配大小的堆大小;计算解决所述未使用空闲存储器不足的对所述调整的堆最大大小的增大量;以及将所述调整的堆最大大小增大所述计算出的对所述调整的堆最大大小的增大量。
一种系统包括存储器以及被编程为执行下列操作的处理器:检测相对于与存储器内的应用程序存储器分配的存储器堆相关联的调整的堆最大大小的未使用空闲存储器不足,其中,调整的堆最大大小被设置为小于最大堆分配大小的堆大小;计算解决所述未使用空闲存储器不足的对所述调整的堆最大大小的增大量;以及将所述调整的堆最大大小增大所述计算出的对所述调整的堆最大大小的增大量。
一种计算机程序产品包括实现有计算机可读程序代码的计算机可读存储介质,其中,计算机可读程序代码当在计算机上执行时使计算机:检测相对于与应用程序存储器分配的存储器堆相关联的调整的堆最大大小的未使用空闲存储器不足,其中,调整的堆最大大小被设置为小于最大堆分配大小的堆大小;计算解决所述未使用空闲存储器不足的对所述调整的堆最大大小的增大量;以及将所述调整的堆最大大小增大所述计算出的对所述调整的堆最大大小的增大量。
附图说明
图1是根据本主题的一实施例的用于在动态虚拟机存储器调整中避免内存不足的系统的实现的示例的框图;
图2是根据本主题的一实施例的在动态虚拟机存储器调整中能够执行内存不足避免的核处理模块的实现的示例的框图;
图3是根据本主题的一实施例的用于在动态虚拟机存储器调整中避免内存不足的消息流的实现的示例的消息流图示;
图4是根据本主题的一实施例的用于在动态虚拟机存储器调整中避免内存不足的过程的实现的示例的流程图;
图5A是根据本主题的一实施例的用于在动态虚拟机存储器调整中避免内存不足的过程内的初始处理的实现的示例的流程图;以及
图5B是根据本主题的一实施例的用于在动态虚拟机存储器调整中避免内存不足的过程内的另外的处理的实现的示例的流程图。
具体实施方式
下面阐述的示例表示使本领域技术人员能实施本发明的必要信息,并示出了实施本发明的最佳模式。在参考附图阅读下面的描述之后,所属领域的技术人员将理解本发明的概念,并将认识到此处没有特别阐明的这些概念的应用。应该理解,这些概念和应用落在本公开和附带的权利要求的范围内。
本文描述的主题提供在动态虚拟机存储器调整中避免内存不足。本技术在虚拟机和垃圾回收器之间提供协作交互,以使虚拟机可以在不需要时使用较少的操作系统(OS)存储器,而不会在需要更多存储器时阻止虚拟机使用更多存储器。为实现本技术,添加了回调例程,当内存不足(out-of-memory,OOM)错误即将发生或已经发生时,由垃圾回收器(GC)触发该回调例程。回调例程可以通过内存不足处理程序进程/模块来实现。响应于判断内存不足(OOM)状况即将发生(或已经发生),垃圾回收器调用回调例程,表示OOM状况即将来临。当回调例程被调用时,确定使应用程序继续运行所需的存储器的量。可以执行处理以确定修改工作集的最大大小所需的增大的存储器的量(增大的工作集大小调整)。回调例程的调用可以可任选地包括分配所需的存储器的量,可以通过对回调本身的分析来执行工作集的确定的增大的大小调整。通过回调内存不足处理程序,添加可用存储器,用于应用程序执行。取决于用来调整可用堆存储器的技术,回调的内存不足处理程序将调整的最大大小向上移动确定的量,或者给消耗堆空间的气球放气达确定的量,以增加可用存储器供应用程序执行。然后,回调的内存不足处理程序被允许请求重试存储器分配。可以使用回调例程的返回值来允许处理回调的进程请求GC响应于对虚拟机的分配的最大存储器的调整而重试分配尝试。如此,在对可用于虚拟机分配给应用程序的堆存储器的动态调整的上下文中,可以避免内存不足状况。
本技术修改虚拟机以提供在动态虚拟机存储器调整中避免内存不足状况的确定性和实时动态处理能力。使用本技术,更新虚拟机,以便系统处理肯定地知道调整的最大值何时将导致OOM状况,肯定地知道满足分配需要多少存储器以便将调整的最大值增大最佳量,并且在完成工作集大小调整之后允许重试尝试的分配。
可以执行另外的处理以检测GC压力以及改变调整的最大值以减轻此压力。例如,即使GC使用的调整的最大值不导致OOM状况,它可能在GC上导致压力,该压力导致虚拟机以比别的方式可能的效率更低的效率操作。对本技术的扩展允许GC提供表示GC“处于压力下”的第二回调,此处定义为必须努力工作并消耗资源,因为可用的堆存储器低。再次,取决于用来调整可用堆存储器的技术,此第二回调的内存不足处理程序可以向上修改调整的最大值,或者给消耗堆存储器的气球放气达合适的量,以减轻压力。如此,可以通过使用此第二回调来进一步提高效率。
出于本说明的目的,短语“工作集”是指对于虚拟机或进程可用的存储器资源,具体来说,是指进程实际消耗的存储器。例如,如果一个存储器页面最近没有被使用,操作系统(OS)可以将该存储器页面的内容写入到磁盘。尽管这样的存储器页面在进程的虚拟地址空间内,将此存储器页面存储到磁盘不再消耗当前存储器空间内的物理存储器,如此,将不能被视为工作集的一部分。相比之下,最近已经被接触/访问的并已经加载到存储器中的存储器页面被视为进程的工作集的一部分。
应该注意,本主题的概念是由与虚拟机工作集相关联的某些限制的认识产生的。例如,观察到,诸如JavaTM虚拟机()的传统虚拟机允许堆随着存储器需求增大而扩展和增长。还观察到,此形式的存储器消耗的结果是,随着时间的推移,为虚拟机中的对象堆分配的操作系统(OS)存储器趋向于当虚拟机启动时允许的最大值,尽管虚拟机可能只对于定义的时间间隔(例如,在上午9:00-10:00之间,当用户传统上登录到特定应用程序时)需要最大值。结果,确定了常规虚拟机的这样的行为防止对于JavaTM编程语言应用程序的存储器过度提供,因为当不再需要时过度提供的存储器将不能为其他用途而释放。另外还观察到,严重虚拟化的计算环境(诸如云计算环境)被设计成通过最大化可以每硬件单元运行的应用程序的密度来实现成本节省,这样的处理通过消除空闲的机器来提高硬件的利用率和能效。然而,另外还观察到,常规虚拟机不被配置成识别和利用这些虚拟化环境。例如,确定了由于虚拟化的环境基于并非所有的访客都将同时需要它们的最大资源分配的知识,使用过度提供,将资源消耗到它们的最大潜在分配的常规虚拟机不适于虚拟化的环境。如此,确定了为了最大化高度虚拟化的环境中的应用程序密度,必须重新设计虚拟机,以减少消耗的资源占用空间。进一步确定,虚拟机必须被重新配置适应于改变的资源分配,以跨多个虚拟机实例来共享更多资源,并且利用系统管理程序(hypervisor)特定的功能,诸如快速的访客-访客网络结构。
另外还观察到,尽管尝试了用于收缩堆大小的某些解决方案,诸如向下可调节的存储器最大值或消耗堆的可充气气球,如果虚拟机的收缩的可用存储器大小设置得太低,这些解决方案仍可能会导致内存不足(OOM)状况。例如,确定了,如果应用程序需要比已经设置的调整的最大值更多的存储器,则将垃圾回收(GC)使用的最大存储器设置为小于原始最大值可能会导致OOM错误。如此,另外还确定了,还需要避免OOM状况并从将可用存储器大小收缩到太低的级别恢复的解决方案。本主题通过在动态虚拟机存储器调整中提供内存不足避免,改善虚拟机存储器可用性调整,如上文和下面更详细地描述的。使用本技术,虚拟机可以与垃圾回收器和存储器收缩管理组件协调以识别即将来临的OOM状况,并且在发生实际OOM状况之前可以倒转先前的存储器收缩。如此,可以通过在本文所描述的动态虚拟机存储器调整中使用内存不足避免,获得改善的虚拟存储器工作集调整。
尽管本描述为本文所描述的示例的目的使用上文所描述的回调实现,但是,存在用于动态虚拟机存储器调整中的内存不足避免的另外的替代方案。这些替代方案包括,例如,当在一个操作系统(OS)中运行多个虚拟机时,或当在虚拟化环境中的多个访客中运行多个虚拟机时,避免JavaTM编程语言应用程序的存储器过度交托(commit)。利用此实现,可以考虑过度交托避免而提供更多总的存储器。作为另一个替代方案,可以使用堆使用监测和启发式法来确定何时将可用堆从减少级别往回向当给定应用程序启动时最初提供的最大工作集调整。一个可能的监测实现可以包括判断堆所使用的存储器是否正在增长,尽管堆已经在新设置的调整的最大值之上(在调整的最大值可以被设置为小于当前堆大小的级别的情况下,将是这样)。另一个可能的监测实现包括判断当在堆中几乎没有空闲空间时是否有繁重的垃圾回收(GC)活动。此技术可以使用关于是否有涉及即将来临的OOM状况的问题的概率,可以使用额外的时间来识别是否有实际OOM问题。如此,在这样的情况下,可能仍会发生OOM状况。另外,这样的实现可以通过提供可用的堆大小的次最佳的调整,而更保守。如此,本文所描述的示例使用上文所描述的回调实现,在动态虚拟机存储器调整中提供高效且有效的实时内存不足避免。然而,应该理解,对于给定实现,视情况而定,此处的描述可以被修改或与上文所描述的替代方案相结合。
本文所描述的动态虚拟机存储器调整中的内存不足避免可以实时地执行,以允许对虚拟机的动态工作集大小迅速调整,同时避免OOM状况。出于本描述的目的,实时应该包括充分短的时长的任何时间帧,以便提供所描述的主题的用户可以接受的用于信息处理的合理响应时间。另外,术语“实时”还将包括常常被称为“近乎实时”的东西——一般是指充分短的时长的任何时间帧,以便提供所描述的主题的用户可以接受的用于按需信息处理的合理响应时间(例如,在一秒的部分内或在几秒内)。这些术语,尽管难以准确地定义,但很好地被所属领域的技术人员理解。
图1是用于在动态虚拟机存储器调整中避免内存不足的系统100的实现的示例的框图。计算设备_1 102到计算设备_N 104通过网络106与多个其他设备进行通信。其他设备包括服务器_1 108到服务器_M 110。
如下文与图2到图5B相关联地更详细地描述的,计算设备_1102到计算设备_N 104和服务器_1 108到服务器_M 110可以各自在动态虚拟机存储器调整中提供自动的内存不足避免。动态虚拟机存储器调整中的自动的内存不足避免基于对即将来临的潜在OOM状况的编程识别以及增大工作集内的可用存储器的干预以避免OOM状况。如上文所描述的,存在本主题的实现的各种可能性,而所有这样的可能性都被视为在本主题的范围内。
应该注意,与图1相关联地描述的相应计算设备中的任何一个可以是便携式计算设备,要么通过用户的将相应计算设备移动到不同的位置的能力,要么通过相应计算设备的与便携式平台(诸如飞机、火车、汽车,或其他移动交通工具)的关联。还应注意,相应的计算设备可以是如上文和下面更详细地描述的能够处理信息的任何计算设备。例如,相应的计算设备可以包括诸如个人计算机(例如,台式机、膝上型计算机等)或手持式设备(例如,蜂窝电话、个人数字助理(PDA)、电子邮件设备、音乐录制或播放设备、平板计算设备、电子书阅读设备等)、web服务器、应用服务器,或其他数据服务器设备的设备,或如上文和下面更详细地描述的能够处理信息的任何其他设备。
网络106可以包括适于预计的用途的任何形式的互连,包括专用或公共网络,诸如内联网或因特网、直接模块间互连、拨号、无线、或能够互连相应的设备的任何其他互连机制。
服务器_1 108到服务器_M 110可以包括能够通过诸如网络106的网络提供供诸如计算设备_1 102到计算设备_N 104的设备消耗的数据的任何设备。如此,服务器_1 108到服务器_M 110可以各自包括web服务器、应用服务器、或其他数据服务器设备。
图2是在动态虚拟机存储器调整中能够执行内存不足避免的核处理模块200的实现的示例的框图。对于给定实现,视情况而定,核处理模块200可以与计算设备_1 102到计算设备_N 104或者与服务器_1108到服务器_M 110相关联。如此,此处一般性地描述了核处理模块200,但是应该理解,核处理模块200内的组件的实现的许多变形是可以的,所有这样的变形都在本主题的范围内。
此外,核处理模块200可以提供与每一个实现相关联的不同的和互补的处理。如此,对于下面的示例中的任何一个,应该理解,参考结合另一设备描述的任何一个设备所描述的功能的任何一方面(例如,发送等)要被理解为同时描述该另一相应的设备的功能(例如,接收等)。
中央处理单元(CPU)202提供计算机指令执行、计算,及核处理模块200内的其他能力。显示器204向核处理模块200的用户提供可视信息,输入设备206为用户提供了输入能力。
显示器204可以包括任何显示设备,诸如阴极射线管(CRT)、液晶显示器(LCD)、发光二极管(LED)、电子墨水显示器、投影、触摸屏,或其他显示元件或面板。输入设备206可以包括计算机键盘、小键盘、鼠标、笔、游戏杆、触摸屏,或用户可以用来与显示器204交互并对显示器204上的信息作出响应的任何其他类型的输入设备。
应该注意,显示器204和输入设备206对于某些实现/设备,可以是核处理模块200的可选组件。相应地,核处理模块200可以作为完全自动的嵌入设备来操作,没有直接用户可配置性或反馈。然而,核处理模块200还可对于给定实现,视情况分别通过显示器204和输入设备206来提供用户反馈和可配置性。
通信模块208提供使核处理模块200可与系统100内的其他模块进行通信的互连能力。对于给定实现,通信模块208可以包括可用来提供适合的互连能力的任何电的、协议的以及协议转换能力。
存储器210包括虚拟机执行区域212,该区域212在核处理模块200内提供虚拟机实例化和处理空间。如下面更详细地描述的,在虚拟机执行区域212内执行的多个虚拟机可以在动态虚拟机存储器调整中独立地或彼此结合地管理(或可以被管理以提供)内存不足避免。此外,对于给定实现,适当地,多个虚拟机可以在虚拟机执行区域212内实例化。
应该理解,虚拟机可以以各种方式来配置。例如,虚拟机可以包括分配了应用对象的堆区域、应用执行空间、以及垃圾回收器。虚拟机还可包括其自己的操作系统(OS)实例,或者多个虚拟机可以共享一个OS实例。存在对于虚拟机实现的其他变形,而所有这样的变形都被视为在本主题的范围内。
存储器210还包括内存不足避免模块214。内存不足避免模块214在本文所描述的动态虚拟机存储器调整中结合一个或多个执行中的虚拟机,来执行内存不足避免。内存不足避免模块214作为存储器收缩管理组件来操作,来调整堆最大大小,并执行其他处理,如上文以及下面更详细地描述的。为便于说明,与虚拟机执行区域212分开地示出了内存不足避免模块214。然而,应该注意,对于给定实现,视情况,内存不足避免模块214可以在虚拟机执行区域212内实现,并可以在执行中的虚拟机内实现。
还应注意,在对于给定实现适合的情况下,诸如在多个访客环境内,内存不足避免模块214可以与工作负荷管理器类型的组件相关联地实现。可另选地,内存不足避免模块214可以作为系统管理程序平台的一部分来实现。在任何这样的实现内,可以修改存储器分配策略,以使内存不足避免模块214可以知道/识别全部存储器和向所有实例化的虚拟机的分配。内存不足避免模块214可以分析并评估每一主机虚拟机中的空闲存储器,以判断任何访客是否正在使用太多存储器。
响应于判断任何访客正在使用太多存储器或在任何虚拟机内存在空闲存储器,内存不足避免模块214可以请求任何这样的访客内部的虚拟机收缩已分配的存储器或增大已分配的存储器(按照每个访客判定)。作为另一种替代方案,内存不足避免模块214如果在每一访客内实现,则可以判断它具有空闲存储器并收缩其自己的调整的最大值级别。这样的处理可以导致系统管理程序进一步识别空闲存储器,并进一步减少向个体访客的存储器分配。
对于任何这样的实现,在内存不足避免模块214检测到潜在OOM状况的情况下,再次通过增大调整的最大值或者给气球放气,可以执行处理以增大向相应的虚拟机分配的堆存储器。内存不足避免模块214还可以识别一个或多个虚拟机上的存储器“压力”。可另选地,专用或共享操作系统实例可以检测虚拟机上的存储器压力,并与内存不足避免模块214协调以作出响应并动态地调整一个或多个虚拟机的分配的堆存储器,以避免即将来临的OOM状况。
此外,在实现多个虚拟机的情况下,物理存储器限制分配给每一虚拟机的堆大小。在这样的实现中,可以执行协作存储器减少管理。在某些实现下,虚拟机可以被配置成直接与在每一虚拟机内实现的内存不足避免模块214进行通信,以实现协作存储器减少管理。每一虚拟机可以实时地调整其调整的最大堆使用量,以释放空闲资源供其他虚拟机使用,并避免即将来临的OOM状况。然而,应该注意,对于虚拟机内的内存不足避免模块214直接通信没有要求,只要有某种机制获取关于多虚拟机环境的虚拟机内的存储器消耗的信息即可。如此,存在对于本技术的实现的各种可能性,而所有这样的可能性都被视为在本技术的范围内。
应该理解,为便于说明,视情况而定,存储器210可以包括适于预计的用途的分布式的或局部的易失性和非易失性存储器的任何组合,并可以包括本示例内未示出的其他存储器段。例如,在不偏离本主题的范围的情况下,存储器210可以包括代码存储区域、操作系统存储区域、代码执行区域以及数据区域。
应该注意,在不偏离本主题的范围的情况下,内存不足避免模块214可以形成所描述的其他电路的一部分。此外,内存不足避免模块214可以包括由CPU202执行的用于执行本文所描述的功能的指令。CPU202可以执行这些指令以为核处理模块200提供上文所描述的并且下面更详细地描述的处理能力。在不偏离本主题的范围的情况下,内存不足避免模块214可以构成中断服务例程(ISR)的一部分、操作系统的一部分、浏览器应用的一部分,或单独的应用的一部分。还应该注意,对于给定实现,视情况,内存不足避免模块214可以实现为单独的硬件组件。
CPU202、显示器204、输入设备206、通信模块208以及存储器210通过互连216互连在一起。互连216可以包括系统总线、网络,或任何其他能够给相应的组件提供用于相应的目的的合适的互连的互连。
尽管图2内所示出的不同的模块为便于说明和描述的目的被示为组件级别的模块,但是应该注意,这些模块可以包括用来实现如上文以及下面更详细地描述的相应的模块的功能的任何硬件、编程的处理器以及存储器。例如,所述模块可以包括专用集成电路(ASIC)形式的另外的控制器电路、处理器、天线,和/或用于执行与相应的模块相关联的通信和电力控制活动的离散的集成电路和组件。另外,视情况而定,所述模块可以包括中断级别的、栈级别的以及应用级别的模块。此外,所述模块可以包括用于存储、执行,以及用于执行与相应的模块相关联的处理活动的数据处理的任何存储器组件。在不偏离本主题的范围的情况下,所述模块还可构成所描述的其他电路的一部分,或者可以组合起来。
另外,尽管核处理模块200被示为具有某些所描述的组件,但是,在不偏离本主题的范围的情况下,其他模块和组件可以与核处理模块200相关联。另外,应该注意,尽管为便于说明,核处理模块200被描述为单个设备,但是在不偏离本主题的范围的情况下,核处理模块200内的组件可以是位于一起的,或分布式的并通过网络互连的。对于分布式布置,显示器204和输入设备206可以位于销售点设备、电子信息亭处,或其他位置,而CPU202和存储器210可以位于本地或远程服务器。核处理模块200的组件的许多其他可能的布置都是可以的,所有都视为在本主题的范围内。相应地,核处理模块200可以采取许多形式,并可以与许多平台相关联。
图3是用于在动态虚拟机存储器调整中避免内存不足的消息流300的实现的示例的消息流图示。垃圾回收器302与上文所描述的内存不足避免模块214一起示出。垃圾回收器302代表与存储器210的虚拟机执行区域212内实例化的虚拟机相关联的垃圾回收器模块。应该理解,在虚拟机执行区域212内实例化的每一虚拟机可以包括垃圾回收器302,内存不足避免模块214可以与每一垃圾回收器302进行交互,以实现本技术。
堆304表示虚拟机内的垃圾回收器302与之相关联的存储器区域。堆304被按不同的时间表示,从时间(T1)的表示开始。在时间(T1),堆最初是空的。
堆304具有由箭头306表示的原始最大分配大小。箭头308表示堆304的调整的最大大小。堆304内的低于调整的最大大小的未使用的空闲空间310表示可以为由在相应的虚拟机内执行的应用生成的应用级别的分配请求而分配的空间。堆304内的未使用空闲空间310之上的未分配的堆区域312表示在没有改变如箭头308所表示的调整的最大大小的情况下,不可以分配给应用级别的分配请求的堆空间,如下面更详细地描述的。对于给予实现,视情况而定,未分配的堆区域312可以通过由箭头308所表示的调整的最大值设置来实现,或者可以实现为堆304内的气球,该气球被充气以消耗未分配的堆区域312。
随着时间的推移,随着应用生成存储器分配请求,垃圾回收器302分配在相应的请求内请求的存储器。在时间(T2),一个或多个应用正在消耗堆304内的由消耗的空间314表示的原本未使用的空闲空间310(在时间(T1)处示出)的一部分,未使用的空闲空间310的其余部分如在时间(T2)所示。从图3可以看出,在时间(T2),存储器使用量低于由箭头308表示的调整的最大值。
在时间(T3),所述一个或多个应用使用了所有先前未使用的空闲空间310,到调整的最大值级别,未使用的空闲空间310不再存在,并被消耗的空间314充满。出于本示例的目的,假设应用中的至少一个需要更多存储器。应该注意,若没有本技术,需要更多存储器的任何应用在时间(T3)将遭遇OOM错误,并将很可能由于OOM错误的结果而终止。
然而,本技术允许垃圾回收器302在时间(T3)向内存不足避免模块214发送内存不足回调。内存不足回调可以包括基于来自需要更多存储器的应用的请求分配的请求的堆大小增大量,如由在时间(T3)处与堆304相关联的线316和垂直箭头所示。应用存储器分配请求可以被临时阻止,而不会有应用错误终止。
响应于接收到内存不足回调,内存不足避免模块214在框318计算/确定要向堆304添加的额外的未使用空闲空间的量,并对堆304进行调整。内存不足避免模块214可以基于在内存不足回调内由垃圾回收器302提供的信息,来计算/确定要向堆304添加的额外的未使用空闲空间的量。可另选地,内存不足避免模块214可以被配置成基于来自垃圾回收器302的内存不足回调的频率、基于总的可用存储器、或基于适合于给定实现的任何其他因素,进行堆304的增量调整。此外,对于给定实现,视情况而定,最大分配的堆调整可以通过增大最大调整的堆级别设置或者给正在消耗调整的最大级别以上的堆的气球放气来实现。
在时间(T4),堆调整完成,堆304再次包括基于由调整的箭头308所表示的新的调整的最大值的未使用空闲空间310,内存不足避免模块214向垃圾回收器302发送重试分配消息。在框320,垃圾回收器302重试堆304的未使用空闲空间310内的存储器分配请求。在时间(T5),堆304再次被消耗到由调整的箭头308所表示的调整的最大值,被消耗的空间314将堆304填充到新的调整的最大值。可以向应用通知成功的存储器分配,解除对应用的阻止以继续处理。
另外还应该注意,内存不足回调可以另选地被实现为如下变型,其中垃圾回收器302调用“处于压力下”回调,该回调向内存不足避免模块214通知垃圾回收器302必须努力工作以获得可用存储器,用于新存储器分配。在这样的实现中,实现为“处于压力下”回调的内存不足回调可以在应用请求不能被满足的存储器分配之前执行,以避免针对存储器分配请求而临时阻止应用。
如此,本技术可以被实现为使虚拟机可以肯定地知道调整的最大值何时将导致OOM状况,肯定地知道需要多少存储器来满足分配,以便调整的最大值被增大最佳量,并在进行工作集大小调整之后允许尝试的分配被重试。此外,随着存储器不再被需要,内存不足避免模块214可以通过减少由箭头308所表示的调整的最大值设置或者通过充气增大未分配的堆区域312的大小的气球,来从堆304回收存储器。内存不足避免模块214可以通过对每一相应实例化的虚拟机的堆304内的未使用空闲空间310的分析,来确定存储器不再被消耗。
下面描述的图4到图5B表示可以由诸如核处理模块200的设备执行,以在与本主题相关联的动态虚拟机存储器调整中执行内存不足避免的示例过程。示例过程的许多其他变型都是可以的,所有都视为在本主题的范围内。示例过程可以通过诸如内存不足避免模块214的模块执行和/或由与这样的设备相关联的CPU202来执行。应该注意,为便于说明,在下述的示例过程内没有示出超时过程及其他错误控制过程。然而,应该理解,所有这样的过程都被视为在本主题的范围内。此外,在不偏离本主题的范围的情况下,所描述的过程可以组合,所描述的处理的序列可以改变,并可以添加或移除另外的处理。
图4是用于在动态虚拟机存储器调整中避免内存不足的过程400的实现的示例的流程图。在框402,过程400通过处理器检测相对于与应用存储器分配的存储器堆相关联的调整的堆最大大小的未使用空闲存储器不足,其中,调整的堆最大大小被设置为小于最大堆分配大小的堆大小。在框404,过程400计算解决未使用空闲存储器不足的对调整的堆最大大小的增大量。在框406,过程400将调整的堆最大大小增大计算出的对调整的堆最大大小的增大量。
图5A-5B示出了用于在动态虚拟机存储器调整中避免内存不足的过程500的实现的示例的流程图。图5A示出了过程500内的初始处理。在判断点502,过程500判断是否检测到与虚拟机相关联的存储器分配请求。例如,过程500可以在虚拟机接收来自应用的存储器分配请求。可另选地,过程500可以作为与垃圾回收器相关联的内存不足处理程序而被触发,以处理与应用存储器分配的存储器堆相关联的、相对于调整的堆最大值的检测到的未使用空闲存储器不足。
响应于在判断点502判断没有检测到与虚拟机相关联的存储器分配请求,过程500在判断点504判断与垃圾回收器相关联的垃圾回收处理是否涉及相对于为存储器堆内的空闲存储器配置的正常工作负荷创建未使用空闲存储器空间的垃圾回收活动中的困难增大。响应于在判断点504判断与垃圾回收器相关联的垃圾回收处理不涉及垃圾回收活动中的困难增大,过程500返回到判断点502,并如上文和下面更详细地描述地重复。响应于判断点504处的肯定判断的处理将被推迟,并在下面更详细地描述。
返回到判断点502的描述,响应于判断检测到与虚拟机相关联的存储器分配请求,过程500在框506确定由应用请求的存储器的量。应该注意,对于给定实现,视情况,存储器分配可以与应用存储器分配请求协调,以使超出调整的堆最大值的每一存储器请求都等同于将满足该应用存储器分配请求的调整的堆最大值的增大。可另选地,应用存储器分配请求可以部分地由存储器堆内的可用存储器分配空间来满足,未使用空闲存储器不足可以通过小于应用存储器分配请求的调整的堆最大值的增大来满足。作为另一个替代方案,调整的堆最大值可以被增大比应用存储器分配请求更大的量,以允许响应于所述调整的另外的分配,并减少对调整的堆最大值的调整的次数。另外,对于给定实现,视情况而定,过程500可以计算调整的堆最大值的增大量,以通过内存不足处理程序来解决未使用空闲存储器不足。
在判断点508,过程500判断由应用请求的存储器的量是否将导致应用存储器分配的存储器堆超出调整的堆最大大小。对由应用请求的存储器的量是否将导致应用存储器分配的存储器堆超出调整的堆最大大小的判断可以包括:计算调整的堆最大大小的解决与存储器分配请求相关联的未使用空闲存储器不足的增大量。
响应于判断由应用请求的存储器的量不会导致应用存储器分配的存储器堆超出调整的堆最大大小,过程500在框510分配请求的存储器。在框512,过程500向应用返回对于存储器分配的确认,并返回到判断点502,并如上文所描述地重复。
返回到判断点508的描述,响应于判断由应用请求的存储器的量将导致应用存储器分配的存储器堆超出调整的堆最大大小,过程500在框514阻止应用(例如,临时执行阻止)。过程500可以例如阻止请求的应用存储器分配。在框516,过程500分配确定的由应用请求的存储器的量,作为计算出的对调整的堆最大大小的增大量。对于给定实现,视情况而定,过程500可以另选地分配计算出的解决未使用空闲存储器不足的对调整的堆最大大小的增大量,其中,小于请求的存储器分配的调整的堆最大值增大将满足分配请求。
在判断点518,过程500判断分配的/计算出的解决未使用空闲存储器不足的对调整的堆最大大小的增大量是否超出分配给虚拟机的整个堆的最大堆大小。响应于判断分配的/计算出的解决未使用空闲存储器不足的对调整的堆最大大小的增大量超出分配给虚拟机的整个堆的最大堆大小,过程500在框520生成错误,并返回到判断点502以如上文所述地重复。
应该注意,过程500可以实现存储器分配策略,并可以知道全部存储器和向所有实例化的虚拟机的分配。如此,过程500可以另外/另选地跨一组虚拟机来调整堆最大大小分配,以使用存储器分配策略,从其他虚拟机回收未使用的堆空间。对于给定实现,视情况而定,过程500可以分配该回收的可用的堆空间,以增大带有空闲存储器不足的虚拟机的分配的最大堆大小。如此,响应于在判断点518判断分配的/计算出的解决未使用空闲存储器不足的对调整的堆最大大小的增大量不超出整个堆的最大堆大小(或响应于从其他虚拟机回收未使用的堆空间并分配该可用的堆空间以增大带有空闲存储器不足的虚拟机的分配的最大堆大小),过程500在框522将调整的堆最大大小增大由应用请求的存储器的量(或小于请求的存储器的量的该计算出的量,对于给定实现,视情况而定)。过程500可以通过改变调整的堆最大大小值或通过给堆消耗气球放气,来增大调整的堆最大大小,对于给定实现,视情况而定。
在框524,过程500重试存储器分配。例如,过程500可以响应于将调整的堆最大大小增大计算出的对调整的堆最大大小的增大量,请求垃圾回收器重试请求的应用存储器分配。在判断点526,过程500判断存储器分配是否完成。响应于判断存储器分配完成,过程500在框528解除对应用的阻止。如此,过程500可以响应于将调整的堆最大大小增大计算出的对调整的堆最大大小的增大量,解除对请求的应用存储器分配的阻止。过程500返回到判断点502,并如上文所述地重复。
返回到判断点504的描述,响应于判断与垃圾回收器相关联的垃圾回收处理涉及相对于为存储器堆内的空闲存储器配置的正常工作负荷创建未使用空闲存储器空间的垃圾回收活动中的困难增大,过程500过渡到与图5B相关联地示出和描述的处理。
图5B示出了与用于在动态虚拟机存储器调整中避免内存不足的过程500相关联的另外的处理。在框530,过程500计算使垃圾回收活动返回到为存储器堆内的空闲存储器配置的正常工作负荷的额外堆存储器的量。在判断点532,处理500判断计算出的使垃圾回收活动返回到为存储器堆内的空闲存储器配置的正常工作负荷的额外堆存储器的量是否超出分配给虚拟机的整个堆的最大堆大小。
响应于判断计算出的使垃圾回收活动返回到为存储器堆内的空闲存储器配置的正常工作负荷的额外堆存储器的量超出分配给虚拟机的整个堆的最大堆大小,过程500在框534生成错误。如上文所述,应该注意,过程500可以实现存储器分配策略,并可以知道总存储器和向所有实例化的虚拟机的分配。如此,过程500可以另外/另选地跨一组虚拟机来调整堆最大大小分配,以使用存储器分配策略,从其他虚拟机回收未使用的堆空间。过程500可以分配该回收的可用堆空间,以增大带有空闲存储器不足的虚拟机的分配的最大堆大小,对于给定实现,视情况而定。
如此,响应于在判断点532判断计算出的使垃圾回收活动返回到为存储器堆内的空闲存储器配置的正常工作负荷的额外堆存储器的量不超出分配给虚拟机的整个堆的最大堆大小(或响应于从其他虚拟机回收未使用的堆空间并分配该可用的堆空间以增大其垃圾回收处理正在经历存储器压力的虚拟机的分配的最大堆大小),过程500在框536将调整的堆最大大小增大足以减轻所述存储器压力的计算出的量。过程500可以通过改变调整的堆最大大小值或通过给堆消耗气球放气,来增大调整的堆最大大小,对于给定实现,视情况而定。响应于在框534生成错误通知,或者响应于在框536将调整的堆最大大小增大足以减轻存储器压力的计算出的量,过程500返回到与图5A的框502相关联地描述的处理,并如上文所述地重复。
如此,过程500检测存储器分配请求,并处理那些请求,以判断存储器分配请求是否将超出当前配置的调整的堆最大大小。过程500计算满足将超出当前配置的调整的堆最大大小的存储器分配请求的额外堆空间的量,并增大相应的虚拟机的存储器堆的调整的大小。过程500还可跨多个虚拟机调整分配的堆大小,回收未使用的堆空间,并将回收的存储器空间重新分配到正经历未使用空闲存储器不足的其他虚拟机。过程500还可操作以检测垃圾回收器正在经历存储器压力,而同时试图收集未使用的存储器,并可以增大调整的堆最大大小以减轻存储器压力。
如上文与图1到图5B相关联地描述的,示例系统和过程提供在动态虚拟机存储器调整中的内存不足避免。与动态虚拟机存储器调整中的内存不足避免相关联的许多其他变型和另外的活动是可以的,所有都被视为在本主题的范围内。
所属领域的技术人员将认识到,在考虑上面的教导后,上面的示例中的某些基于诸如CPU202的编程处理器的使用。然而,本发明不仅限于这样的示例实施例,因为其他实施例可以使用诸如专用硬件和/或专用处理器的硬件组件等同物来实现。类似地,可以使用通用计算机、基于微处理器的计算机、微控制器、光学计算机、模拟计算机、专用处理器、专用电路和/或专用硬连线逻辑来构建替代的等同实施例。
所属技术领域的技术人员知道,本发明的各个方面可以实现为系统、方法或计算机程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、驻留软件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为"电路"、"模块"或"系统"。此外,在一些实施例中,本发明的各个方面还可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。
可以采用一个或多个计算机可读介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如JavaTM、Smalltalk、C++等,还包括常规的过程式程序设计语言—诸如"C"语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
下面将参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些计算机程序指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。
也可以把这些计算机程序指令存储在计算机可读存储介质中,这些指令使得计算机、或其它可编程数据处理装置以特定方式工作,从而,存储在计算机可读存储介质中的指令就产生出包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的指令的制造品(article of manufacture)。
计算机程序指令还可以加载到计算机、其他可编程数据处理设备或其他设备中,以使一系列操作步骤在计算机、其他可编程设备或其他设备上执行,以产生一种计算机实现的过程,使得在计算机或其他可编程设备上执行的指令提供用于实现在流程图和/或框图的框中指定的功能/动作的过程。
附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
适于存储和/或执行程序代码的数据处理系统将包括至少一个直接或通过系统总线间接地耦接到存储器元件的处理器。存储器元件可以包括在程序代码的实际执行期间使用的本地存储器、大容量存储器、以及高速缓冲存储器,高速缓冲存储器提供了至少某些程序代码的临时存储器,以减少在执行期间必须从大容量存储器取回代码的次数。
输入/输出或I/O设备(包括但不仅限于,键盘、显示器、定点设备等)可以直接或者通过介入的I/O控制器耦接到系统。
网络适配器也可以耦接到系统,以使得数据处理系统能够通过介入的私有或公共网络耦接到其他数据处理系统或远程打印机或存储设备。调制解调器、电缆调制解调器和以太网卡就是几个当前可用类型的网络适配器。
本文使用的术语只是为了描述特定实施例,而不是要对本发明进行限制。本文所使用的单数形式“一个”也要包括复数形式,除非上下文明确地指出不是如此。还应该理解,本说明中使用的术语“包括”和/或“包含”表明声称的特征、整数、步骤、操作、元件和/或组件的存在,但是并不排除一个或多个其他特征、整数、步骤、操作、元件、组件和/或其组合的存在或添加。
下面的权利要求中的所有装置或步骤加功能元件的对应的结构、材料、动作以及等同物意图包括用于与专门主张的其他权利要求要素相结合地执行功能的任何结构、材料或动作。提供本发明的描述是为了例示和说明的目的,而不是要穷尽地公开或把本发明局限于所公开的形式。本领域的技术人员将认识到,在不偏离本发明的范围和精神的情况下,许多修改和变型是显而易见的。选择和描述实施例只是为了最好地说明本发明的原理和实际应用,并使本领域的其他技术人员能够理解本发明的带有适于设想的特定用途的各种修改的各种实施例。
Claims (16)
1.一种方法,包括:
通过处理器检测相对于与应用存储器分配的存储器堆相关联的调整的堆最大大小的未使用空闲存储器不足,其中,所述调整的堆最大大小被设置为小于最大堆分配大小的堆大小;
计算解决所述未使用空闲存储器不足的对所述调整的堆最大大小的增大量;以及
将所述调整的堆最大大小增大所计算出的对所述调整的堆最大大小的增大量。
2.如权利要求1所述的方法,其中,通过处理器检测相对于与应用存储器分配的存储器堆相关联的调整的堆最大大小的未使用空闲存储器不足包括:
接收来自应用的存储器分配请求;
确定由所述应用请求的存储器的量;以及
确定由所述应用请求的存储器的量将导致应用存储器分配的所述存储器堆超出所述调整的堆最大大小。
3.如权利要求2所述的方法,其中:
计算解决所述未使用空闲存储器不足的对所述调整的堆最大大小的增大量包括:
分配所确定的由所述应用请求的存储器的量,作为所计算出的对所述调整的堆最大大小的增大量;以及
将所述调整的堆最大大小增大所计算出的对所述调整的堆最大大小的增大量包括:
将所述调整的堆最大大小增大所确定的由所述应用请求的存储器的量。
4.如权利要求1所述的方法,其中:
通过处理器检测相对于与应用存储器分配的存储器堆相关联的调整的堆最大大小的未使用空闲存储器不足包括:确定垃圾回收处理涉及相对于为所述存储器堆内的空闲存储器配置的正常工作负荷创建未使用空闲存储器空间的垃圾回收活动中的困难增大;以及
计算解决所述未使用空闲存储器不足的对所述调整的堆最大大小的增大量包括:计算使所述垃圾回收活动返回到为所述存储器堆内的空闲存储器配置的正常工作负荷的额外的堆存储器的量。
5.如权利要求1所述的方法,其中,将所述调整的堆最大大小增大所计算出的对所述调整的堆最大大小的增大量包括改变调整的堆最大大小值和给堆消耗气球放气中的一项。
6.如权利要求1所述的方法,还包括:
响应于检测到未使用空闲存储器不足,阻止请求的应用存储器分配;以及
响应于将所述调整的堆最大大小增大所计算出的对所述调整的堆最大大小的增大量,解除对请求的应用存储器分配的阻止。
7.如权利要求1所述的方法,其中,通过处理器检测相对于与应用存储器分配的存储器堆相关联的调整的堆最大大小的未使用空闲存储器不足包括,通过由所述处理器执行的垃圾回收器来检测未使用空闲存储器不足,所述方法还包括:
响应于检测到未使用空闲存储器不足,通过所述垃圾回收器触发内存不足处理程序以处理检测到的未使用空闲存储器不足;
其中,计算解决所述未使用空闲存储器不足的对所述调整的堆最大大小的增大量包括,通过所述内存不足处理程序,计算解决所述未使用空闲存储器不足的对所述调整堆最大大小的增大量;以及
所述方法还包括响应于将所述调整的堆最大大小增大所计算出的对所述调整的堆最大大小的增大量,通过所述内存不足处理程序,请求所述垃圾回收器重试请求的应用存储器分配。
8.如权利要求1所述的方法,还包括:
使用存储器分配策略来识别总存储器和与多个实例化的虚拟机相关联的分配;
基于所述存储器分配策略,从所述多个实例化的虚拟机中的至少一个回收未使用的堆空间;以及
其中,将所述调整的堆最大大小增大所计算出的对所述调整的堆最大大小的增大量包括:使用所回收的未使用的堆空间,将所述调整的堆最大大小增大所计算出的对所述调整的堆最大大小的增大量。
9.一种系统,包括:
存储器;以及
处理器,被编程为:
检测相对于与所述存储器内的应用存储器分配的存储器堆相关联的调整的堆最大大小的未使用空闲存储器不足,其中,所述调整的堆最大大小被设置为小于最大堆分配大小的堆大小;
计算解决所述未使用空闲存储器不足的对所述调整的堆最大大小的增大量;以及
将所述调整的堆最大大小增大所计算出的对所述调整的堆最大大小的增大量。
10.如权利要求9所述的系统,其中,在被编程为检测相对于与所述存储器内的应用存储器分配的存储器堆相关联的调整的堆最大大小的未使用空闲存储器不足时,所述处理器被编程为:
接收来自应用的存储器分配请求;
确定由所述应用请求的存储器的量;以及
确定由所述应用请求的存储器的量将导致应用存储器分配的所述存储器堆超出所述调整的堆最大大小。
11.如权利要求10所述的系统,其中:
在被编程为计算解决所述未使用空闲存储器不足的对所述调整的堆最大大小的增大量时,所述处理器被编程为:
分配所确定的由所述应用请求的存储器的量,作为所计算出的对所述调整的堆最大大小的增大量;以及
在被编程为将所述调整的堆最大大小增大所计算出的对所述调整的堆最大大小的增大量时,所述处理器被编程为:
将所述调整的堆最大大小增大所确定的由所述应用请求的存储器的量。
12.如权利要求9所述的系统,其中:
在被编程为检测相对于与所述存储器内的应用存储器分配的存储器堆相关联的调整的堆最大大小的未使用空闲存储器不足时,所述处理器被编程为确定垃圾回收处理涉及相对于为所述存储器堆内的空闲存储器配置的正常工作负荷创建未使用空闲存储器空间的垃圾回收活动中的困难增大;以及
在被编程为计算解决所述未使用空闲存储器不足的对所述调整的堆最大大小的增大量时,所述处理器被编程为计算使垃圾回收活动返回到为所述存储器堆内的空闲存储器配置的正常工作负荷的额外的堆存储器的量。
13.如权利要求9所述的系统,其中,在被编程为将所述调整的堆最大大小增大所计算出的对所述调整的堆最大大小的增大量时,所述处理器被编程为改变调整的堆最大大小值和给堆消耗气球放气中的一项。
14.如权利要求9所述的系统,其中,所述处理器还被编程为:
响应于检测到所述未使用空闲存储器不足,阻止请求的应用存储器分配;以及
响应于将所述调整的堆最大大小增大所计算出的对所述调整的堆最大大小的增大量,解除对所述请求的应用存储器分配的阻止。
15.如权利要求9所述的系统,其中,在被编程为检测相对于与所述存储器内的应用存储器分配的存储器堆相关联的调整的堆最大大小的未使用空闲存储器不足时,所述处理器被编程为通过由所述处理器执行的垃圾回收器来检测所述未使用空闲存储器不足,所述处理器还被编程为:
响应于检测到所述未使用空闲存储器不足,通过垃圾回收器来触发内存不足处理程序以处理所检测到的未使用空闲存储器不足;
其中,在被编程为计算解决所述未使用空闲存储器不足的对所述调整的堆最大大小的增大量时,所述处理器被编程为,通过所述内存不足处理程序,计算解决所述未使用空闲存储器不足的对所述调整的堆最大大小的增大量;以及
所述处理器还被编程为,响应于将所述调整的堆最大大小增大所计算出的对所述调整的堆最大大小的增大量,通过所述内存不足处理程序,请求所述垃圾回收器重试请求的应用存储器分配。
16.如权利要求9所述的系统,其中,所述处理器还被编程为:
使用存储器分配策略来识别总存储器和与多个实例化的虚拟机相关联的分配;
基于所述存储器分配策略,从所述多个实例化的虚拟机中的至少一个回收未使用的堆空间;以及
其中,在被编程为将所述调整的堆最大大小增大所计算出的对所述调整的堆最大大小的增大量时,所述处理器被编程为,使用所回收的未使用的堆空间,将所述调整的堆最大大小增大所计算出的对所述调整的堆最大大小的增大量。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/682,086 US9311236B2 (en) | 2012-11-20 | 2012-11-20 | Out-of-memory avoidance in dynamic virtual machine memory adjustment |
US13/682,086 | 2012-11-20 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103838633A true CN103838633A (zh) | 2014-06-04 |
CN103838633B CN103838633B (zh) | 2017-06-13 |
Family
ID=50729078
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310585908.9A Active CN103838633B (zh) | 2012-11-20 | 2013-11-20 | 调整虚拟机存储器的方法和系统 |
Country Status (2)
Country | Link |
---|---|
US (2) | US9311236B2 (zh) |
CN (1) | CN103838633B (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104598524A (zh) * | 2014-12-23 | 2015-05-06 | 苏州博远容天信息科技有限公司 | Sql server数据库集群多实例内存管理及分配方法 |
CN105094946A (zh) * | 2015-06-30 | 2015-11-25 | 小米科技有限责任公司 | 释放已占用逻辑空间的方法、装置及虚拟机 |
CN105630638A (zh) * | 2014-10-31 | 2016-06-01 | 国际商业机器公司 | 用于为磁盘阵列分配缓存的设备和方法 |
CN106663049A (zh) * | 2014-09-09 | 2017-05-10 | 微软技术许可有限责任公司 | 通过使用趋势相关性的存储器泄漏分析 |
US9898405B2 (en) | 2014-04-10 | 2018-02-20 | International Business Machines Corporation | Working set adjustment in a managed environment |
CN108701026A (zh) * | 2016-04-01 | 2018-10-23 | 英特尔公司 | 用于在存储器约束下管理进程的方法和装置 |
CN108958891A (zh) * | 2018-07-26 | 2018-12-07 | 郑州云海信息技术有限公司 | 一种虚拟机内存分配方法、装置及终端 |
CN112463389A (zh) * | 2020-12-10 | 2021-03-09 | 中国科学院深圳先进技术研究院 | 分布式机器学习任务的资源管理方法及装置 |
CN115033378A (zh) * | 2022-06-06 | 2022-09-09 | 北京熵核科技有限公司 | 一种关于易失性内存的管理方法 |
Families Citing this family (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9146862B2 (en) | 2013-07-18 | 2015-09-29 | International Business Machines Corporation | Optimizing memory usage across multiple garbage collected computer environments |
US9176869B2 (en) * | 2013-07-18 | 2015-11-03 | Globalfoundries Inc | Memory use for garbage collected computer environments |
US9836342B1 (en) * | 2014-09-05 | 2017-12-05 | VCE IP Holding Company LLC | Application alerting system and method for a computing infrastructure |
US9946573B2 (en) * | 2015-05-20 | 2018-04-17 | Oracle International Corporation | Optimizing virtual machine memory sizing for cloud-scale application deployments |
US9864640B2 (en) * | 2015-08-14 | 2018-01-09 | International Business Machines Corporation | Controlling virtual machine density and placement distribution in a converged infrastructure resource pool |
US10248321B1 (en) | 2015-09-15 | 2019-04-02 | Amazon Technologies, Inc. | Simulating multiple lower importance levels by actively feeding processes to a low-memory manager |
US10101910B1 (en) * | 2015-09-15 | 2018-10-16 | Amazon Technologies, Inc. | Adaptive maximum limit for out-of-memory-protected web browser processes on systems using a low memory manager |
US10289446B1 (en) | 2015-09-15 | 2019-05-14 | Amazon Technologies, Inc. | Preserving web browser child processes by substituting a parent process with a stub process |
US10162547B1 (en) * | 2015-09-16 | 2018-12-25 | Marvell International Ltd. | Memory expansion in a linking process |
WO2017156496A1 (en) * | 2016-03-11 | 2017-09-14 | Post Oak Today LLC | Methods and apparatus for establishing shared memory spaces for data access and distribution |
CN105930217A (zh) * | 2016-04-15 | 2016-09-07 | 上海斐讯数据通信技术有限公司 | 一种线程优化系统及方法 |
US9910768B1 (en) * | 2016-05-23 | 2018-03-06 | Parallels IP Holdings GmbH | Method for memory management for virtual machines |
US10101935B2 (en) | 2016-06-03 | 2018-10-16 | Samsung Electronics Co., Ltd. | System and method for providing expandable and contractible memory overprovisioning |
CN108628678B (zh) * | 2017-03-21 | 2020-11-03 | 中国移动通信集团河北有限公司 | 内存参数的确定方法、装置及设备 |
CN110389905B (zh) * | 2018-04-20 | 2023-12-19 | 伊姆西Ip控股有限责任公司 | 资源释放方法、资源分配方法、设备和计算机程序产品 |
US10747450B2 (en) * | 2018-07-26 | 2020-08-18 | Red Hat, Inc. | Dynamic virtual machine memory allocation |
CN112882832A (zh) * | 2018-08-28 | 2021-06-01 | Oppo广东移动通信有限公司 | 应用于浏览器的内存管理方法、装置、终端及存储介质 |
CN111240825B (zh) * | 2018-11-29 | 2023-09-19 | 深圳先进技术研究院 | Docker集群的内存配置方法、存储介质、计算机设备 |
US10762048B2 (en) * | 2019-01-28 | 2020-09-01 | International Business Machines Corporation | Dynamically increasing available storage space in a storage volume |
US11163687B2 (en) | 2019-10-17 | 2021-11-02 | Citrix Systems, Inc. | Provisioning virtual machines with a single identity and cache virtual disk |
CN111580980B (zh) * | 2020-05-15 | 2024-01-30 | 北京小米松果电子有限公司 | 内存管理方法和装置 |
US11526437B1 (en) * | 2021-06-11 | 2022-12-13 | International Business Machines Corporation | Heap space management |
CN113407309A (zh) * | 2021-06-28 | 2021-09-17 | 北京字节跳动网络技术有限公司 | 虚拟机内存申请方法、装置、存储介质及电子设备 |
CN116700903B (zh) * | 2023-08-08 | 2023-11-03 | 苏州浪潮智能科技有限公司 | 面向云计算的虚拟机的内存调节方法、系统、设备及介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020091904A1 (en) * | 2001-01-05 | 2002-07-11 | Haggar Peter F. | Methods, systems, and computer program products for memory pool management using variable size sub-pools |
CN1975696A (zh) * | 2005-11-30 | 2007-06-06 | 国际商业机器公司 | 用于管理存储器使用的方法和计算设备 |
US20080162863A1 (en) * | 2002-04-16 | 2008-07-03 | Mcclure Steven T | Bucket based memory allocation |
CN101615143A (zh) * | 2008-06-27 | 2009-12-30 | 国际商业机器公司 | 用于内存泄漏诊断的方法和装置 |
CN102576331A (zh) * | 2009-09-21 | 2012-07-11 | 甲骨文国际公司 | 用于在虚拟机监视器环境中的虚拟机之间同步瞬时资源使用的系统和方法 |
Family Cites Families (6)
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 |
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 |
US7761487B2 (en) | 2006-12-13 | 2010-07-20 | Computer Associates Think, Inc. | Predicting out of memory conditions using soft references |
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 |
US7792879B2 (en) | 2008-03-11 | 2010-09-07 | Intel Corporation | Efficient heap utilization and partitioning |
-
2012
- 2012-11-20 US US13/682,086 patent/US9311236B2/en active Active
-
2013
- 2013-11-20 CN CN201310585908.9A patent/CN103838633B/zh active Active
-
2014
- 2014-03-19 US US14/219,140 patent/US9298611B2/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020091904A1 (en) * | 2001-01-05 | 2002-07-11 | Haggar Peter F. | Methods, systems, and computer program products for memory pool management using variable size sub-pools |
US20080162863A1 (en) * | 2002-04-16 | 2008-07-03 | Mcclure Steven T | Bucket based memory allocation |
CN1975696A (zh) * | 2005-11-30 | 2007-06-06 | 国际商业机器公司 | 用于管理存储器使用的方法和计算设备 |
CN101615143A (zh) * | 2008-06-27 | 2009-12-30 | 国际商业机器公司 | 用于内存泄漏诊断的方法和装置 |
CN102576331A (zh) * | 2009-09-21 | 2012-07-11 | 甲骨文国际公司 | 用于在虚拟机监视器环境中的虚拟机之间同步瞬时资源使用的系统和方法 |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9898405B2 (en) | 2014-04-10 | 2018-02-20 | International Business Machines Corporation | Working set adjustment in a managed environment |
US10552318B2 (en) | 2014-04-10 | 2020-02-04 | International Business Machines Corporation | Working set adjustment in a managed environment |
CN106663049A (zh) * | 2014-09-09 | 2017-05-10 | 微软技术许可有限责任公司 | 通过使用趋势相关性的存储器泄漏分析 |
CN106663049B (zh) * | 2014-09-09 | 2019-10-01 | 微软技术许可有限责任公司 | 通过使用趋势相关性的存储器泄漏分析 |
CN105630638B (zh) * | 2014-10-31 | 2018-01-12 | 国际商业机器公司 | 用于为磁盘阵列分配缓存的设备和方法 |
CN105630638A (zh) * | 2014-10-31 | 2016-06-01 | 国际商业机器公司 | 用于为磁盘阵列分配缓存的设备和方法 |
CN104598524A (zh) * | 2014-12-23 | 2015-05-06 | 苏州博远容天信息科技有限公司 | Sql server数据库集群多实例内存管理及分配方法 |
CN105094946A (zh) * | 2015-06-30 | 2015-11-25 | 小米科技有限责任公司 | 释放已占用逻辑空间的方法、装置及虚拟机 |
CN108701026A (zh) * | 2016-04-01 | 2018-10-23 | 英特尔公司 | 用于在存储器约束下管理进程的方法和装置 |
CN108701026B (zh) * | 2016-04-01 | 2024-04-09 | 英特尔公司 | 用于在存储器约束下管理进程的方法和装置 |
CN108958891A (zh) * | 2018-07-26 | 2018-12-07 | 郑州云海信息技术有限公司 | 一种虚拟机内存分配方法、装置及终端 |
CN108958891B (zh) * | 2018-07-26 | 2022-02-18 | 郑州云海信息技术有限公司 | 一种虚拟机内存分配方法、装置及终端 |
CN112463389A (zh) * | 2020-12-10 | 2021-03-09 | 中国科学院深圳先进技术研究院 | 分布式机器学习任务的资源管理方法及装置 |
CN115033378A (zh) * | 2022-06-06 | 2022-09-09 | 北京熵核科技有限公司 | 一种关于易失性内存的管理方法 |
CN115033378B (zh) * | 2022-06-06 | 2023-01-06 | 北京熵核科技有限公司 | 一种关于易失性内存的管理方法 |
Also Published As
Publication number | Publication date |
---|---|
US9311236B2 (en) | 2016-04-12 |
CN103838633B (zh) | 2017-06-13 |
US20140208055A1 (en) | 2014-07-24 |
US9298611B2 (en) | 2016-03-29 |
US20140143516A1 (en) | 2014-05-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103838633A (zh) | 在动态虚拟机存储器调整中避免内存不足 | |
CN105701025B (zh) | 一种内存回收方法及装置 | |
KR102009037B1 (ko) | 모바일 단말기 및 그 자원 관리 방법 | |
US9229651B2 (en) | Method and apparatus for managing memory in virtual machine environment | |
CN102047218B (zh) | 进程中的调度器实例 | |
US9494991B2 (en) | Energy allocation to groups of virtual machines | |
US20120185854A1 (en) | System and method to improve memory usage in virtual machines running as hypervisor guests | |
CN103430159A (zh) | 虚拟化计算环境中的动态内存管理 | |
CN104641313A (zh) | 管理和撤销通过总线接口分配的功率 | |
CN104160378A (zh) | 用于复杂的分布式计算操作的容错功能 | |
CN112825042A (zh) | 资源管理方法和装置、电子设备及存储介质 | |
CN103309721A (zh) | 虚拟机监视器管理系统及方法 | |
CN102917052A (zh) | 一种云计算系统中资源分配的方法 | |
CN106663051A (zh) | 虚拟化计算中的存储器管理 | |
KR20210125893A (ko) | 블록 체인에서의 업무 청구 처리 방법, 장치, 기기, 매체 및 프로그램 | |
CN103365784B (zh) | 内存回收与分配的方法及装置 | |
CN111104219A (zh) | 虚拟核心与物理核心的绑定方法、装置、设备及存储介质 | |
CN110162397A (zh) | 资源分配方法、装置及系统 | |
CN116185623A (zh) | 任务分配方法、装置、电子设备及存储介质 | |
CN102047217A (zh) | 重新获取对执行外部执行上下文的处理资源的控制 | |
CN115118785B (zh) | 服务器资源保护方法、装置、设备、介质和程序产品 | |
CN103562852B (zh) | 一种保障云应用程序服务质量的方法和装置 | |
CN111143073A (zh) | 一种虚拟化资源的管理方法、设备及存储介质 | |
CN112732449B (zh) | 基于gpu虚拟化技术的显存资源分配方法、装置及设备 | |
CN103995731A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |