用于在虚拟机监视器环境中的虚拟机之间同步瞬时资源使用的系统和方法

文档序号:8380887阅读:322来源:国知局
用于在虚拟机监视器环境中的虚拟机之间同步瞬时资源使用的系统和方法
【专利说明】用于在虚拟机监视器环境中的虚拟机之间同步瞬时资源使用的系统和方法
[0001]本申请是申请日为2010年8月30日、申请号为201080041903.4,发明名称为“用于在虚拟机监视器环境中的虚拟机之间同步瞬时资源使用的系统和方法”的发明专利申请的分案申请。
[0002]版权声明
[0003]此专利文献的说明书的一部分包含受版权保护的材料。版权所有者不反对任何人影印专利文献或专利说明书,因为它出现在专利局专利文件或记录中,但在别的方面却保留所有版权。
技术领域
[0004]本发明一般涉及应用服务器和虚拟机,特别涉及用于在虚拟机监视器(hypervisor)内运行的虚拟机(例如,JVM)之间同步瞬时资源使用情况的系统和方法。
【背景技术】
[0005]使用虚拟机监视器的服务器虚拟化是降低服务器的操作成本以及改善能量效率的有价值的技术。带有标准操作系统和不同的服务器应用的标准服务器很少一直被完全使用。由于当软件空闲时当前服务器硬件不会显著降低能量消耗,这将导致能量浪费。月艮务器虚拟化可使许多虚拟服务器在单个物理服务器上运行,因此,以前浪费的处理器(cpu)周期和存储器可以供另一个虚拟服务器使用。使此成为可能的软件此处被称为虚拟机监视器。
[0006]当操作系统和服务器应用被虚拟化到物理硬件上时,必须提供安全裕量,以处理当服务器应用的cpu周期使用和/或存储器使用中有突发浪涌时的那些情况。取决于服务器应用资源使用的易失性如何,此裕量可以是很小的或大的。如果在虚拟机监视器内运行的所有虚拟服务器的总的易失性低,那么,裕量可以保持得小些,这将一般提供较高的节省量,因为更多虚拟服务器可以可靠地在同一个物理硬件上运行。
[0007]许多服务器应用当前是以高级语言Java编写的。这样的应用与Java虚拟机(JVM)一起运行。令人遗憾的是,JVM的cpu周期和存储器使用十分易失,并独立于服务器应用本身。这是由于这一事实=JVM必须对Java堆进行垃圾收集,以及优化被检测为热点的代码。这些资源使用是瞬时的并且是显著的。
[0008]由于此,虚拟化的Java应用需要比其他服务器应用更大的安全裕量,这意味着虚拟化的Java服务器应用的虚拟化节省量小于其他类型的服务器应用的虚拟化节省量。这是本发明的各实施例旨在解决的方面。

【发明内容】

[0009]此处公开了用于在虚拟机监视器内运行的虚拟机(例如,Java虚拟机(JVM))之间同步瞬时资源使用的系统和方法。根据一个实施例,系统允许同步垃圾收集和代码优化,以降低瞬时处理器(CPU)和存储器使用。根据一个实施例,系统包括计算机;用于执行各自运行JVM的虚拟服务器的虚拟机监视器;虚拟服务器之间的通信信道;其中,每一虚拟服务器进一步包括非瞬时和瞬时存储器和同步模块。根据一个实施例,同步模块调度垃圾收集和代码优化以最小化重叠,从而降低峰值瞬时存储器和cpu使用,以及所产生的计算机内的瞬时资源使用的易失性。根据另一实施例,云管理器可以在计算机之间移动虚拟服务器,以优化云内的计算机易失性。
【附图说明】
[0010]图1示出了根据一个实施例的用于同步瞬时资源使用的系统的图示。
[0011]图2示出了根据一个实施例的示出了如何提前垃圾回收的图。
[0012]图3示出了根据一个实施例的如何使用轮询的方案来防止单独的JVM中的并行代码优化的图示。
[0013]图4示出了根据一个实施例的如何通过提前垃圾收集和推迟代码优化来在三个JVM之间实现同步的图示。
[0014]图5示出了根据一个实施例以不同规模实现的同步和低易失性的图示。
[0015]图6示出了根据一个实施例的同步瞬时资源使用的方法的流程图。
[0016]图7示出了根据一个实施例的提前垃圾收集以避免重叠的方法的流程图。
[0017]图8示出了根据一个实施例的云管理器如何控制计算机的云以降低计算机易失性的图示。
[0018]图9示出了根据一个实施例的云管理器如何控制计算机的云以减少计算机资源使用的图示。
【具体实施方式】
[0019]此处描述了用于在虚拟机(例如,在虚拟机监视器内运行的JVM)之间同步瞬时资源使用的系统和方法。如此处所描述的,需要降低每一虚拟服务器的资源使用易失性,以允许更多虚拟服务器在同一个虚拟机监视器内安全地运行。令人遗憾的是,JVM对于可以消耗大量的存储器和处理器(cpu)资源的垃圾收集和代码优化具有相当高的易失性。
[0020]根据一个实施例,提供了通过提前或推迟不同的JVM中的进程的执行而允许瞬时资源使用被同步从而避免瞬时资源使用中的峰值的系统和方法;如此,降低易失性并允许更多虚拟服务器在单个虚拟机监视器内以相同安全裕量运行。这是可能的,因为垃圾收集和代码优化是这样的进程:其中,前者可以被提前,而后者可以被推迟,而不会显著影响正在运行的系统的性能。
[0021]避免重叠的进程并不总是可能的。固定时间段内的重叠的瞬时进程的数量是计算机的总的易失性的指标。根据一个实施例,此数量可以被用来评估计算机是否具有好的安全裕量。根据另一实施例,虚拟服务器可以在云内的计算机之间移动,以降低具有高易失性的服务器的易失性,并增大具有无效力地低的易失性的服务器的易失性。根据另一实施例,只能运行单个JVM的定制的操作系统可以降低虚拟服务器的易失性,因为没有其他可能的进程争夺资源。
[0022]图1示出了根据一个实施例的系统的图示。如图1所示,系统的实施例一般包括具有在其上面运行了多个虚拟服务器104,105,107的虚拟机监视器102的计算机100。
[0023]每一虚拟服务器都运行需要内部存储器106,109,111才能运转的JVM。每一虚拟服务器进一步包括执行应用服务器代码所需的Java堆108,113,115。内部存储器和堆两者都被视为缓慢地改变大小的非瞬时存储器110 (如果是的话)。
[0024]诸如垃圾收集之类的短寿命的进程要求存储器112执行。短命的进程的其他示例是代码优化,以及它执行所需的存储器114。这些短命的进程所需的存储器被视为瞬时存储器 116。
[0025]每一虚拟服务器包含同步模块118,119,120。随机地选择这些同步模块中的一个为主同步模块120。主同步模块使用通信信道122来同步在虚拟机监视器内运行的所有虚拟服务器的瞬时资源使用。这可以用于例如防止并行运行不同虚拟服务器中的垃圾收集和码生成,并且从而降低瞬时存储器和cpu循环的峰值使用情况。
[0026]图2示出了根据一个实施例的示出了如何提前垃圾回收的图。如图2所示,图200示出了 Java堆的已使用的存储器202如何随着时间的推移而增大的示例。
[0027]已使用的存储器中的每一小的下降204都是非常快速的并要求少量的cpu和存储器使用的幼儿园(nursery)垃圾收集的结果。
[0028]已使用的存储器206中的比较大的下降是可以要求大量的cpu和存储器使用的整个堆垃圾收集的结果。当在时间208用完所有Java堆时,将迫使整个堆垃圾收集。根据一个实施例,可以利用Java堆使用图的斜率的线性近似,并延长此线,直到它达到Java堆大小210,来预测此时间。可以预测垃圾的结束时间是开始时间加同一个JVM中的前一垃圾收集的长度。
[0029]垃圾收集可以在208之前任何时候启动,S卩,它被提前到其天然的执行时间(这是Java堆已满时)之前。在时间212,主同步模块需要将预测的垃圾收集从时间208提前到时间214。根据一个实施例
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1