CN102609296B - 虚拟机分支和并行执行 - Google Patents

虚拟机分支和并行执行 Download PDF

Info

Publication number
CN102609296B
CN102609296B CN201110443423.7A CN201110443423A CN102609296B CN 102609296 B CN102609296 B CN 102609296B CN 201110443423 A CN201110443423 A CN 201110443423A CN 102609296 B CN102609296 B CN 102609296B
Authority
CN
China
Prior art keywords
virtual machine
clone
branch
state
described original
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
Application number
CN201110443423.7A
Other languages
English (en)
Other versions
CN102609296A (zh
Inventor
J·C·斯普拉德林
D·福蒂尔
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of CN102609296A publication Critical patent/CN102609296A/zh
Application granted granted Critical
Publication of CN102609296B publication Critical patent/CN102609296B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1479Generic software techniques for error detection or fault masking
    • G06F11/1482Generic software techniques for error detection or fault masking by means of middleware or OS functionality
    • G06F11/1484Generic software techniques for error detection or fault masking by means of middleware or OS functionality involving virtual machines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3636Software debugging by tracing the execution of the program
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45562Creating, deleting, cloning virtual machine instances

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computer Hardware Design (AREA)
  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)
  • Retry When Errors Occur (AREA)

Abstract

本发明描述了虚拟机分支和并行执行。本文描述了在充分利用投入的时间来设置开始状态的同时允许复杂状态转换的并行执行的状态分支系统。通过允许在虚拟机级上进行分支,状态分支系统允许在虚拟机中设置特定条件或状态,随后复制虚拟机的并行实例并分支到虚拟机的并行实例以探索不同的可能的后续状态。在检测到具有未知结果的大的状态改变之后,状态分支系统指令系统管理程序将正在执行的虚拟机复制到一个或多个分开的虚拟机中。该系统随后允许在两个或更多个虚拟机之间的分叉分支以探索从相似开始点的不同状态。一旦执行已经到达了下一状态,系统就进行协调以确定哪些副本要继续执行。因此,状态分支系统允许对复杂状态改变的更快速的探索。

Description

虚拟机分支和并行执行
技术领域
本发明涉及虚拟机技术,尤其涉及虚拟机分支。
背景技术
分支可以指代计算机程序中在那里执行向下沿着多条可能的路径继续的任何点。计算机科学中存在各种类型的分支。在机器级,软件汇编语言指令常常包含条件跳转。如果条件成功,则处理器将执行跳转所指定的位置处的代码。如果条件失败,则处理器将继续执行跳转之后的代码。如今很大程度上被流水线化且多核的处理器常常开始推测性地执行分支的两条路径。当执行到达分支条件并且该条件被评估时,处理器保持该分支被采用并转储清除推测性执行另一分支的中间结果。分支还在进程级上发生。诸如UNIX之类的操作系统包括应用编程接口(API),诸如创建进程副本并继续在新的进程中执行的fork()。这可用于多线程或用于追求进程的分叉的可能路径。
测试复杂的系统常常涉及使系统到达特定条件的大量设置以及然后测试系统对各种刺激的反应。刺激可包括以模糊测试的形式提供各种输入,从而操纵连接的硬件来测试系统的反应等。系统的某些功能可产生实质的状态改变,从而难以回到先前的条件。在其他情况下,复杂的系统可能花费很长的时间来处理一批数据,却只发现该数据是不需要的,或者要采用的分支将使得该数据变得不重要。
如今分支在太低的级别上应用以致无法在这些情形中是有帮助的。复杂系统的测试以及其他领域需要这样的一种方法:从已知状态开始并探索多个潜在的将来状态,而不必消耗太多时间和需要费力的设置。如今,通常测试装置(testharness)将串行地运行多个可能的测试遍历(test pass),或者在更高效的情况下,可充分利用多个机器来并行地运行测试。这可能仍然是耗时的,尤其在测试装置需要使每一机器到达共同状态来开始多个测试的情况下。对于复杂的状态评估,所涉及的时间可能意味着更少的时间用于测试如软件开发者希望的那么多的排列的系统,且结果在软件产品中有更多的错误。
发明内容
本文描述了在充分利用投入的时间来设置开始状态的同时允许复杂状态转换的并行执行的状态分支系统。该系统通过修改系统管理程序来允许在虚拟机级上进行分支来工作。通过允许在虚拟机级上进行分支,状态分支系统允许在虚拟机中设置特定条件或状态,随后复制虚拟机的并行实例并分支到虚拟机的并行实例以探索不同的可能的后续状态。对于更大且更复杂的评估这种解决方案频繁出现,尤其在机器的状态极大地受到这些评估的影响的情况下。在检测到或被通知具有未知结果的大的状态改变之后,状态分支系统指令系统管理程序将正在执行的虚拟机复制到一个或多个分开的虚拟机中。该系统随后允许在两个或更多个虚拟机(原始的虚拟机和副本)之间的分叉分支以探索从相似开始点的不同状态。一旦执行已经到达了下一状态,系统就进行协调以确定哪一个或哪些副本要继续执行。因此,状态分支系统允许对实质修改了计算机系统的状态的复杂状态改变的更快速的探索。
提供本发明内容以便以简化形式介绍将在以下的具体实施方式中进一步描述的一些概念。本发明内容并不旨在标识所要求保护主题的关键特征或必要特征,也不旨在用于限制所要求保护主题的范围。
附图说明
图1是示出在一个实施例中的状态分支系统的组件的框图。
图2是示出在一个实施例中的状态分支系统从原始虚拟机分支到一个或多个克隆虚拟机以考虑分叉状态的处理的流程图。
图3是示出在一个实施例中的状态分支系统退出一个或多个克隆虚拟机并将执行会聚回原始虚拟机的处理的流程图。
图4是示出在一个实施例中的状态分支系统对分支路径的并行处理的时间线图。
具体实施方式
本文描述了在充分利用投入的时间来设置开始状态的同时允许复杂状态转换的并行执行的状态分支系统。该系统通过修改系统管理程序来允许在虚拟机级上进行分支来工作。系统管理程序管理共享物理机的资源(例如,处理器、存储器、盘和网络)的一个或多个虚拟机进程。虽然所有的虚拟机运行在同一物理机上,但每一虚拟机一般是不知道其他虚拟机的且是和其他虚拟机隔离的。通过允许在虚拟机级上进行分支,状态分支系统允许在虚拟机中设置特定条件或状态,随后复制虚拟机的并行实例并分支到虚拟机的并行实例以探索不同的可能的后续状态。对于更大且更复杂的评估这种解决方案频繁出现,尤其在机器的状态极大地受到这些评估的影响的情况下。一个示例是模糊,其中能够在虚拟机中分支整个操作系统允许软件开发者极大地降低设置要模糊的下一迭代所花费的时间并允许对要被模糊的可能的执行路径的更快速的探索。
在检测到或被通知具有未知结果的大的状态改变之后,状态分支系统指令系统管理程序将正在执行的虚拟机复制到一个或多个分开的虚拟机中。该系统随后允许在两个或更多个虚拟机(原始的虚拟机和副本)之间的分叉分支以探索从相似开始点的不同状态。在某些实施例中,应用可调用系统管理程序以允许系统管理程序派生现有虚拟机的状态并将一个或多个重复的副本派生到新的虚拟机中。该系统随后允许各副本协调它们的判定树从而它们不重叠。一旦执行已经到达了下一状态,系统就进行协调以确定哪一个或哪些副本要继续执行。在某些情况下,系统可简单地分支到多个虚拟机中、探索若干状态、随后将结果组合回到原始虚拟机直到下一重大状态改变重复该过程。
在某些实施例中,状态分支系统取决于系统管理程序和操作系统修改两者来允许虚拟机级的分支。操作系统包括检测何时需要分支的能力。这可涉及许多可能的触发,诸如第一机会异常通知、应用请求、用户模式第二机会异常等等。操作还可包括应用的API或其他手段来指定每个分支实例应该修改哪个判定点。修改系统管理程序以揭示允许主操作系统或客操作系统请求对现有客操作系统实例的复制的命令。系统管理程序还可冻结客操作系统的执行,从而阻止来自引起客操作系统上的执行的任何硬件中断。另外,系统管理程序指令存储器管理单元(MMU)为新的分支实例复制整个客操作存储器分配。在某些情况下,系统可不复制所有的存储器,而是只复制某些数据页以及可能的不复制可执行页,这取决于系统管理程序提供的分支支持的级别。以此方式,主操作或客操作确定何时到达了将受益于分叉路径的并行评估的判定点,并向系统管理程序和/或操作系统请求虚拟机级上的分支。因此,状态分支系统允许对实质修改了计算机系统的状态的复杂状态改变的更快速的探索。
图1是示出在一个实施例中的状态分支系统的组件的框图。系统100包括系统管理程序组件110、调度组件120、VM通信组件130、分支标识组件140、状态克隆组件150、VM分支组件160、克隆协调组件170和结果处理组件180。这些组件中的每一个都在此处进一步详细讨论。
系统管理程序组件110在两个或更多个虚拟计算设备之间共享物理计算设备的资源。许多数据中心现在使用虚拟机来允许多个生产应用来在单个服务器上运行,每个应用在虚拟环境中,使得每个应用认为它具有对该机器的独占使用。相反,应用通常具有对虚拟机的独占使用,但共享物理资源。虚拟机向应用提供了有保证的硬件资源量,诸如中央处理单元(CPU)速度、存储器大小、盘容量、网络带宽等。系统管理程序广泛用于可允许多个虚拟机在同一计算机上并排运行的商用硬件(例如,Xen、Hyper-V和VMWare)。系统管理程序复用(并且有时调度)对诸如CPU、存储器、盘、网络的物理资源的访问。系统管理程序提供了用于CPU和I/O资源两者的调度程序,该调度程序能够提供全部资源在两个或更多个虚拟机之间的固定划分。这可以以许多方式完成,例如使用硬实时调度算法。
调度组件120提供对物理机上的资源使用的调度以及在两个或更多个虚拟机之间的资源隔离的调度,该两个或更多个虚拟机包括原始虚拟机和克隆虚拟机。调度组件120可以在系统管理程序中操作,并且提供了虚拟机隔离,从而使得每个虚拟机可以以满足提供给每个虚拟机的资源可用性的任意保证的方式来使用物理机的资源。例如,如果物理机具有2GHz处理器,并且,两个虚拟机中的每一个被保证有相等的特定部分的处理器的时间,则调度组件120可以确保每个虚拟机获得使用一半的物理机处理器时间。调度组件120可以提供对物理机存储器、盘空间、网络带宽以及其它资源的类似划分。
VM通信组件130提供两个或更多个虚拟机之间的一个或多个通信信道。对于交叉-VM通信存在各种技术,包括共享物理存储器、调用系统管理程序的超调用、将文件存储在物理盘上的公共位置等等。VM通信组件130可从原始虚拟机接收协调信息并将协调指令提供给一个或多个克隆虚拟机。协调信息可确保每一虚拟机遵循不同的分支以评估多个可能的状态。系统管理程序可以管理共享通信信道,并且对虚拟机实施安全或其它限制。原始虚拟机可充分利用系统管理程序内对创建克隆并协调这些克隆之间的活动的支持。
分支标识组件140标识软件代码的当前状态以及作为候选的一个或多个后续状态,以用于分支运行该软件代码的原始虚拟机以评估一个或多个克隆虚拟机中的后续状态。组件140可通过分析软件代码来自动标识可能的分支,或者可由应用定向到要分支到的位置。分支的自动标识与如今的CPU相似地发生,其中分析引擎可查看即将到来的指令流中的多个步骤并标识将实质地变更机器的状态的指令、函数或其他行为。手动标识可由软件开发者编写测试程序或其他应用以请求在特定位置进行分支来发生。例如,测试可设置对若干测试共同的状态,然后通知主操作系统以请求分支执行每个测试追求的分叉路径。
状态克隆组件150复制来自原始虚拟机的状态信息以创建具有类似状态的一个或多个克隆虚拟机。复制可复制原始虚拟机的整个存储器和其他虚拟硬件,或者可只选择要用于探索每个克隆将追求的分叉状态的子集。例如,测试可关闭花很长时间打开的各种类型的多个操作系统句柄。原始虚拟机可执行打开所有句柄的工作,而克隆虚拟机各自关闭特定类型的句柄来测试各种条件。在该示例中,每一克隆虚拟机追求独立的状态,但可只需要与句柄有关的的状态的一个副本,或者更一般地与在虚拟机上运行的测试应用有关的状态的一个副本,而非所有状态信息或其他应用。
VM分支组件160通过启动每一创建的克隆虚拟机并标识每一克隆要追求的执行的分支来执行分支。例如,如果分支标识组件140标识软件代码中出现的各自得到实质不同的状态的5个可能的路径,则测试应用可引导状态克隆组件150以创建4个克隆,其中原始虚拟机将追求这些状态中的一个而4个克隆虚拟机将追求剩余的4个状态。VM分支组件160通知每一克隆虚拟机它将要考虑的分支,诸如通过直接将指令指针和其他机器状态设置为该分支周围的位置和状态。VM分支组件160随后允许每一虚拟机执行以探索分叉状态。
克隆协调组件170协调每一克隆虚拟机和原始虚拟机的动作以允许丢弃不需要的分支或合并分支结果。执行不同分支的目的在于找出执行在哪里结束。在许多情况下,软件代码可追求若干分支中的一个,然后在共同的位置处结束但具有基于所采用的分支而得到不同的结果。因此,在分支之后的短暂时间段内执行分叉很大的代码,但随后在公共位置处进行会聚以考虑结果是常见的。克隆协调组件170允许测试或其他应用代码派遣多个克隆虚拟机进行某些工作以考虑各种状态,但随后通过考虑每一克隆虚拟机的结果并在状态探索完成时将执行传送回原始虚拟机来完成周期。这与如今的CPU如何推测性地执行若干分支然后转储清除那些最后没有被采用的分支相类似,只是由状态分支系统100在虚拟机级上在更广大的范围上应用。
结果处理组件180处理每一虚拟机产生的结果并将结果提供给克隆协调组件170。每一虚拟机(原始的和克隆的)可产生各种结果,包括简单的数字或文本结果,或者诸如发生在虚拟机上的进一步状态改变的复杂结果。作为一个示例,反病毒程序可能想要执行在计算设备上找到的若干所标识的软件代码模块,对计算设备扫描以寻找恶意代码来确定这些代码模块是否对计算设备进行任何破坏。反病毒程序可将每一软件代码模块派生到具有原始计算设备的所有特性的克隆虚拟机中,而结果就是软件代码对克隆作出的任何改变。反病毒程序可扫描结果以确定是否有任何改变是有害的(例如,删除重要的文件或发送垃圾邮件的联系人),并且可向原始应用提供指示是否找到有害结果的布尔结果。这允许每一克隆可能以某种方式混乱了克隆虚拟机的状态,但随后在获得特定结果之后被反病毒程序丢弃。作为另一示例,使用该系统的嵌入式设备可被设计成查验(ping)网络以确定它是否应该执行某种复杂动作以及如何执行。这一分支将允许该设备使用物理设备的空闲处理能力同时作出高等待时间请求。可能这涉及计算以重新校准传感器或天线阵列,且嵌入式设备可在接收到网络响应之前开始可能的计算。
在其上实现状态分支系统的计算设备可包括中央处理单元、存储器、输入设备(例如,键盘和定点设备)、输出设备(例如,显示设备),以及存储设备(例如,磁盘驱动器或其他非易失性存储介质)。存储器和存储设备是可以用实现或启用该系统的计算机可执行指令(例如,软件)来编码的计算机可读存储介质。另外,数据结构和消息结构可被存储或经由诸如通信链路上的信号等数据传送介质发送。可以使用各种通信链路,诸如因特网、局域网、广域网、点对点拨号连接、蜂窝电话网络等。
该系统的实施例可以在各种操作环境中实现,这些操作环境包括个人计算机、服务器计算机、手持式或膝上型设备、多处理器系统、基于微处理器的系统、可编程消费电子产品、数码照相机、网络PC、小型计算机、大型计算机、包括任何上述系统或设备、机顶盒、片上系统(SOC)等中任一种的分布式计算环境等。计算机系统可以是蜂窝电话、个人数字助理、智能电话、个人计算机、可编程消费电子设备、数码相机等。
该系统可以在由一个或多个计算机或其他设备执行的诸如程序模块等计算机可执行指令的通用上下文中描述。一般而言,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。通常,程序模块的功能可在各个实施例中按需进行组合或分布。
图2是示出在一个实施例中的状态分支系统从原始虚拟机分支到一个或多个克隆虚拟机以考虑分叉状态的处理的流程图。在框210中开始,系统接收应用代码以供在原始虚拟机上执行,其中该应用代码包括得到虚拟机的两个或更多个可能的状态的至少一个分支。该系统可接收改变机器的状态的测试或其他应用代码,且分支可基于运行时评估的条件发生。系统标识实质上变更原始虚拟机的状态的分支,并并行地执行一个或多个克隆虚拟机以评估该分支引出的路径。
在框220中继续,系统执行原始虚拟机,包括接收到的应用代码。例如,系统可在系统管理程序内操作,并引导共享同一物理资源的多个虚拟机的执行。系统执行原始虚拟机直到标识了可能显著改变虚拟机状态的分支。例如,分支可删除文件、执行长的计算、创建大量的数据或执行其他状态改变操作。
在框230中继续,系统标识在原始虚拟机上运行的应用代码中得到虚拟机的两个或更多个可能的状态的分支。例如,系统可通过使用本领域公知的代码分析工具来自动标识分支以寻找软件代码中的分叉路径。许多静态和运行时分析工具在二进制代码级和/或源代码级上检查软件代码并标识应用状态中显著分叉的位置。在某些实施例中,系统可允许应用指示出该应用将分叉到多个可能状态的位置。例如,测试应用可调用操作系统API,该操作系统API标识两个或更多个分支路径以使得系统可克隆虚拟机并并行地执行这些路径。
在框240中继续,系统创建复制原始虚拟机的当前状态的一个或多个克隆虚拟机,然后在所创建的克隆虚拟机中处理分支的一条路径以探索后续状态。克隆可包括设置标识虚拟硬件的虚拟机规范、复制原始虚拟机的存储器状态、复制附连到原始虚拟机的盘等等。某种虚拟化软件将虚拟机存储在单个文件中,包括任何嵌入式文件系统(例如,微软TM Virtual PC和Hyper-V使用的VHD文件)。系统可通过暂停原始虚拟机的执行并复制与虚拟机相关联的一个或多个文件来克隆虚拟机。
在框250中继续,系统将每一克隆虚拟机设置为执行所标识的分支的不同路径。如果克隆是原始的完美克隆,则它们各自都将如原始接下来做的那样做相同的事。然而,状态分支系统的一个目的是允许每一克隆并行地追求分支的不同路径。因此,系统将每一克隆设置为具有关于它负责探索哪条路径的信息,然后执行每一克隆和原始以允许它探索它的分配的路径。设置每一克隆可包括标识虚拟机将运行的软件代码、将指令指针和寄存器状态设到特定位置等等。
在框260中继续,系统执行原始虚拟机和克隆的虚拟机以并行地探索所标识的分支的至少两条路径。如果分支的特定路径显著地变更了机器状态,只有执行该分支的虚拟机受到影响。同时,原始虚拟机可等待以确定执行克隆的虚拟机的效果,以收集关于分支路径的信息而不影响原始虚拟机状态。如果应用代码确定未满足采用分支路径的条件,则可简单地丢弃与该路径有关的虚拟机而原始虚拟机可继续。在某些情况下,系统可选择克隆虚拟机作为主虚拟机来继续(即,接管原始虚拟机的角色),而原始虚拟机可终止。
在框270中继续,系统从克隆的虚拟机接收至少一个执行结果。该结果可指示克隆的虚拟机到达的状态、通过跨VM通信信道从克隆的虚拟机传递的信息、由克隆的虚拟机通过执行分支路径产生的输出等等。原始虚拟机可使用该执行结果来确定接下来要做什么或者选择原始虚拟机将继续处理它的结果的虚拟机。因为克隆的虚拟机被并行地执行,所以系统很可能比原本可能在原始虚拟机中尝试每一分支更快地到达结果。在框270之后,这些步骤结束。
图3是示出在一个实施例中的状态分支系统退出一个或多个克隆虚拟机并将执行会聚回原始虚拟机的处理的流程图。在框310中开始,系统选择第一克隆的虚拟机,该第一克隆的虚拟机通过先前检测原始虚拟机中的应用代码的分支并派生克隆的虚拟机以执行每一分支路径来创建。在后续迭代中,系统选择下一个克隆的虚拟机。
在框320中继续,系统检测到所选克隆的虚拟机已经完成了它被分配的分支路径的执行。在某些情况下,分支路径可表示较大的代码主体的一小节,其中该小节以有用于隔离分支的执行以确定它在较大的代码主体之外的结果的方式来产生结果或改变状态。在克隆的虚拟机的设置期间,系统可在克隆的虚拟机将已经完成分支路径的执行的点处插入指令(例如,停机或中断)或其他指示。系统管理程序或其他代码可监视并检测该指令以检测克隆的虚拟机的完成。
在框330中继续,系统标识执行克隆的虚拟机的结果状态。结果可包括数字结果、克隆的虚拟机产生的数据、对克隆的虚拟机的状态改变等等。系统可将克隆的虚拟机与原始虚拟机进行比较以标识通过探索由克隆的虚拟机执行的分支路径而产生的改变。如果原始虚拟机决定采用该分支推测性地执行的路径,则原始虚拟机可复制所选的克隆的虚拟机的状态差异或所标识的结果。
在判定框340中继续,系统确定是否存在与当前分支相关联的更多个克隆的虚拟机。如果是,则系统循环到框310以选择下一个克隆的虚拟机,否则在每一克隆的虚拟机完成处理之后系统在框350继续。
在框350中继续,系统基于在原始虚拟机上运行的应用代码中的一个或多个条件来选择要采用的分支。在某些实施例中,克隆的虚拟机作为推测性执行引擎来操作,以推测性地执行原始虚拟机可能采用的分支路径。在原始虚拟机执行到已经评估了所有条件来了解将采用哪条路径的点之后,原始虚拟机可选择分支中的一个作为正确分支并丢弃其他分支。在其他实施例中,克隆的虚拟机可表示全部由原始虚拟机使用的但被并行地执行以更快地到达结果的累计结果。在这样的情况下,原始虚拟机从每一克隆的虚拟机接收结果、对接收到的结果执行任何进一步的处理以及在克隆的虚拟机完成之后继续。
在框360中继续,系统复制来自执行所选分支的克隆的虚拟机的所标识的结果状态。以此方式,原始虚拟机受益于由各个克隆的虚拟机执行的并行执行。无论采用哪个分支,原始虚拟机不会受到测试每一分支的打扰并且不必在先前代码完成之后等待串行地执行分支。相反,在原始虚拟机中完成先前代码的同时,克隆的虚拟机各自执行各分支中的一个,并且所选的虚拟机在它准备好之后(并且在原始虚拟机本身原本能够获得结果之前)立即将结果提供给原始虚拟机。
在框370中继续,系统使用来自克隆的虚拟机的复制结果来继续原始虚拟机的执行。在某些实施例中,系统可丢弃原始虚拟机并通过所选的克隆的虚拟机继续执行。系统可丢弃或“转储清除”表示未被采用的分支路径的任何克隆的虚拟机。在框370之后,这些步骤结束。
图4是示出在一个实施例中的状态分支系统对分支路径的并行处理的时间线图。时间线的第一行410表示本文描述的原始虚拟机的处理。在传统系统中,原始虚拟机或物理机将执行全部的处理。原始虚拟机在遇到原始虚拟机正在执行的应用代码中的分支450之前处理一个或多个任务440。在分支之前的某一点处,原始虚拟机标识分支并派生并行地执行分支的可能路径的两个克隆的虚拟机。第二行420表示第一克隆的虚拟机的处理,而第三行430表示第二克隆的虚拟机的处理。在原始虚拟机完成预分支任务440的同时,第一克隆的虚拟机执行与第一分支路径460相关联的代码,而第二克隆的虚拟机并行地执行与第二分支路径470相关联的代码。当原始虚拟机到达分支450时,它基于原始虚拟机的当前状态以及分支450的任何条件来确定要采用的分支的路径。原始虚拟机选择胜利的分支并将结果480复制到原始虚拟机。随后原始虚拟机继续执行,丢弃克隆的虚拟机。以此方式,克隆的虚拟机并行地准备原始虚拟机的将来状态并将原始虚拟机与在评估每一分支路径时可能已经涉及的侵入性状态改变隔离开。
在某些实施例中,状态分支系统提供了用于设备驱动器测试的框架。设备驱动器测试常常是困难的,因为它涉及物理硬件和状态改变,且如果不正确地处理物理硬件和状态改变,则可能在操作系统的内核空间中发生死锁。状态分支系统允许虚拟化物理硬件的状态改变,从而使得并行操作的多个克隆虚拟机可评估各个可能的硬件输入的结果和相应的驱动器响应。这促进了对设备驱动器软件代码的更快且更稳健的开发。
在某些实施例中,状态分支系统确定用于派生附加虚拟机以用于探索分支路径的阈值。虚拟机的创建和设置招致时间和资源使用方面的某种成本。对于小的分支,设置克隆的虚拟机所涉及的时间可能不值得从它们所获得的益处。因此,系统可确定与使用克隆的虚拟机的益处有关的阈值,并且仅在折衷最终将节约执行时间或提供其他正面结果时派生新的克隆的虚拟机。应用能够基于应用专用的考虑来设置或微调该阈值。类似地,在某些实施例中,状态分支系统在评估使用克隆的虚拟机以用于探索分支路径的益处时可考虑克隆的虚拟机是否会影响克隆的虚拟机外部的任何资源(即,向外部或链接的物理设备发出命令、通过网络发送分组等)。
在某些实施例中,状态分支系统在与原始虚拟机不同的物理机上派生克隆的虚拟机。虚拟机很好地适于物理机之间的简单移动,且该系统可通过在分开的物理机上执行克隆的虚拟机的部分或全部来将对各个分支路径的探索卸载到其他物理机。如果需要,克隆的虚拟机可经由网络或物理机之间的其他通信信道与原始虚拟机通信。
在某些实施例中,在系统管理程序检测到使用克隆的虚拟机以用于探索分支路径的机会时,状态分支系统提供来自系统管理程序的通知。系统管理程序可监视虚拟机中每一个正在运行的进程,并自动地检测其中分开的虚拟机可准备以用于并行的分支路径的情况。在这样的情况下,系统管理程序可提供应用通知,应用可对该应用通知注册并作出响应以指示该应用是否想要系统管理程序派生克隆的虚拟机。
在某些实施例中,状态分支系统提供一种新形式的调试,该调试提供了在时间上往返于在虚拟机上运行的应用的各个状态的效果。该系统在应用执行中的各个点处以克隆的虚拟机的形式创建各检查点。每一克隆的虚拟机表示在特定时间点上的应用的状态,且与发生在应用上的任何后续改变隔离开。这允许软件开发者附连调试程序,并在问题发生之前或期间的一个或多个时间点上检查应用状态。
在某些实施例中,状态分支系统提供了用于比较用于执行各种任务的类似算法的A-B测试。例如,该系统可通过下列方法来测试操作系统分页或调度算法:将测试操作系统分页或调度算法各自设置在要管理一组相似进程的分开的克隆的虚拟机中,然后并行地执行每一克隆的虚拟机以确定就更快速的执行或其他因素而言,哪个算法提供更好的结果。如今串行地重新运行这些测试引入新的状态。尽管测试装置试图每次都设置相同的状态,但某些总是改变的事物使得比较变得困难。通过使用状态分支系统,每一测试开始于已知的克隆状态,且可比较结果,从而较少受到非预期的状态改变的影响。
从前面的描述中可以看出,可以理解,此处描述的状态分支系统的特定实施例只是为了说明,但是,在不偏离本发明的精神和范围的情况下,可以进行各种修改。因此,本发明只受所附权利要求限制。

Claims (14)

1.一种用于从原始虚拟机分支到一个或多个克隆虚拟机以考虑分叉状态的计算机实现的方法,所述方法包括:
接收(210)应用代码以供在所述原始虚拟机上执行,其中所述应用代码包括得到虚拟机的两个或更多个可能的状态的至少一个分支;
执行(220)包括接收到的应用代码的所述原始虚拟机;
标识(230)在所述原始虚拟机上运行的应用代码中得到所述原始虚拟机的两个或更多个可能的状态的分支,其中标识所述分支包括从所述应用代码接收指示在哪里所述应用将分支到多个可能的状态的位置的信息;
创建(240)复制所述原始虚拟机的当前状态的一个或多个克隆虚拟机,然后每一克隆虚拟机在所创建的克隆虚拟机中处理所述分支的一条路径以探索后续状态;
将每一克隆虚拟机设置(250)为执行所标识的分支的不同路径;
执行(260)所述原始虚拟机和克隆的虚拟机以并行地探索所标识的分支的至少两条路径;以及
从所述克隆的虚拟机接收(270)至少一个执行结果,
其中,前面的步骤由至少一个处理器执行。
2.如权利要求1所述的方法,其特征在于,接收所述应用代码包括接收改变机器的状态的且基于运行时评估的条件包括分支的应用代码。
3.如权利要求1所述的方法,其特征在于,执行所述原始虚拟机包括系统管理程序引导共享同一物理资源的多个虚拟机的执行。
4.如权利要求1所述的方法,其特征在于,执行所述原始虚拟机包括执行所述原始虚拟机直到标识出可能改变所述原始虚拟机的状态超过预定阈值的分支,并确定所述克隆的虚拟机是否将影响所述原始虚拟机实例以外的任何资源。
5.如权利要求1所述的方法,其特征在于,标识所述分支包括使用代码分析工具自动标识所述分支。
6.如权利要求1所述的方法,其特征在于,标识所述分支包括接收对标识两个或更多个分支路径的应用编程接口(API)的调用,系统借此能克隆所述原始虚拟机并并行地执行路径。
7.如权利要求1所述的方法,其特征在于,创建克隆虚拟机包括设置标识虚拟硬件的一个或多个虚拟机规范、复制所述原始虚拟机的存储器状态以及复制附连到所述原始虚拟机的一个或多个盘。
8.如权利要求1所述的方法,其特征在于,创建克隆虚拟机包括暂停所述原始虚拟机的执行并复制与所述原始虚拟机相关联的一个或多个物理机文件。
9.如权利要求1所述的方法,其特征在于,设置每一克隆虚拟机包括用关于它要负责探索哪条路径的信息来设置每一克隆虚拟机,然后执行每一克隆虚拟机和所述原始虚拟机以允许它们各自探索它被分配的路径。
10.如权利要求1所述的方法,其特征在于,设置每一克隆虚拟机包括标识所述克隆虚拟机将运行的软件代码、以及将所述克隆虚拟机的指令指针和寄存器状态设置到特定位置。
11.如权利要求1所述的方法,其特征在于,接收至少一个执行结果包括接收所述克隆的虚拟机到达的状态的指示。
12.一种用于从原始虚拟机分支到一个或多个克隆虚拟机以考虑分叉状态的计算机实现的系统,所述系统包括:
用于接收(210)应用代码以供在所述原始虚拟机上执行的装置,其中所述应用代码包括得到虚拟机的两个或更多个可能的状态的至少一个分支;
用于执行(220)包括接收到的应用代码的所述原始虚拟机的装置;
用于标识(230)在所述原始虚拟机上运行的应用代码中得到所述原始虚拟机的两个或更多个可能的状态的分支的装置,其中标识所述分支包括从所述应用代码接收指示在哪里所述应用将分支到多个可能的状态的位置的信息;
用于创建(240)复制所述原始虚拟机的当前状态的一个或多个克隆虚拟机,然后每一克隆虚拟机在所创建的克隆虚拟机中处理所述分支的一条路径以探索后续状态的装置;
用于将每一克隆虚拟机设置(250)为执行所标识的分支的不同路径的装置;
用于执行(260)所述原始虚拟机和克隆的虚拟机以并行地探索所标识的分支的至少两条路径的装置;以及
用于从所述克隆的虚拟机接收(270)至少一个执行结果的装置。
13.如权利要求12所述的系统,其特征在于,进一步包括用于从所述原始虚拟机接收协调信息并将协调指令提供给一个或多个克隆虚拟机的装置。
14.如权利要求12所述的系统,其特征在于,进一步包括用于通过分析所述应用代码来自动标识可能的分支的装置。
CN201110443423.7A 2010-12-17 2011-12-16 虚拟机分支和并行执行 Active CN102609296B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/972,424 2010-12-17
US12/972,424 US8677355B2 (en) 2010-12-17 2010-12-17 Virtual machine branching and parallel execution

Publications (2)

Publication Number Publication Date
CN102609296A CN102609296A (zh) 2012-07-25
CN102609296B true CN102609296B (zh) 2015-04-01

Family

ID=46236241

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201110443423.7A Active CN102609296B (zh) 2010-12-17 2011-12-16 虚拟机分支和并行执行

Country Status (9)

Country Link
US (2) US8677355B2 (zh)
EP (1) EP2652600B1 (zh)
JP (1) JP5960161B2 (zh)
KR (1) KR101957533B1 (zh)
CN (1) CN102609296B (zh)
AR (1) AR084048A1 (zh)
HK (1) HK1174405A1 (zh)
TW (1) TWI534709B (zh)
WO (1) WO2012082811A2 (zh)

Families Citing this family (51)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2007143278A2 (en) 2006-04-12 2007-12-13 Soft Machines, Inc. Apparatus and method for processing an instruction matrix specifying parallel and dependent operations
EP2122461A4 (en) 2006-11-14 2010-03-24 Soft Machines Inc DEVICE AND METHOD FOR PROCESSING COMMUNICATIONS IN A MULTITHREAD ARCHITECTURE WITH CONTEXT CHANGES
US8782434B1 (en) 2010-07-15 2014-07-15 The Research Foundation For The State University Of New York System and method for validating program execution at run-time
US8407804B2 (en) * 2010-09-13 2013-03-26 Sophos Plc System and method of whitelisting parent virtual images
EP2616928B1 (en) 2010-09-17 2016-11-02 Soft Machines, Inc. Single cycle multi-branch prediction including shadow cache for early far branch prediction
US8489929B2 (en) * 2010-09-30 2013-07-16 Salesforce.Com, Inc. Facilitating large-scale testing using virtualization technology in a multi-tenant database environment
EP2689327B1 (en) 2011-03-25 2021-07-28 Intel Corporation Executing instruction sequence code blocks by using virtual cores instantiated by partitionable engines
US9274793B2 (en) 2011-03-25 2016-03-01 Soft Machines, Inc. Memory fragments for supporting code block execution by using virtual cores instantiated by partitionable engines
WO2012135041A2 (en) 2011-03-25 2012-10-04 Soft Machines, Inc. Register file segments for supporting code block execution by using virtual cores instantiated by partitionable engines
TWI548994B (zh) 2011-05-20 2016-09-11 軟體機器公司 以複數個引擎支援指令序列的執行之互連結構
KR101639853B1 (ko) 2011-05-20 2016-07-14 소프트 머신즈, 인크. 복수의 엔진에 의해 명령어 시퀀스들의 실행을 지원하기 위한 자원들 및 상호접속 구조들의 비집중 할당
KR101842550B1 (ko) 2011-11-22 2018-03-28 소프트 머신즈, 인크. 다중 엔진 마이크로프로세서용 가속 코드 최적화기
EP2783281B1 (en) 2011-11-22 2020-05-13 Intel Corporation A microprocessor accelerated code optimizer
US9811371B2 (en) * 2012-06-29 2017-11-07 International Business Machines Corporation Concurrent execution of a computer software application along multiple decision paths
US9697356B2 (en) * 2012-08-21 2017-07-04 Empire Technology Development Llc Detection and mitigation of side-channel attacks
US9063721B2 (en) 2012-09-14 2015-06-23 The Research Foundation For The State University Of New York Continuous run-time validation of program execution: a practical approach
US9069782B2 (en) 2012-10-01 2015-06-30 The Research Foundation For The State University Of New York System and method for security and privacy aware virtual machine checkpointing
CN103229150B (zh) * 2012-12-24 2016-01-13 华为技术有限公司 数据控制方法及系统
US9569216B2 (en) 2013-03-15 2017-02-14 Soft Machines, Inc. Method for populating a source view data structure by using register template snapshots
US9886279B2 (en) 2013-03-15 2018-02-06 Intel Corporation Method for populating and instruction view data structure by using register template snapshots
US9811342B2 (en) 2013-03-15 2017-11-07 Intel Corporation Method for performing dual dispatch of blocks and half blocks
US9904625B2 (en) 2013-03-15 2018-02-27 Intel Corporation Methods, systems and apparatus for predicting the way of a set associative cache
US10275255B2 (en) 2013-03-15 2019-04-30 Intel Corporation Method for dependency broadcasting through a source organized source view data structure
US9632825B2 (en) 2013-03-15 2017-04-25 Intel Corporation Method and apparatus for efficient scheduling for asymmetrical execution units
WO2014150971A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for dependency broadcasting through a block organized source view data structure
EP2972845B1 (en) 2013-03-15 2021-07-07 Intel Corporation A method for executing multithreaded instructions grouped onto blocks
CN105247484B (zh) 2013-03-15 2021-02-23 英特尔公司 利用本地分布式标志体系架构来仿真访客集中式标志体系架构的方法
US10140138B2 (en) 2013-03-15 2018-11-27 Intel Corporation Methods, systems and apparatus for supporting wide and efficient front-end operation with guest-architecture emulation
WO2014150806A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for populating register view data structure by using register template snapshots
WO2014150991A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for implementing a reduced size register view data structure in a microprocessor
US9891924B2 (en) 2013-03-15 2018-02-13 Intel Corporation Method for implementing a reduced size register view data structure in a microprocessor
CN104216793B (zh) * 2013-05-31 2017-10-17 国际商业机器公司 应用程序备份、恢复的方法及设备
WO2015030717A1 (en) * 2013-08-27 2015-03-05 Empire Technology Development Llc Consolidating operations associated with a plurality of host devices
US10339236B2 (en) * 2013-09-10 2019-07-02 Vmware, Inc. Techniques for improving computational throughput by using virtual machines
US20150121374A1 (en) * 2013-10-30 2015-04-30 Alistair Black Application Processing Systems and Methods
CN104598776B (zh) * 2013-10-31 2018-11-23 深圳市腾讯计算机系统有限公司 一种对软件进行测试的方法及装置
US9323565B2 (en) 2013-12-20 2016-04-26 Vmware, Inc. Provisioning customized virtual machines without rebooting
US10977063B2 (en) 2013-12-20 2021-04-13 Vmware, Inc. Elastic compute fabric using virtual machine templates
US9575792B2 (en) * 2014-03-14 2017-02-21 Netapp, Inc. Method and system for replicating virtual machines
JP2015212920A (ja) * 2014-04-16 2015-11-26 俊介 山内 先行画像生成プログラム、仮想マシーン制御プログラムおよびコンピュータ可読記憶媒体
US9513949B2 (en) * 2014-08-23 2016-12-06 Vmware, Inc. Machine identity persistence for users of non-persistent virtual desktops
US9513948B2 (en) * 2015-02-05 2016-12-06 International Business Machines Corporation Automated virtual machine provisioning based on defect state
US20160378521A1 (en) * 2015-06-24 2016-12-29 International Business Machines Corporation Automated test optimization
US20170052866A1 (en) * 2015-08-21 2017-02-23 International Business Machines Corporation Managing a shared pool of configurable computing resources which uses a set of dynamically-assigned resources
US10846117B1 (en) * 2015-12-10 2020-11-24 Fireeye, Inc. Technique for establishing secure communication between host and guest processes of a virtualization architecture
US20180275871A1 (en) * 2017-03-22 2018-09-27 Intel Corporation Simulation of a plurality of storage devices from a single storage device coupled to a computational device
US10310966B1 (en) * 2017-06-01 2019-06-04 Amazon Technologies, Inc. Automatic test stack creation via production system replication
US10789139B2 (en) 2018-04-12 2020-09-29 Vmware, Inc. Method of rebuilding real world storage environment
US10936354B2 (en) * 2018-04-13 2021-03-02 Vmware, Inc. Rebuilding a virtual infrastructure based on user data
CN110389857B (zh) * 2018-04-20 2023-04-21 伊姆西Ip控股有限责任公司 数据备份的方法、设备和非瞬态计算机存储介质
CN112948234B (zh) * 2020-08-26 2023-02-21 深圳市明源云链互联网科技有限公司 接口测试方法、装置及电子设备

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101211272A (zh) * 2006-12-29 2008-07-02 英特尔公司 动态虚拟机生成

Family Cites Families (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5313647A (en) * 1991-09-20 1994-05-17 Kendall Square Research Corporation Digital data processor with improved checkpointing and forking
JPH06222913A (ja) * 1993-01-25 1994-08-12 Fujitsu Ltd プログラム解析装置
US5905855A (en) * 1997-02-28 1999-05-18 Transmeta Corporation Method and apparatus for correcting errors in computer systems
US6795966B1 (en) * 1998-05-15 2004-09-21 Vmware, Inc. Mechanism for restoring, porting, replicating and checkpointing computer systems using state extraction
US8631066B2 (en) * 1998-09-10 2014-01-14 Vmware, Inc. Mechanism for providing virtual machines for use by multiple users
US6944754B2 (en) * 2002-10-02 2005-09-13 Wisconsin Alumni Research Foundation Method and apparatus for parallel execution of computer software using a distilled program
US7299468B2 (en) 2003-04-29 2007-11-20 International Business Machines Corporation Management of virtual machines to utilize shared resources
US7849462B2 (en) * 2005-01-07 2010-12-07 Microsoft Corporation Image server
JP4585463B2 (ja) 2006-02-15 2010-11-24 富士通株式会社 仮想計算機システムを機能させるためのプログラム
US7664626B1 (en) 2006-03-24 2010-02-16 Symantec Corporation Ambiguous-state support in virtual machine emulators
US8296759B1 (en) * 2006-03-31 2012-10-23 Vmware, Inc. Offloading operations to a replicate virtual machine
US8151263B1 (en) * 2006-03-31 2012-04-03 Vmware, Inc. Real time cloning of a virtual machine
US8234640B1 (en) * 2006-10-17 2012-07-31 Manageiq, Inc. Compliance-based adaptations in managed virtual systems
US8458695B2 (en) * 2006-10-17 2013-06-04 Manageiq, Inc. Automatic optimization for virtual systems
US20090037885A1 (en) 2007-07-30 2009-02-05 Microsoft Cororation Emulating execution of divergent program execution paths
US8949585B2 (en) * 2007-10-09 2015-02-03 Vmware, Inc. In-place conversion of virtual machine state
US7844954B2 (en) * 2007-11-06 2010-11-30 Vmware, Inc. Using branch instruction counts to facilitate replay of virtual machine instruction execution
US9009020B1 (en) * 2007-12-12 2015-04-14 F5 Networks, Inc. Automatic identification of interesting interleavings in a multithreaded program
US8495636B2 (en) * 2007-12-19 2013-07-23 International Business Machines Corporation Parallelizing single threaded programs by performing look ahead operation on the single threaded program to identify plurality of instruction threads prior to execution
US8281318B2 (en) * 2008-03-31 2012-10-02 Vmware, Inc. Systems and methods for inter process communication based on queues
US20090307763A1 (en) * 2008-06-05 2009-12-10 Fiberlink Communications Corporation Automated Test Management System and Method
US8473946B2 (en) 2008-07-03 2013-06-25 Vmware, Inc. Efficient recording and replaying of non-deterministic instructions in a virtual machine and CPU therefor
JP2010026572A (ja) * 2008-07-15 2010-02-04 Hitachi Ltd 仮想計算機の現出方法、この方法を実行するためのプログラム、及びこの方法を実行するサーバ
US20100070678A1 (en) 2008-09-12 2010-03-18 Vmware, Inc. Saving and Restoring State Information for Virtualized Computer Systems
US20100083251A1 (en) * 2008-09-12 2010-04-01 Hyper9, Inc. Techniques For Identifying And Comparing Virtual Machines In A Virtual Machine System
JP5104958B2 (ja) * 2008-10-03 2012-12-19 富士通株式会社 仮想計算機システムのテスト方法、テストプログラム並びにその記録媒体、仮想計算機システム
US9141381B2 (en) 2008-10-27 2015-09-22 Vmware, Inc. Version control environment for virtual machines
JP5352848B2 (ja) 2008-11-28 2013-11-27 株式会社日立製作所 仮想計算機の制御方法及び計算機装置
US9817695B2 (en) * 2009-04-01 2017-11-14 Vmware, Inc. Method and system for migrating processes between virtual machines
US8656222B2 (en) * 2009-07-30 2014-02-18 Vmware, Inc. Method and system for recording a selected computer process for subsequent replay
US8572613B1 (en) * 2009-12-28 2013-10-29 Amazon Technologies, Inc. Comparison of virtual computing states by performing identified repeatable computations in a changing virtual computing environment
US9002972B2 (en) * 2010-01-29 2015-04-07 Symantec Corporation Systems and methods for sharing the results of computing operations among related computing systems
US8990813B2 (en) * 2010-03-29 2015-03-24 Red Hat, Inc. Automated virtual machine image deployment and testing by accessing downloadable test packages and dynamically-changing test parameters
US8898668B1 (en) * 2010-03-31 2014-11-25 Netapp, Inc. Redeploying baseline virtual machine to update a child virtual machine by creating and swapping a virtual disk comprising a clone of the baseline virtual machine
US8489929B2 (en) * 2010-09-30 2013-07-16 Salesforce.Com, Inc. Facilitating large-scale testing using virtualization technology in a multi-tenant database environment
US9165136B1 (en) * 2010-10-27 2015-10-20 Amazon Technologies, Inc. Supervising execution of untrusted code
US8443365B2 (en) * 2010-11-03 2013-05-14 Hewlett-Packard Development Company, L.P. Methods and systems to clone a virtual machine instance

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101211272A (zh) * 2006-12-29 2008-07-02 英特尔公司 动态虚拟机生成

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
US 7,664,626 B1,2010.02.16,说明书第12栏第1-65行,第13栏第1-29行,第17栏第21-59行,图2A,图2B1,图2B2. *

Also Published As

Publication number Publication date
JP5960161B2 (ja) 2016-08-02
WO2012082811A3 (en) 2012-09-27
HK1174405A1 (zh) 2013-06-07
JP2013546103A (ja) 2013-12-26
EP2652600A2 (en) 2013-10-23
EP2652600A4 (en) 2014-07-09
CN102609296A (zh) 2012-07-25
TWI534709B (zh) 2016-05-21
US20140201739A1 (en) 2014-07-17
US8677355B2 (en) 2014-03-18
EP2652600B1 (en) 2017-09-06
KR20130126938A (ko) 2013-11-21
AR084048A1 (es) 2013-04-17
US20120159478A1 (en) 2012-06-21
KR101957533B1 (ko) 2019-03-12
TW201227520A (en) 2012-07-01
WO2012082811A2 (en) 2012-06-21

Similar Documents

Publication Publication Date Title
CN102609296B (zh) 虚拟机分支和并行执行
CN107924323B (zh) 基于依赖的容器部署
US20180365108A1 (en) Fault recovery management in a cloud computing environment
CN111176804A (zh) 包括容器的集群环境中的自动基础设施更新
US10871982B2 (en) Virtual processor scheduling via memory monitoring
US11188348B2 (en) Hybrid computing device selection analysis
US20180285108A1 (en) Branch prediction using a perceptron-based branch prediction technique
US11188364B1 (en) Compilation strategy for a sharable application snapshot
US20210294730A1 (en) Managing resources used during a development pipeline
CN109690536B (zh) 将多核指令踪迹从虚拟平台仿真器取到性能模拟模型的方法和系统
Harichane et al. KubeSC‐RTP: Smart scheduler for Kubernetes platform on CPU‐GPU heterogeneous systems
US10540737B2 (en) Processing unit performance projection using dynamic hardware behaviors
US10521272B1 (en) Testing in grid computing systems
CN116051031A (zh) 项目调度系统、介质及电子设备
JP4997144B2 (ja) マルチタスク処理装置およびその方法
Kumar et al. Utilizing Machine Learning Techniques for Worst-Case Execution Time Estimation on GPU Architectures
Talluri et al. ExDe: Design space exploration of scheduler architectures and mechanisms for serverless data-processing
Biancheri et al. Fine-grained multilayer virtualized systems analysis
US11880231B2 (en) Accurate timestamp or derived counter value generation on a complex CPU
US20240160471A1 (en) Deep Learning Scheduler Toolkit
Konwinski Improving mapreduce performance in heterogeneous environments
Salam Power Modeling and Resource Optimization in Virtualized Environments
Prieto Torralbo et al. Fast, Accurate Processor Evaluation Through Heterogeneous, Sample-Based Benchmarking
Soualhia Adaptive Failure-Aware Scheduling for Hadoop
Das et al. Improving Energy Efficiency of Mobile Execution Exploiting Similarity of Application Control Flow

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 1174405

Country of ref document: HK

C14 Grant of patent or utility model
GR01 Patent grant
ASS Succession or assignment of patent right

Owner name: MICROSOFT TECHNOLOGY LICENSING LLC

Free format text: FORMER OWNER: MICROSOFT CORP.

Effective date: 20150723

C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20150723

Address after: Washington State

Patentee after: Micro soft technique license Co., Ltd

Address before: Washington State

Patentee before: Microsoft Corp.

REG Reference to a national code

Ref country code: HK

Ref legal event code: GR

Ref document number: 1174405

Country of ref document: HK