Decoupling dynamic program analysis from execution in virtual environments
AssigneeVMware, Inc.
InventorsJames E. Chow, Tal Garfinkel, Peter M. Chen
Life of this patent
Estimating the term…
Abstract
Dynamic program analysis is decoupled from execution in virtual computer environments so that program analysis can be performed on a running computer program without affecting or perturbing the workload of the system on which the program is executing. Decoupled dynamic program analysis is enabled by separating execution and analysis into two tasks: (1) recording, where system execution is recorded with minimal interference, and (2) analysis, where the execution is replayed and analyzed.
Claims18
A method for replaying a virtual machine, the method comprising:
- executing a first virtual machine on a first system;
- creating a snapshot of the first virtual machine;
- recording a log comprising non-deterministic events occurring during execution of the first virtual machine;
- and
- at a second system, replaying an instruction stream of the first virtual machine in a second virtual machine while consuming the log at points in the instruction stream where the non-deterministic events occurred;
- wherein data outputs during execution of the first virtual machine on the first system are held until a corresponding confirmation is received by the first system from the second system, the confirmation indicating that the second virtual machine has reached a particular point in the instruction stream of the first virtual machine.
A computer program product stored in a non-transitory computer readable storage medium, the computer program product comprising instructions executed in a first system and second system to carry out a method for replaying a first virtual machine executed on the first system in a second virtual machine executed on the second system, said method comprising:
- creating a snapshot of the first virtual machine;
- instantiating the second virtual machine from the snapshot on the second system;
- recording a log comprising non-deterministic events occurring during execution of the first virtual machine;
- and
- at the second system, replaying an instruction stream of the first virtual machine in the second virtual machine while consuming the log at points in the instruction stream where the non-deterministic events occurred,
- wherein data outputs during execution of the first virtual machine on the first system are held until a corresponding confirmation is received by the first system from the second system, the confirmation indicating that the second virtual machine has reached a particular point in the instruction stream of the first virtual machine.
A computer system for replaying a virtual machine, comprising:
- a first virtual machine platform having a processor programmed to (a) execute a first virtual machine, (b) create a snapshot of the first virtual machine, and (c) generate a log comprising non-deterministic events occurring during execution of the first virtual machine;
- and
- a second virtual machine platform having a processor programmed to (a) instantiate a second virtual machine from the snapshot, and (b) replay an instruction stream of the first virtual machine in the second virtual machine while consuming the log at points in the instruction stream where the non-deterministic events occurred,
- wherein data outputs during execution of the first virtual machine on the first system are held until a corresponding confirmation is received by the first system from the second system, the confirmation indicating that the second virtual machine has reached a particular point in the instruction stream of the first virtual machine.
Dependencies are inferred from the claim text.