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

文档序号:6350454阅读:201来源:国知局
专利名称:用于在虚拟机监视器环境中的虚拟机之间同步瞬时资源使用的系统和方法
技术领域
本发明一般涉及应用服务器和虚拟机,特别涉及用于在虚拟机监视器 (hypervisor)内运行的虚拟机(例如,JVM)之间同步瞬时资源使用情况的系统和方法。
背景技术
使用虚拟机监视器的服务器虚拟化是降低服务器的操作成本以及改善能量效率的有价值的技术。带有标准操作系统和不同的服务器应用的标准服务器很少一直被完全使用。由于当软件空闲时当前服务器硬件不会显著降低能量消耗,这将导致能量浪费。服务器虚拟化可使许多虚拟服务器在单个物理服务器上运行,因此,以前浪费的处理器(cpu) 周期和存储器可以供另一个虚拟服务器使用。使此成为可能的软件此处被称为虚拟机监视
O当操作系统和服务器应用被虚拟化到物理硬件上时,必须提供安全裕量,以处理当服务器应用的CPU周期使用和/或存储器使用中有突发浪涌时的那些情况。取决于服务器应用资源使用的易失性如何,此裕量可以是很小的或大的。如果在虚拟机监视器内运行的所有虚拟服务器的总的易失性低,那么,裕量可以保持得小些,这将一般提供较高的节省量,因为更多虚拟服务器可以可靠地在同一个物理硬件上运行。许多服务器应用当前是以高级语言Java编写的。这样的应用与Java虚拟机(JVM) 一起运行。令人遗憾的是,JVM的cpu周期和存储器使用十分易失,并独立于服务器应用本身。这是由于这一事实JVM必须对Java堆进行垃圾收集,以及优化被检测为热点的代码。 这些资源使用是瞬时的并且是显著的。由于此,虚拟化的Java应用需要比其他服务器应用更大的安全裕量,这意味着虚拟化的Java服务器应用的虚拟化节省量小于其他类型的服务器应用的虚拟化节省量。这是本发明的各实施例旨在解决的方面。

发明内容
此处公开了用于在虚拟机监视器内运行的虚拟机(例如,Java虚拟机(JVM))之间同步瞬时资源使用的系统和方法。根据一个实施例,系统允许同步垃圾收集和代码优化, 以降低瞬时处理器(cpu)和存储器使用。根据一个实施例,系统包括计算机;用于执行各自运行JVM的虚拟服务器的虚拟机监视器;虚拟服务器之间的通信信道;其中,每一虚拟服务器进一步包括非瞬时和瞬时存储器和同步模块。根据一个实施例,同步模块调度垃圾收集和代码优化以最小化重叠,从而降低峰值瞬时存储器和cpu使用,以及所产生的计算机内的瞬时资源使用的易失性。根据另一实施例,云管理器可以在计算机之间移动虚拟服务器, 以优化云内的计算机易失性。


图1示出了根据一个实施例的用于同步瞬时资源使用的系统的图示。图2示出了根据一个实施例的示出了如何提前垃圾回收的图。图3示出了根据一个实施例的如何使用轮询的方案来防止单独的JVM中的并行代码优化的图示。图4示出了根据一个实施例的如何通过提前垃圾收集和推迟代码优化来在三个 JVM之间实现同步的图示。图5示出了根据一个实施例以不同规模实现的同步和低易失性的图示。图6示出了根据一个实施例的同步瞬时资源使用的方法的流程图。图7示出了根据一个实施例的提前垃圾收集以避免重叠的方法的流程图。图8示出了根据一个实施例的云管理器如何控制计算机的云以降低计算机易失性的图示。图9示出了根据一个实施例的云管理器如何控制计算机的云以减少计算机资源使用的图示。
具体实施例方式此处描述了用于在虚拟机(例如,在虚拟机监视器内运行的JVM)之间同步瞬时资源使用的系统和方法。如此处所描述的,需要降低每一虚拟服务器的资源使用易失性,以允许更多虚拟服务器在同一个虚拟机监视器内安全地运行。令人遗憾的是,JVM对于可以消耗大量的存储器和处理器(cpu)资源的垃圾收集和代码优化具有相当高的易失性。根据一个实施例,提供了通过提前或推迟不同的JVM中的进程的执行而允许瞬时资源使用被同步从而避免瞬时资源使用中的峰值的系统和方法;如此,降低易失性并允许更多虚拟服务器在单个虚拟机监视器内以相同安全裕量运行。这是可能的,因为垃圾收集和代码优化是这样的进程其中,前者可以被提前,而后者可以被推迟,而不会显著影响正在运行的系统的性能。避免重叠的进程并不总是可能的。固定时间段内的重叠的瞬时进程的数量是计算机的总的易失性的指标。根据一个实施例,此数量可以被用来评估计算机是否具有好的安全裕量。根据另一实施例,虚拟服务器可以在云内的计算机之间移动,以降低具有高易失性的服务器的易失性,并增大具有无效力地低的易失性的服务器的易失性。根据另一实施例, 只能运行单个JVM的定制的操作系统可以降低虚拟服务器的易失性,因为没有其他可能的进程争夺资源。图1示出了根据一个实施例的系统的图示。如图1所示,系统的实施例一般包括具有在其上面运行了多个虚拟服务器104,105,107的虚拟机监视器102的计算机100。每一虚拟服务器都运行需要内部存储器106,109,111才能运转的JVM。每一虚拟服务器进一步包括执行应用服务器代码所需的Java堆108,113,115。内部存储器和堆两者都被视为缓慢地改变大小的非瞬时存储器110 (如果是的话)。诸如垃圾收集之类的短寿命的进程要求存储器112执行。短命的进程的其他示例是代码优化,以及它执行所需的存储器114。这些短命的进程所需的存储器被视为瞬时存储器 116。每一虚拟服务器包含同步模块118,119,120。随机地选择这些同步模块中的一个为主同步模块120。主同步模块使用通信信道122来同步在虚拟机监视器内运行的所有虚拟服务器的瞬时资源使用。这可以用于例如防止并行运行不同虚拟服务器中的垃圾收集和码生成,并且从而降低瞬时存储器和cpu循环的峰值使用情况。图2示出了根据一个实施例的示出了如何提前垃圾回收的图。如图2所示,图200 示出了 Java堆的已使用的存储器202如何随着时间的推移而增大的示例。已使用的存储器中的每一小的下降204都是非常快速的并要求少量的cpu和存储器使用的幼儿园(nursery)垃圾收集的结果。已使用的存储器206中的比较大的下降是可以要求大量的cpu和存储器使用的整个堆垃圾收集的结果。当在时间208用完所有Java堆时,将迫使整个堆垃圾收集。根据一个实施例,可以利用Java堆使用图的斜率的线性近似,并延长此线,直到它达到Java堆大小210,来预测此时间。可以预测垃圾的结束时间是开始时间加同一个JVM中的前一垃圾收集的长度。垃圾收集可以在208之前任何时候启动,S卩,它被提前到其天然的执行时间(这是 Java堆已满时)之前。在时间212,主同步模块需要将预测的垃圾收集从时间208提前到时间214。根据一个实施例,这是通过使用通信信道122来发送开始GC令牌216以及合适的期限来实现的,以确保GC在时间214之前发生。图3示出了根据一个实施例的如何使用由主同步模块控制的轮询方案来防止各个JVM中发生并行代码优化的图示。如图3所示,提供了三个优化队列300,301,303,一个队列用于多个JVM中的每一个,其中,每一队列都包含需要对于该JVM被优化的方法的列表。已优化的代码通常不在不同的JVM之间共享,因为优化有时取决于在JVM之间可能不同的运行时行为。不在不同的JVM之间共享已优化的代码的另一原因是,已优化的代码还编码对只在该特定JVM内有效的固定地址的多个运行时引用。如果已优化的代码将在不同的JVMs之间移动,这些引用必须被重新链接。如此示例所示,在第一 JVM已经优化了方法 Buyer. toString 302之后,同步模块将优化令牌304传输到第二 JVM。在至多由优化令牌所指定的某一时间(在本实例中是Is)内,优化令牌给予该JVM优化方法的权利。一旦方法被优化,就可以将优化令牌提供到另一 JVM,并且进程以循环(striping)方式跨多个JVM 地继续。有效地,JVM处的每个优化被推迟,直到JVM接收到优化令牌。如果JVM未能在分配的时间内完成优化,则它必须中止优化,在此实例中示出为已中止的优化306,稍后,当 JVM稍后被给予新优化令牌时,重新启动优化。将失败报告到同步模块,该同步模块可以将经修改的优化令牌308发送到JVM,该JVM使原始时隙的长度翻倍(在本实例中是2s)。如此,MusicPurchase. sample的优化可以随后被重新启动310,并具有较高的完成可能性。图4示出了根据一个实施例的如何通过提前垃圾收集和推迟代码优化来在三个 JVM之间实现同步的图示。如图4所示,垃圾收集和代码优化的日程表连续地发展,从日程表的不同实例400,402,404,406408。垃圾收集被可视化为矩形,而代码优化被可视化为椭圆。在所示出的示例中,在日程表400的第一实例中,在时间412,主同步模块从JVMl 接收了预测的垃圾收集414,从时间412开始,在时间416终止。它还调度了代码优化418。 JVM 3预测了垃圾收集420 ;而JVM 2预测了收集422。在时间424,主同步模块从JVM请求新预测,并将日程表从其原始实例400更新到经修改的实例402。在此示例中,对于JVM 1,用新预测的垃圾收集426,更新日程表。主同步模块还检测到垃圾收集422的预测的开始时间移动到428,因此与当前预测的垃圾收集
420重叠。为解决此,主同步模块更新日程表404,并将垃圾收集420提前到足够避免重叠的新时间430。它通过将合适的开始GC令牌发送到JVM 3来这样做。令人遗憾的是,调度的优化418必须被推迟,因为以前的优化统计信息示出了它将不能在缩短的时间帧内完成, 所以它不能被开始。因此,它被移动到时间432。在时间434,主同步模块再次从JVM获取最新的预测,并且因此可以更新日程表 406,408,并调度新优化436。图5示出了根据一个实施例的以不同规模实现的同步和低易失性的图示。如图5 所示,日程表500示出了反映现实世界值(在此示例中为20秒)的规模502的实际垃圾收集和代码优化。垃圾收集再次被可视化为矩形504,代码优化被可视化为椭圆506。在所示出的示例中,大部分垃圾收集和代码优化是不相重叠的,两个垃圾收集被调度为同时发生的情况508和一个垃圾收集和一个代码优化同时发生的情况510除外。值得注意的是,没有两个代码优化被调度为同时发生。因此,重叠的数量是2,这是在20秒的时间段内计算机的易失性。图6示出了根据一个实施例的同步瞬时资源使用的方法的流程图。如图6所示, 在步骤600中,主同步模块将等待来自任何JVM的、垃圾收集或代码优化已经开始或结束的通知。JVM也可以通知主同步模块,以前报告的预测的垃圾收集时间已经改变。在步骤602 中,主同步模块从在虚拟机监视器内运行的所有JVM请求垃圾收集的开始和结束时间的预测。它相应地更新日程表。在步骤604中,主同步模块通过将预测的垃圾收集的开始时间提前,来检测垃圾收集重叠并且最小化重叠。如果迫使JVM早于预测的进行垃圾收集或如果垃圾收集不能被提前,则仍可以有重叠。如果应用行为突然变化,则这会发生。在步骤606 中,主同步模块检测代码优化和垃圾收集之间的重叠,如果它发现重叠,则代码优化被延迟以避免重叠。如果迫使JVM早于预测的进行垃圾收集,则仍可能有重叠。在步骤608中,主同步模块使用轮询机制来调度新代码优化。在步骤610中,主同步模块再次进入等待状态。图7示出了根据一个实施例的提前垃圾收集以避免重叠的方法的流程图。如图7 所示,在步骤700中,主同步模块在每一垃圾收集的时间在每一开始和结束点重复。在每一时间点,它计数在该特定时间点,有多少其他垃圾收集是活动的。它存储最大数量的并行活动的垃圾收集。在步骤702中,检查存储的数量是否是零,因为如果是零,那么没有重叠的垃圾收集,且方法将结束704。如果有重叠的垃圾收集706,那么,在步骤708中,方法对于重叠任何其他垃圾收集的每一个垃圾收集计算必须将该垃圾收集提前多少,直到减少了并行重叠的垃圾收集的最大数量。不管被提前多少都不能减少并行垃圾收集的最大数量的垃圾收集是不可提前的。如果所有垃圾收集都是不可提前的712,则方法结束。如果有可提前的垃圾收集714,那么系统挑选要求最小的提前量的一个716,并提前此垃圾收集。然后,该方法在步骤700处重新开始。如图7所示的方法必然最终结束,因为在每次重复时,它将减少并行垃圾收集的最大数量(步骤716)。如果它不能减少并行垃圾收集的数量,它将结束在没有重叠垃圾收集时的步骤702中,或无法作出改进时的步骤710中。图8示出了根据一个实施例的云管理器如何控制计算机的云以降低计算机易失性的图示。如图8所示,计算机800的云包括单个计算机802,804,806,每一计算机都执行多个执行一个或多个JVM 808的虚拟服务器。每一单个计算机内的JVM都与该计算机上的主同步模块810,812,814相关联。根据一个实施例,主同步模块受云易失性管理器816控制,云易失性管理器816可以与一般被提供这样的云环境的其它管理工具818 —起工作。如果第一计算机802具有高总易失性,即,在此计算机上运行的虚拟服务器之间,在垃圾收集和代码优化之间有许多冲突,并且第二计算机804具有低总易失性,那么,云易失性管理器 816可以决定切换或改变虚拟服务器820和822的计算机主机824。如果计算机802的总易失性的减少没有超过804增大的总的易失性,那么,切换将恢复。根据一个实施例,切换之前可以检查虚拟服务器820具有比虚拟服务器822更不可预测的行为。这可以例如通过垃圾收集之间的距离的标准偏差来测量。图9示出了根据一个实施例的云管理器如何控制计算机的云以减少计算机资源使用的图示。如图9所示,计算机900的云包括单个计算机902,904,906,每一计算机都执行多个执行一个或多个JVM的虚拟服务器。每一 JVM都具有非瞬时存储器使用908和瞬时存储器使用910。为实现最大的存储器和cpu使用节省,云易失性管理器定位同一个计算机上的带有相同瞬时存储器和cpu使用的虚拟服务器也很重要。因此,云900是次优的,因为所有计算机902,904和906都要求相同的大量的瞬时存储器。通过将虚拟服务器重新定位到新云配置911中,服务器912的最大瞬时存储器使用几乎相当于原始配置902。然而,与它们的原始配置904和906相比,对于914和916,最大瞬时存储器使用显著降低。根据一个实施例,这样的重新定位基于虚拟服务器的瞬时存储器使用的平均值和标准偏差。由于减少了瞬时存储器使用,因此,可以在计算机914和916上托管更多虚拟服务器。可以通过使用根据本发明的原理编程的一个或多个常规的通用或专用数字计算机、计算设备、机器或微处理器来方便地实现本发明。对于那些精通软件技术的人来说显而易见的是,可以由熟练的程序员基于本发明的原理轻松地编制适当的软件代码。在某些实施例中,本发明包括计算机程序产品,该产品是其中存储了指令的存储介质或计算机可读介质,这些指令可以用来对计算机进行编程,以执行本发明的任何一个进程。存储介质可以包括,但不仅限于,任何类型的盘,包括软盘、光盘、DVD、⑶-ROM、微驱动,以及磁光盘、ROM、RAM、EPROM、EEPROM、DRAM、VRAM、FLASH存储器设备、磁卡或光卡,纳米系统(包括分子存储器IC),适于存储指令和/或数据的任何类型的介质或设备。前面的对本发明的描述只是为了说明和描述。它不是详尽的说明或将本发明限于所公开的准确的形式。那些精通本技术的专业人员将认识到,可以进行许多修改。所选择和描述的实施例只是为了最好地说明本发明的原理以及其实际应用,并使精通本技术的其他人懂得,带有适合于特定用途的各种修改的各实施例的本发明也是可以接受的。本发明的范围由下面的权利要求以及它们的等效内容进行定义。
权利要求
1.一种用于同步虚拟机监视器环境中的虚拟服务器之间的瞬时资源使用的系统,包括计算机,所述计算机包括在其上运行的用于执行虚拟服务器的虚拟机监视器,以及能够在所述虚拟服务器之间进行同步的通信信道; 在所述虚拟机监视器上执行的多个虚拟服务器,每一个虚拟服务器都包括用于存储和执行寿命相对长的进程的非瞬时存储器空间或堆; 用于存储和执行寿命相对短的进程的瞬时存储器空间或堆;以及其中,所述虚拟服务器能够提前或推迟利用所述瞬时存储器空间或堆的那些进程的执行,以在所述多个虚拟服务器之间同步瞬时资源使用。
2.如权利要求1所述的系统,其中,每一虚拟服务器都运行一个或多个Java虚拟机JVM。
3.如权利要求1所述的系统,其中,所述虚拟服务器中的一个或多个具有被定制以仅运行单个JVM并降低所述单个JVM的易失性的操作系统。
4.如权利要求1所述的系统,其中,所述非瞬时存储器包括内部JVM存储器和Java堆存储器。
5.如权利要求1所述的系统,其中,所述瞬时存储器是用于垃圾回收进程的存储器。
6.如权利要求1所述的系统,其中,所述瞬时存储器是用于代码优化进程的存储器。
7.如权利要求1所述的系统,其中,所述多个虚拟服务器中的每一个还包括同步模块, 所述同步模块确定垃圾收集、代码优化,或该虚拟服务器上的其他进程的时间的预测。
8.如权利要求7所述的系统,其中,所述瞬时存储器是用于垃圾回收进程的存储器,并且其中,所述同步模块提前垃圾收集以避免与其他垃圾收集重叠。
9.如权利要求7所述的系统,其中,所述瞬时存储器是用于代码优化进程的存储器,并且其中,所述同步模块推迟代码优化以避免与垃圾收集及其他代码优化重叠。
10.如权利要求1所述的系统,其中,使用实际重叠的数量来确定计算机是否能够托管更多虚拟服务器。
11.如权利要求7所述的系统,其中,所述多个虚拟服务器中的每一个进一步包括同步模块,并且其中,所述同步模块中的一个被选为所述主同步模块,其中,所述主同步模块从其他虚拟服务器中的所述同步模块请求新预测,并使用所述预测来将垃圾收集、代码优化或其他进程的日程表从原始日程表更新到经修改的日程表。
12.如权利要求7所述的系统,其中,所述同步模块使用所述通信信道来在所述多个虚拟服务器之间传递信息,并在所述虚拟服务器之间同步瞬时资源使用。
13.如权利要求1所述的系统,其中,所述通信信道是作为所述虚拟机监视器的一部分来提供的。
14.如权利要求7所述的系统,其中,所述同步模块中的每一个都执行下列步骤 等待来自虚拟服务器的通知,从所有其他虚拟服务器请求垃圾收集预测, 通过根据需要将垃圾收集提前,检测和最小化垃圾收集重叠的数量, 通过根据需要将代码优化推迟,检测和最小化代码优化重叠的数量,以及调度垃圾收集、代码优化或其他进程以在所述多个虚拟服务器之间同步瞬时资源使用。
15.如权利要求1所述的系统,其中,所述系统被用作用于控制虚拟服务器的云的易失性的组件,并且其中,所述系统还包括监测所述云内的计算机的易失性的云易失性管理器; 参与所述云的多个计算机,一台或多台计算机中的每一台都还包括具有测量的资源使用易失性、并被配置成在所述多个虚拟服务器之间同步瞬时资源使用的虚拟服务器;以及其中,所述云易失性管理器能够将虚拟服务器从参与所述云的所述多个计算机中的第一计算机切换或移动到参与所述云的所述多个计算机中的第二计算机,以改善所述云中的易失性。
16.一种用于同步虚拟机监视器环境中的虚拟服务器之间的瞬时资源使用的方法,包括下列步骤提供包括下列各项的计算机在其上运行的用于执行虚拟服务器的虚拟机监视器,以及能够在所述虚拟服务器之间进行同步的通信信道;提供在所述虚拟机监视器上执行的多个虚拟服务器,每一个虚拟服务器都包括用于存储和执行寿命相对长的进程的非瞬时存储器空间或堆; 用于存储和执行寿命相对短的进程的瞬时存储器空间或堆;以及其中,所述虚拟服务器能够提前或推迟利用所述瞬时存储器空间或堆的那些进程的执行,以在所述多个虚拟服务器之间同步瞬时资源使用。
17.如权利要求1所述的方法,其中,所述多个虚拟服务器中的每一个还包括同步模块,所述同步模块确定垃圾收集、代码优化,或该虚拟服务器上的其他进程的时间的预测, 并且其中,所述同步模块中的每一个都执行下列步骤等待来自虚拟服务器的通知,从所有其他虚拟服务器请求垃圾收集预测,通过根据需要将垃圾收集提前,检测和最小化垃圾收集重叠的数量,通过根据需要将代码优化推迟,检测和最小化代码优化重叠的数量,以及调度垃圾收集、代码优化或其他进程以在所述多个虚拟服务器之间同步瞬时资源使用。
18.如权利要求1所述的方法,其中,所述方法被用作用于控制虚拟服务器的云的易失性的组件,并且其中,所述方法还包括提供监测所述云内的计算机的易失性的云易失性管理器;提供参与所述云的多个计算机,一台或多台计算机中的每一台进一步包括具有测量的资源使用易失性、并被配置成在所述多个虚拟服务器之间同步瞬时资源使用的虚拟服务器;以及其中,所述云易失性管理器能够将虚拟服务器从参与所述云的所述多个计算机中的第一计算机切换或移动到参与所述云的所述多个计算机中的第二计算机,以改善所述云中的易失性。
19. 一种计算机可读介质,包括在其上存储了当被一台或多台计算机读取和执行时使所述一台或多台计算机执行包括下列步骤的所述方法的指令 提供包括下列各项的计算机在其上运行的用于执行虚拟服务器的虚拟机监视器,以及能够在所述虚拟服务器之间进行同步的通信信道;提供在所述虚拟机监视器上执行的多个虚拟服务器,每一个虚拟服务器包括用于存储和执行寿命相对长的进程的非瞬时存储器空间或堆; 用于存储和执行寿命相对短的进程的瞬时存储器空间或堆;以及其中,所述虚拟服务器能够提前或推迟利用所述瞬时存储器空间或堆的那些进程的执行,以在所述多个虚拟服务器之间同步瞬时资源使用。
全文摘要
用于在虚拟机监视器内运行的虚拟机(例如,Java虚拟机(JVM))之间同步瞬时资源使用的系统和方法。根据一个实施例,该系统允许同步垃圾收集和代码优化以降低瞬时处理器(cpu)和存储器使用。根据一个实施例,该系统包括计算机;用于执行运行JVM的虚拟服务器的虚拟机监视器;虚拟服务器之间的通信信道;其中,每一虚拟服务器都还包括非瞬时和瞬时存储器和同步模块。根据一个实施例,同步模块调度垃圾收集和代码优化以最小化重叠,从而降低峰值瞬时存储器和cpu使用,以及所产生的计算机内的瞬时资源使用的易失性。根据另一实施例,云管理器能够在计算机之间移动虚拟服务器,以优化云内的计算机易失性。
文档编号G06F12/02GK102576331SQ201080041903
公开日2012年7月11日 申请日期2010年8月30日 优先权日2009年9月21日
发明者S·加尔马克 申请人:甲骨文国际公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1