[go: up one dir, main page]

CN102609296B - Virtual machine branching and parallel execution - Google Patents

Virtual machine branching and parallel execution 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
Chinese (zh)
Other versions
CN102609296A (en
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/en
Application granted granted Critical
Publication of CN102609296B publication Critical patent/CN102609296B/en
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/36Prevention of errors by analysis, debugging or testing of software
    • G06F11/362Debugging of software
    • G06F11/3636Debugging of software 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)
  • Retry When Errors Occur (AREA)
  • Stored Programmes (AREA)

Abstract

A state branching system is described herein that allows parallel execution of complex state transitions while leveraging time invested to setup a starting state. By allowing branching at the virtual machine level, the state branching system allows setup of a particular condition or state in a virtual machine, then copying and branching to parallel instances of the virtual machine to explore different possible subsequent states. Upon detecting a large state change with unknown outcome, the state branching system instructs the hypervisor to copy the executing virtual machine into one or more separate virtual machines. The system then allows divergent branching between the two or more virtual machines to explore different states from a similar starting point. Once the executions have reached the next state, the system coordinates to determine which copies will continue execution. Thus, the state branching system allows faster exploration of complex state changes.

Description

Virtual machine branch and executed in parallel
Technical field
The present invention relates to virtual machine technique, particularly relate to virtual machine branch.
Background technology
Branch can refer in computer program any point performing possible along many path continuation there downwards.Various types of branch is there is in computer science.In machine level, software assembly language directive usually comprises conditional jump.If condition success, then processor is by the code of the position specified by execution redirect.If condition failure, then processor performs the code after redirect by continuing.Nowadays to be pipelined to a great extent and the processor of multinuclear usually starts speculatively to perform two paths of branch.When perform arrive branch condition and this condition is evaluated time, processor keeps this branch to be used and flush predictive performs the intermediate result of another branch.Branch also occurs in process level.The operating system of such as UNIX and so on comprises application programming interface (API), such as creates the fork () that process copy also continues to perform in new process.This can be used for multithreading or the possible path for the bifurcated of pursuing process.
The system of testing complex usually relate to make system arrive specified conditions a large amount of setting and then test macro to the reaction of various stimulation.Stimulation can comprise provides various input with the form of fuzz testing, thus handles the reaction etc. that the hardware connected carrys out test macro.Some function of system can produce the state change of essence, thus is difficult to get back to previous condition.In other cases, complicated system may spend long time to process a batch data, but only find that these data are unwanted, or the branch that will adopt will make these data become inessential.
Nowadays branch applies so that cannot be helpful in these cases in too low rank.The test of complication system and other field need a kind of so method: from known state, explore multiple potential state in future, and need not consume the too many time and need the setting of effort.Nowadays, usual proving installation (testharness) will run multiple possible test traversal (test pass) serially, or in more efficient situation, can make full use of multiple machine and carry out testing results concurrently.This may remain consuming time, especially when proving installation needs to make each machine arrive common state to start multiple test.For the state estimation of complexity, the involved time may mean that less time is for testing the system of the so much arrangement wished as software developer, and result has more mistake in software product.
Summary of the invention
This document describes the branches of states system of the executed in parallel allowing complex state conversion while the time making full use of input arranges initial state.This system allows in virtual machine-level, carry out branch by amendment system supervisor and carrys out work.By allowing to carry out branch in virtual machine-level, branches of states system allows in virtual machine, arrange specified conditions or state, copy the parallel instances of virtual machine subsequently and the parallel instances being branched off into virtual machine to explore different possible succeeding states.For more greatly and this solution of more complicated assessment frequently occur, especially when machine status pole the earth be subject to these assessment affecting.After detecting or the notified large state with unknown result changes, the virtual machine performed copies in one or more virtual machine separated by branches of states system directive system supervisor.This system allows the bifurcated branches between two or more virtual machines (original virtual machine and copy) to explore the different conditions from similar starting point subsequently.Reach NextState once perform, system just carries out coordinating to determine which or which copy will continue to perform.Therefore, branches of states system has allowed to substantial modification the exploration faster that the complex state of the state of computer system changes.
There is provided content of the present invention to introduce some concepts will further described in following embodiment in simplified form.Content of the present invention is not intended to the key feature or the essential feature that identify claimed subject, is not intended to the scope for limiting claimed subject yet.
Accompanying drawing explanation
Fig. 1 is the block diagram of the assembly of the branches of states system illustrated in one embodiment.
Fig. 2 illustrates that branches of states system is in one embodiment branched off into one or more clone's virtual machine to consider the process flow diagram of the process of bifurcated state from original virtual machine.
Fig. 3 illustrates that branches of states system in one embodiment exits one or more clone's virtual machine and will perform the process flow diagram assembling back the process of original virtual machine.
Fig. 4 illustrates the time line chart of branches of states system in one embodiment to the parallel processing of individual path.
Embodiment
This document describes the branches of states system of the executed in parallel allowing complex state conversion while the time making full use of input arranges initial state.This system allows in virtual machine-level, carry out branch by amendment system supervisor and carrys out work.One or more virtual machine processes of the resource (such as, processor, storer, dish and network) of physical machine are shared in system supervisor management.Although all virtual machines operate on Same Physical machine, each virtual machine is generally do not know other virtual machines and isolate with other virtual machines.By allowing to carry out branch in virtual machine-level, branches of states system allows in virtual machine, arrange specified conditions or state, copy the parallel instances of virtual machine subsequently and the parallel instances being branched off into virtual machine to explore different possible succeeding states.For more greatly and this solution of more complicated assessment frequently occur, especially when machine status pole the earth be subject to these assessment affecting.An example is fuzzy, wherein can the whole operating system of branch allow software developer greatly to reduce to arrange to want time of spending of fuzzy following iteration and allow will by the exploration faster of fuzzy possible execution route in virtual machine.
After detecting or the notified large state with unknown result changes, the virtual machine performed copies in one or more virtual machine separated by branches of states system directive system supervisor.This system allows the bifurcated branches between two or more virtual machines (original virtual machine and copy) to explore the different conditions from similar starting point subsequently.In certain embodiments, application can be called system supervisor and derived from the state of existing virtual machine to allow system supervisor and derived from new virtual machine by the copy of one or more repetition.This system allows each copy to coordinate their decision tree subsequently thus they are not overlapping.Reach NextState once perform, system just carries out coordinating to determine which or which copy will continue to perform.In some cases, system can be branched off in multiple virtual machine simply, explores some states, subsequently result combination be got back to original virtual machine until next great state changes repeat this process.
In certain embodiments, branches of states system depends on that both system supervisor and operating system amendment allow the branch of virtual machine-level.Operating system comprises the ability when detection needs branch.This can relate to many possible triggerings, and the abnormal notice of such as the first chance, application request, user model second chance are abnormal etc.Operation also can comprise the API of application or which decision-point is other means should revise to specify each branch example.Amendment system supervisor allows master operating system or objective operating system request to the order copied of existing objective operation system example to disclose.System supervisor also can freeze the execution of objective operating system, thus stops any hardware interrupts from the execution caused in objective operating system.In addition, for new branch's example copies, whole objective operational store distributes system supervisor command memory administrative unit (MMU).In some cases, system can not copy all storeies, but only copies some data page and possible not copying can perform page, and this depends on the rank that the branch that system supervisor provides supports.In this way, main operation or visitor's operation determine when the decision-point of the evaluated in parallel reached benefiting from diverging paths, and to the branch on system supervisor and/or operating system request virtual machine-level.Therefore, branches of states system has allowed to substantial modification the exploration faster that the complex state of the state of computer system changes.
Fig. 1 is the block diagram of the assembly of the branches of states system illustrated in one embodiment.System 100 comprises hypervisor components 110, schedule component 120, VM communications component 130, branch's identified component 140, state clone assembly 150, VM branch component 160, clone's coordination component 170 and result treatment assembly 180.Each in these assemblies discusses in detail herein further.
Hypervisor components 110 shares the resource of physical computing devices between two or more virtual computing device.Many data centers use virtual machine to run on a single server to allow multiple production application now, are eachly applied in virtual environment, and each application is thought, and it has the exclusive use to this machine.On the contrary, apply the exclusive use usually had virtual machine, but share physical resource.Virtual machine provides guaranteed amount of hardware resources to application, such as CPU (central processing unit) (CPU) speed, memory size, dish capacity, the network bandwidth etc.System supervisor is widely used in the commercial hardware (such as, Xen, Hyper-V and VMWare) that multiple virtual machine can be allowed to run side by side on the same computer.System supervisor multiplexing (and the sometimes dispatching) access to the such as physical resource of CPU, storer, dish, network.System supervisor provides the scheduler program for CPU and I/O resource, and this scheduler program can provide the fixed partition of whole resource between two or more virtual machines.This can complete in many ways, such as, use hard real-time scheduling.
Schedule component 120 provides the scheduling to the scheduling of resource use in physical machine and the resource isolation between two or more virtual machines, and these two or more virtual machines comprise original virtual machine and clone's virtual machine.Schedule component 120 can operate in system supervisor, and provides virtual machine isolation, thus make each virtual machine can with meet be supplied to any guarantee of the Resource Availability of each virtual machine mode to use the resource of physical machine.Such as, if physical machine has 2GHz processor, and each in two virtual machines is guaranteed the time of the processor of equal specific part, then schedule component 120 can guarantee that each virtual machine obtains the physical machine processor time using half.Schedule component 120 can provide the similar division to physical machine storer, disk space, the network bandwidth and other resource.
VM communications component 130 provides the one or more communication channels between two or more virtual machines.Various technology is existed for intersection-VM communication, comprises overshoot, the common point be stored in by file in physical disks etc. of shared physical storage, calling system supervisory routine.VM communications component 130 can receive harmony messages from original virtual machine and coordination instruction is supplied to one or more clone's virtual machine.Harmony messages can guarantee that each virtual machine follows different branches to assess multiple possible state.System supervisor can manage shared communication channel, and implements safety or other restriction to virtual machine.Original virtual machine can make full use of in system supervisor to create clone and coordinate these clone between the support of activity.
The current state of branch's identified component 140 identification software code and one or more succeeding states alternatively, run the original virtual machine of this software code to assess the succeeding state in one or more clone's virtual machine for branch.Assembly 140 comes the possible branch of Automatic Logos by analysis software code, or can by the using directed position to being branched off into.Automatic Logos and the CPU of today of branch similarly occur, and wherein analysis engine can check multiple steps in instruction stream on the horizon and mark will change the instruction of the state of machine, function or other behaviors substantially.Manual Logos can write test procedure by software developer or other application are carried out branch to occur at ad-hoc location with request.Such as, test can arrange the state common to some tests, then notifies the diverging paths that master operating system is pursued to ask branch to perform each test.
The status information that state clone assembly 150 copies from original virtual machine has one or more clone's virtual machines of similar state to create.Copy whole storer and other virtual hardwares of reproducible original virtual machine, or can only select will be used for exploring each clone by the subset of the bifurcated state of pursuit.Such as, test can close the various types of multiple OS handle taking long to and open.Original virtual machine can perform the work of opening all handles, and the handle of cloning virtual machine each self closing particular type is to test various condition.In this example, each clone's virtual machine pursues independently state, but only can need a copy of relevant with handle state, or more generally relevant with the Test Application run on a virtual machine state copy, and not all status information or other apply.
VM branch component 160 is by clone's virtual machine of starting each and creating and the branch identifying the execution that each clone will pursue performs branch.Such as, if the path that 5 of the different state of essence that obtains separately occurred in branch's identified component 140 identification software code possible, then Test Application bootable state clone assembly 150 is to create 4 clones, and wherein by these states of pursuit, 4 clone's virtual machines will pursue remaining 4 states to original virtual machine.VM branch component 160 notifies its branch that will consider of each clone's virtual machine, such as instruction pointer and other machines state is set to position around this branch and state by direct.VM branch component 160 allows each virtual machine to perform to explore bifurcated state subsequently.
Clone's coordination component 170 coordinates the action of each clone's virtual machine and original virtual machine to allow abandon unwanted branch or merge branch outcome.The object performing different branch is where find out execution terminates.In many cases, software code can pursue one in some branches, then terminates in common position but has based on adopted branch and obtain different results.Therefore, the blink after branch performs the very large code of bifurcated in section, but carries out assembling to consider that result is common in public location subsequently.Clone's coordination component 170 allows test or other application codes to send multiple clone's virtual machine to carry out some work to consider various state, but subsequently by considering each result of cloning virtual machine and when state has been explored, execution is sent back original virtual machine to carry out the execution cycle.This and CPU of today how speculatively to perform some branches then flush those finally do not have adopted branch similar, just applied in more vast scope in virtual machine-level by branches of states system 100.
Result treatment assembly 180 processes the result of each virtual machine generation and result is supplied to clone's coordination component 170.Each virtual machine (original with clone) can produce various result, comprises simple numeral or text results, or the complicated result that the further state on a virtual machine that such as occurs changes.As an example, Antivirus program may be wanted to perform some the identified software code module found on the computing device, determines whether these code modules carry out any destruction to computing equipment to computing equipment scanning to find malicious code.Each software code module can derive from and have in the individual clone's virtual machine of institute of original calculation equipment by Antivirus program, and result is exactly, and software code is to cloning any change made.Antivirus program can scanning result to determine whether that any change is harmful (such as, deletes important file or send the contact person of spam), and can provide to original application the boolean results indicating whether to find deleterious consequence.This allow each clone may be chaotic in some way the state of clone's virtual machine, but to be abandoned by Antivirus program after acquisition particular result subsequently.As another example, use the embedded device of this system can be designed to examination (ping) network to determine whether it should perform certain compound action and how to perform.The request of high stand-by period is made by allowing the free processing capacity of this equipment use physical equipment simultaneously by this branch.Possible this relates to calculating to recalibrate sensor or aerial array, and embedded device can start possible calculating before receiving network response.
The computing equipment realizing branches of states system thereon can comprise CPU (central processing unit), storer, input equipment (such as, keyboard and pointing device), output device (such as, display device), and memory device (such as, disc driver or other non-volatile memory mediums).Storer and memory device are the computer-readable recording mediums can encoded with the computer executable instructions (such as, software) realized or enable this system.In addition, data structure and message structure can be stored or send via data transmission medium such as the signals on such as communication link.Various communication link can be used, such as the Internet, LAN (Local Area Network), wide area network, point-to-point dial-up connection, cellular phone network etc.
The embodiment of this system can realize in various operating environment, and these operating environments comprise personal computer, server computer, hand-held or laptop devices, multicomputer system, system based on microprocessor, programmable consumer electronics, digital camera, network PC, small-size computer, mainframe computer, to comprise in any said system or equipment, Set Top Box, SOC (system on a chip) (SOC) etc. any one distributed computing environment etc.Computer system can be cell phone, personal digital assistant, smart phone, personal computer, programmable consumer electronic device, digital camera etc.
This system can describe in the general context of the computer executable instructions such as the such as program module performed by one or more computing machine or other equipment.Generally speaking, program module comprises the routine, program, object, assembly, data structure etc. that perform particular task or realize particular abstract data type.Usually, the function of program module can carry out combining or distributing in various embodiments as required.
Fig. 2 illustrates that branches of states system is in one embodiment branched off into one or more clone's virtual machine to consider the process flow diagram of the process of bifurcated state from original virtual machine.Start in block 210, system acceptance application code performs in original virtual machine, and wherein this application code comprises at least one branch of two or more the possible states obtaining virtual machine.This system can receive test or other application codes of the state changing machine, and branch can occur based on the condition of assessment when running.System banner changes in fact the branch of the state of original virtual machine, and performs one or more clone's virtual machine concurrently to assess the path of this branch extraction.
Continue in frame 220, system performs original virtual machine, comprises the application code received.Such as, system can operate in system supervisor, and guides the execution of the multiple virtual machines sharing Same Physical resource.System performs original virtual machine until identify the branch that significantly may change virtual machine state.Such as, branch can deleted file, executive chairman calculating, create a large amount of data or perform other states change operation.
Continue in frame 230, in the application code that system banner runs in original virtual machine, obtain the branch of two or more possible states of virtual machine.Such as, system comes Automatic Logos branch to find the diverging paths in software code by using code analysis tool well known in the art.Much static state and motion time instrument of analysing checks software code and identifies the position of remarkable bifurcated in application state on binary code level and/or source code level.In certain embodiments, system can allow to apply and indicate this application and will be branched to the position of multiple possible state.Such as, Test Application can call operating system API, and this operating system API identifies two or more individual paths and can clone virtual machine to make system and perform these paths concurrently.
Continue in frame 240, one or more clone's virtual machines of the current state of system creation replicating original virtual machine, then process a paths of branch to explore succeeding state in created clone's virtual machine.Clone can comprise arrange the mark virtual machine specification of virtual hardware, replicating original virtual machine memory state, copy dish being attached to original virtual machine etc.Virtual machine is stored in Single document by certain virtualization software, comprises any embedded file system (such as, the VHD file of Microsoft TM Virtual PC and Hyper-V use).One or more files that system is associated with virtual machine by the execution copying suspending original virtual machine are to clone virtual machine.
Continue in frame 250, each clone's virtual machine is set to the different paths performing the branch identified by system.If clone is original perfection clone, then they separately all by as original next do do identical thing.But an object of branches of states system is the different paths allowing each clone to pursue branch concurrently.Therefore, each clone is set to have the information being responsible for exploring which paths about it by system, then performs each clone and original in allow its its path of distribution of exploration.Each clone is set and can comprises mark virtual machine by the software code of operation, instruction pointer and buffer status are set to ad-hoc location etc.
Continue in frame 260, system performs the virtual machine of original virtual machine and clone to explore at least two paths of identified branch concurrently.If the particular path of branch changes machine state significantly, the virtual machine performing this branch is only had to be affected.Meanwhile, original virtual machine can wait for the effect determining the virtual machine performing clone, does not affect original virtual machine state with the information of collecting about individual path.If application code determines not meet the condition adopting individual path, then can abandon simply and the virtual machine of this path-dependent and original virtual machine can continue.In some cases, system can select clone's virtual machine to continue (that is, the role of adapter original virtual machine) as host virtual machine, and original virtual machine can stop.
Continue in frame 270, system receives at least one execution result from the virtual machine of clone.The state that this result can indicate the virtual machine of clone to arrive, by across VM communication channel from the information of the virtual machine transmission of clone, output etc. of being produced by performing individual path by the virtual machine of cloning.Next original virtual machine can use this execution result to determine will do what or select original virtual machine to continue the virtual machine of its result of process.Because the virtual machine of clone is performed concurrently, so system is probably than may attempt each branch in original virtual machine arrives result quickly originally.After frame 270, these steps terminate.
Fig. 3 illustrates that branches of states system in one embodiment exits one or more clone's virtual machine and will perform the process flow diagram assembling back the process of original virtual machine.Start in a block 310, the virtual machine that Systematic selection first is cloned, the virtual machine of this first clone also derives from the virtual machine of clone to perform each individual path to create by the branch previously detecting the application code in original virtual machine.In successive iterations, the virtual machine of Systematic selection next one clone.
Continue in a block 320, systems axiol-ogy has completed the execution of the individual path that it is assigned with to the virtual machine of selected clone.In some cases, individual path can represent a trifle of larger body of code, and wherein this trifle is to have the execution for isolating branch to determine that the mode of its result outside larger body of code bears results or change state.Clone virtual machine period is set, the some place that system can will complete the execution of individual path at the virtual machine of clone inserts instruction (such as, shut down or interrupt) or other instructions.System supervisor or other codes can monitor and detect this instruction to detect completing of the virtual machine of clone.
Continue in frame 330, system banner performs the result phase of the virtual machine of clone.Result can comprise numeric results, clone virtual machine produce data, to clone virtual machine state change etc.The virtual machine of clone and original virtual machine can compare to identify by exploring the individual path performed by the virtual machine of cloning and the change produced by system.If original virtual machine determines the path adopting this branch prediction ground to perform, then the result that identifies of the state difference XOR of the virtual machine of the reproducible selected clone of original virtual machine.
Continue in decision box 340, system determines whether there is the virtual machine of the more clones be associated with current branch.If so, then systemic circulation is to frame 310 to select the virtual machine of next clone, otherwise system continues at frame 350 after virtual machine of each clone completes process.
Continue in frame 350, system selects the branch that will adopt based on the one or more conditions in the application code run in original virtual machine.In certain embodiments, the virtual machine of clone operates as predictive enforcement engine, speculatively to perform the individual path that original virtual machine may adopt.Original virtual machine perform have evaluated all conditions to understand by adopt any paths point after, original virtual machine can be selected in branch correct branch of conduct and abandon other branches.In other embodiments, the virtual machine of clone can represent all by original virtual machine use but performed to arrive quickly the accumulated result of result concurrently.Under these circumstances, original virtual machine clone from each virtual machine reception result, the result that receives performed to any further process and continue after the virtual machine of clone completes.
Continue in frame 360, system copies is from the result phase identified of the virtual machine of the clone of the selected branch of execution.In this way, original virtual machine benefits from the executed in parallel performed by the virtual machine of each clone.No matter adopt which branch, original virtual machine can not be subject to testing bothering and need not wait for after previous code completes and performing branch serially of each branch.On the contrary, complete previous code in original virtual machine while, the virtual machine of clone performs one in each branch separately, and result is supplied to original virtual machine by selected virtual machine after it is ready to (and before original virtual machine itself can obtain result originally) immediately.
In frame 370 continue, system use from clone virtual machine copy result to continue the execution of original virtual machine.In certain embodiments, the discardable original virtual machine of system also continues to perform by the virtual machine of selected clone.System discardable or " flush " represent the virtual machine of any clone of unadapted individual path.After frame 370, these steps terminate.
Fig. 4 illustrates the time line chart of branches of states system in one embodiment to the parallel processing of individual path.The first row 410 of timeline represents the process of original virtual machine described herein.In conventional systems, original virtual machine or physical machine will perform whole process.Original virtual machine is running into the one or more task 440 of pre-treatment of the branch 450 in the application code that original virtual machine performing.Certain before branch is a bit located, and the virtual machine of two clones performing the possible path of branch concurrently is also derived from original virtual machine mark branch.Second row 420 represents the process of the virtual machine of the first clone, and the third line 430 represents the process of the virtual machine of the second clone.While original virtual machine completes pre-Branch Tasks 440, the virtual machine of the first clone performs the code be associated with the first individual path 460, and the virtual machine of the second clone performs the code be associated with the second individual path 470 concurrently.When original virtual machine arrives branch 450, it determines the path of the branch that will adopt based on the current state of original virtual machine and any condition of branch 450.Original virtual machine is selected the branch of triumph and result 480 is copied to original virtual machine.Original virtual machine continues to perform subsequently, abandons the virtual machine of clone.In this way, the state original virtual machine and the invasive state that may relate to when assessing each individual path being changed in future that the virtual machine of clone prepares original virtual machine is concurrently kept apart.
In certain embodiments, branches of states system provides the framework for device driver test.Device driver test is usually difficult, changes because it relates to physical hardware and state, and if process physical hardware improperly and state changes, then may there is deadlock in the kernel spacing of operating system.Branches of states system allows the state of virtualize physical hardware to change, thus makes multiple clone's virtual machines of parallel work-flow can assess the result of each possible hardware input and corresponding actuator response.This facilitate to device driver software code sooner and more sane exploitation.
In certain embodiments, branches of states system determines deriving from additional virtual machine for the threshold value exploring individual path.The establishment of virtual machine and setting cause certain cost of time and resource use.For little branch, the time involved by virtual machine arranging clone may be unworthy the benefit obtained from them.Therefore, system can determine the threshold value relevant with using the benefit of the virtual machine of cloning, and only saves the execution time the most at last compromise or provide the virtual machine deriving from new clone during other positive result.Application can arrange or finely tune this threshold value based on the consideration of application specific.Similarly, in certain embodiments, branches of states system uses the virtual machine of clone for considering when exploring the benefit of individual path whether the virtual machine of cloning can affect any resource (that is, externally or the physical equipment of link give an order, send grouping etc. by network) of the virtual machine outside of clone assessing.
In certain embodiments, branches of states system derives from the virtual machine of clone in the physical machine different from original virtual machine.Virtual machine is suitable for the simple movement between physical machine well, and this system is partly or entirely unloaded to other physical machine by the exploration of each individual path by what perform the virtual machine of clone in the physical machine of separating.If needed, the virtual machine of clone can communicate with original virtual machine via other communication channels between network or physical machine.
In certain embodiments, when system supervisor detects the chance using the virtual machine of clone for exploration individual path, branches of states system provides the notice from system supervisor.System supervisor can monitor the process that in virtual machine, each is running, and automatically detects the situation that the virtual machine wherein separated can prepare for parallel individual path.Under these circumstances, system supervisor can provide applicative notifications, and whether application can register this applicative notifications and respond to indicate this application to want system supervisor to derive from the virtual machine of clone.
In certain embodiments, branches of states system provides a kind of debugging of new model, and this debugging provides the effect of each state travelling to and fro between the application run on a virtual machine in time.The form that this system sentences the virtual machine of clone at application each point executory creates each checkpoint.The virtual machine of each clone represents the state of the application on particular point in time, and keeps apart with any follow-up change occurred in application.This allows the attached debugged program of software developer, and checks application state before problem occurs or on one or more time points of period.
In certain embodiments, branches of states system provides the A-B test for comparing the similar algorithm for performing various task.Such as, this system comes Test Operating System paging or dispatching algorithm by following method: be arranged in the virtual machine of the clone separated that will manage one group of similar processes separately by Test Operating System paging or dispatching algorithm, then the virtual machine of each clone is performed concurrently to determine which algorithm provides better result with regard to execution faster or other factors.Nowadays rerun these tests serially and introduce new state.Although proving installation is attempted all to arrange identical state at every turn, the things of some chop and change makes to compare and becomes difficulty.By using state branch system, each test starts from known clone status, and comparable results, thus the less impact being subject to unexpected state and changing.
Can find out from the foregoing description, be appreciated that the specific embodiment of branches of states system described herein is just in order to illustrate, but, when without departing from the spirit and scope of the present invention, can various amendment be carried out.Therefore, the present invention only limits by claims.

Claims (14)

1., for being branched off into one or more clone's virtual machine from original virtual machine to consider a computer implemented method for bifurcated state, described method comprises:
Receive (210) application code to perform in described original virtual machine, wherein said application code comprises at least one branch of two or more the possible states obtaining virtual machine;
Perform the described original virtual machine that (220) comprise the application code received;
Obtain the branch of two or more possible states of described original virtual machine in the application code that mark (230) is run in described original virtual machine, wherein identify described branch and comprise receiving to indicate where described application will be branched off into the information of the position of multiple possible state from described application code;
Create one or more clone's virtual machines that (240) copy the current state of described original virtual machine, then each clone's virtual machine processes a paths of described branch to explore succeeding state in created clone's virtual machine;
Each clone's virtual machine is arranged (250) for performing the different paths of the branch identified;
Perform the virtual machine of (260) described original virtual machine and clone to explore at least two paths of identified branch concurrently; And
(270) at least one execution result is received from the virtual machine of described clone,
Wherein, step is above performed by least one processor.
2. the method for claim 1, is characterized in that, receive described application code comprise receive the state that changes machine and condition based on assessment when running comprises the application code of branch.
3. the method for claim 1, is characterized in that, performs described original virtual machine and comprises the execution that system supervisor guides the multiple virtual machines sharing Same Physical resource.
4. the method for claim 1, it is characterized in that, perform described original virtual machine to comprise and perform described original virtual machine until identify the branch that the state that may change described original virtual machine exceedes predetermined threshold, and whether the virtual machine determining described clone is by any resource beyond the described original virtual machine example of impact.
5. the method for claim 1, is characterized in that, identifies described branch and comprises branch described in use code analysis tool Automatic Logos.
6. the method for claim 1, it is characterized in that, identify described branch and comprise the calling of application programming interface (API) received two or more individual paths of mark, system can clone described original virtual machine and execution route concurrently whereby.
7. the method for claim 1, it is characterized in that, create clone's virtual machine and comprise one or more virtual machine specification that mark virtual hardware is set, the memory state copying described original virtual machine and copy the one or more dishes being attached to described original virtual machine.
8. the method for claim 1, is characterized in that, creates clone's virtual machine and comprises the execution that suspends described original virtual machine and copy the one or more physical machine files be associated with described original virtual machine.
9. the method for claim 1, it is characterized in that, arrange each clone's virtual machine to comprise and arrange each clone's virtual machine by the information will being responsible for exploring any paths about it, then perform each clone's virtual machine and the path that is assigned with to allow them to explore it separately of described original virtual machine.
10. the method for claim 1, is characterized in that, arrange each clone virtual machine comprise mark described clone's virtual machine be set to ad-hoc location by the software code of operation and by the instruction pointer of described clone's virtual machine and buffer status.
11. the method for claim 1, is characterized in that, receive the instruction that at least one execution result comprises the state of the virtual machine arrival receiving described clone.
12. 1 kinds for being branched off into one or more clone's virtual machine from original virtual machine to consider the computer implemented system of bifurcated state, described system comprises:
For receiving (210) application code for the device performed in described original virtual machine, wherein said application code comprises at least one branch of two or more the possible states obtaining virtual machine;
The device of the described original virtual machine of the application code received is comprised for performing (220);
In the application code that mark (230) is run in described original virtual machine, obtain the device of the branch of two or more possible states of described original virtual machine, wherein identify described branch and comprise receiving to indicate where described application will be branched off into the information of the position of multiple possible state from described application code;
Copy one or more clone's virtual machines of the current state of described original virtual machine for creating (240), then each clone's virtual machine processes a paths of described branch to explore the device of succeeding state in created clone's virtual machine;
For each clone's virtual machine is arranged (250) for performing the device in the different paths of the branch identified;
For performing the virtual machine of (260) described original virtual machine and clone to explore the device of at least two paths of identified branch concurrently; And
For receiving the device of (270) at least one execution result from the virtual machine of described clone.
13. systems as claimed in claim 12, is characterized in that, comprise further for receiving harmony messages from described original virtual machine and will coordinating instruction and be supplied to the device of one or more clone's virtual machine.
14. systems as claimed in claim 12, is characterized in that, comprise the device for coming the possible branch of Automatic Logos by analyzing described application code further.
CN201110443423.7A 2010-12-17 2011-12-16 Virtual machine branching and parallel execution Active CN102609296B (en)

Applications Claiming Priority (2)

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

Publications (2)

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

Family

ID=46236241

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201110443423.7A Active CN102609296B (en) 2010-12-17 2011-12-16 Virtual machine branching and parallel execution

Country Status (9)

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

Families Citing this family (52)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101449256B (en) 2006-04-12 2013-12-25 索夫特机械公司 Apparatus and method for processing instruction matrix specifying parallel and dependent operations
CN101627365B (en) 2006-11-14 2017-03-29 索夫特机械公司 Multi-threaded architecture
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
CN103250131B (en) 2010-09-17 2015-12-16 索夫特机械公司 Comprise the single cycle prediction of the shadow buffer memory for early stage branch prediction far away
US8489929B2 (en) * 2010-09-30 2013-07-16 Salesforce.Com, Inc. Facilitating large-scale testing using virtualization technology in a multi-tenant database environment
KR101638225B1 (en) 2011-03-25 2016-07-08 소프트 머신즈, 인크. Executing instruction sequence code blocks by using virtual cores instantiated by partitionable engines
CN103562866B (en) 2011-03-25 2018-03-30 英特尔公司 For the register file segment performed by using the virtual core by divisible engine instance come support code block
KR101966712B1 (en) 2011-03-25 2019-04-09 인텔 코포레이션 Memory fragments for supporting code block execution by using virtual cores instantiated by partitionable engines
TWI548994B (en) 2011-05-20 2016-09-11 軟體機器公司 An interconnect structure to support the execution of instruction sequences by a plurality of engines
CN107729267B (en) 2011-05-20 2022-01-25 英特尔公司 Distributed allocation of resources and interconnect structure for supporting execution of instruction sequences by multiple engines
IN2014CN03678A (en) 2011-11-22 2015-09-25 Soft Machines Inc
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
US9122873B2 (en) 2012-09-14 2015-09-01 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
WO2014100954A1 (en) * 2012-12-24 2014-07-03 华为技术有限公司 Method and system for data controlling
WO2014150971A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for dependency broadcasting through a block organized source view data structure
US10275255B2 (en) 2013-03-15 2019-04-30 Intel Corporation Method for dependency broadcasting through a source organized source view data structure
US9891924B2 (en) 2013-03-15 2018-02-13 Intel Corporation Method for implementing a reduced size register view data structure in a microprocessor
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
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
US9904625B2 (en) 2013-03-15 2018-02-27 Intel Corporation Methods, systems and apparatus for predicting the way of a set associative cache
US9632825B2 (en) 2013-03-15 2017-04-25 Intel Corporation Method and apparatus for efficient scheduling for asymmetrical execution units
KR102083390B1 (en) 2013-03-15 2020-03-02 인텔 코포레이션 A method for emulating a guest centralized flag architecture by using a native distributed flag architecture
KR101708591B1 (en) 2013-03-15 2017-02-20 소프트 머신즈, 인크. A method for executing multithreaded instructions grouped onto blocks
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
US9811342B2 (en) 2013-03-15 2017-11-07 Intel Corporation Method for performing dual dispatch of blocks and half blocks
CN104216793B (en) * 2013-05-31 2017-10-17 国际商业机器公司 Application Backup, the method and apparatus recovered
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 (en) * 2013-10-31 2018-11-23 深圳市腾讯计算机系统有限公司 The method and device that a kind of pair of software is tested
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 (en) * 2014-04-16 2015-11-26 俊介 山内 Previous image generation program, virtual machine control program, and computer-readable storage medium
US9619268B2 (en) 2014-08-23 2017-04-11 Vmware, Inc. Rapid suspend/resume for virtual machines via resource sharing
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 (en) * 2018-04-20 2023-04-21 伊姆西Ip控股有限责任公司 Method, apparatus and non-transitory computer storage medium for data backup
CN112948234B (en) * 2020-08-26 2023-02-21 深圳市明源云链互联网科技有限公司 Interface test method and device and electronic equipment
US20230267094A1 (en) * 2022-02-24 2023-08-24 Infineon Technologies Ag System on a chip and method for operating a system on a chip

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101211272A (en) * 2006-12-29 2008-07-02 英特尔公司 Dynamic virtual machine generation

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 (en) * 1993-01-25 1994-08-12 Fujitsu Ltd Program analyzer
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 (en) 2006-02-15 2010-11-24 富士通株式会社 Program for functioning virtual computer system
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
US8458695B2 (en) * 2006-10-17 2013-06-04 Manageiq, Inc. Automatic optimization for virtual systems
US8234640B1 (en) * 2006-10-17 2012-07-31 Manageiq, Inc. Compliance-based adaptations in managed 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 (en) * 2008-07-15 2010-02-04 Hitachi Ltd Appearance method for virtual computer, program for executing method, and server executing method
US20100083251A1 (en) * 2008-09-12 2010-04-01 Hyper9, Inc. Techniques For Identifying And Comparing Virtual Machines In A Virtual Machine System
US20100070678A1 (en) 2008-09-12 2010-03-18 Vmware, Inc. Saving and Restoring State Information for Virtualized Computer Systems
JP5104958B2 (en) * 2008-10-03 2012-12-19 富士通株式会社 Virtual computer system test method, test program, recording medium thereof, and virtual computer system
US9141381B2 (en) 2008-10-27 2015-09-22 Vmware, Inc. Version control environment for virtual machines
JP5352848B2 (en) 2008-11-28 2013-11-27 株式会社日立製作所 Virtual computer control method and computer apparatus
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 (en) * 2006-12-29 2008-07-02 英特尔公司 Dynamic virtual machine generation

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
HK1174405A1 (en) 2013-06-07
EP2652600B1 (en) 2017-09-06
KR20130126938A (en) 2013-11-21
TWI534709B (en) 2016-05-21
TW201227520A (en) 2012-07-01
US8677355B2 (en) 2014-03-18
KR101957533B1 (en) 2019-03-12
EP2652600A4 (en) 2014-07-09
WO2012082811A3 (en) 2012-09-27
JP2013546103A (en) 2013-12-26
US20140201739A1 (en) 2014-07-17
AR084048A1 (en) 2013-04-17
JP5960161B2 (en) 2016-08-02
WO2012082811A2 (en) 2012-06-21
CN102609296A (en) 2012-07-25
EP2652600A2 (en) 2013-10-23
US20120159478A1 (en) 2012-06-21

Similar Documents

Publication Publication Date Title
CN102609296B (en) Virtual machine branching and parallel execution
CN107924323B (en) Dependency-based container deployment
CN111176804A (en) Automatic infrastructure update in a clustered environment including containers
US10871982B2 (en) Virtual processor scheduling via memory monitoring
US11188348B2 (en) Hybrid computing device selection analysis
WO2022042334A1 (en) Compilation strategy for sharable application snapshot
US20180285108A1 (en) Branch prediction using a perceptron-based branch prediction technique
US20210294730A1 (en) Managing resources used during a development pipeline
CN109690536B (en) Method and system for fetching multi-core instruction traces from virtual platform simulator to performance simulation model
Tran et al. Proactive stateful fault-tolerant system for kubernetes containerized services
US10540737B2 (en) Processing unit performance projection using dynamic hardware behaviors
Harichane et al. KubeSC‐RTP: Smart scheduler for Kubernetes platform on CPU‐GPU heterogeneous systems
Ghorbian et al. A survey on the cold start latency approaches in serverless computing: an optimization-based perspective
Kumar et al. Utilizing Machine Learning Techniques for Worst-Case Execution Time Estimation on GPU Architectures
JP4997144B2 (en) Multitask processing apparatus and method
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
Abd Elghani et al. Resiliency focused proactive lifecycle management for stateful microservices in multi-cluster containerized environments
Konwinski Improving mapreduce performance in heterogeneous environments
ABDUL 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
Rahman Development of energy efficiency design index for inland vessels of Bangladesh
Jangjaimon Effective Checkpointing for Networked Multicore Systems and Cloud Computing

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