Concepts for migrating running virtual machines: design and...

Concepts for migrating running virtual machines: design and implementation of a Java virtual machine migration system

phdthesis
Takashi Suezawa
The idea to move running programs (or processes) through the network in order to resume them on another computer has already been developed some years ago. Many process migration systems have been developed since then. Process migration is especially used for load balancing and load distribution purposes. Most of these systems fail to be utilised in a heterogeneous environment, where different kinds of workstations are connected to each other. This is because in most process migration systems the representation of execution state contains runtime data that is dependent on the underlying operating system. A solution to this problem is virtual machine (VM) migration. Migration of a running VM means suspending the execution of the VM on a source computer, relocating the execution state to a target computer, and resuming execution on that target computer. VM migration differs from process migration in that VM migration considers a well-defined subset of the execution state of a process.In other words, VM migration does not migrate runtime data that are operating system dependent and thus, allows cross-platform migration. This thesis develops concepts for a system that allows the migration of a running VM and answers the following questions: * What mechanisms are required for VM migration purposes? In order to enable a VM to correctly resume execution after a migration, it is necessary to capture and to represent the execution state of the VM. On the target computer it is required to initialise a VM by means of the appropriate execution state. * Which runtime data are contained in a representation of an execution state? An execution state constitutes all relevant runtime data, such as the stack (contains temporary data such as subroutine parameters or temporary variables), the data area (contains global variables) and the text area (contains the instructions of the program). The structure of the execution states may, however, differ depending on the architecture of the virtual machines. * Is it necessary to tag the runtime data with supplementary data? In order to correctly reproduce the frozen execution state on the target computer it is necessary to associate the runtime data with type information. The necessity stems from the fact that the data types have different byte representations. If the runtime data is tagged with type information the target VM knows which byte formats it has to read from the representation. A mechanism for virtual machine migration is a powerful technique for distributed applications. VM migration is well-suited for the development of fault-tolerant (e.g. a trading system), highly available (e.g. an air-traffic control system) or resource-aware (e.g. mobile computing) systems. The described migration concepts are applicable for many different virtual machine architectures. In this thesis we describe the adaptation and implementation of these migration concepts for the Java virtual machine (JVM) in a system called Merpati. Merpati comprises an extended Java virtual machine that facilitates the migration of running Java programs between JVMs located on different remote computers. Furthermore, Merpati provides a Java application programming interface. This API enables the Java programmer to migrate a running JVM to another computer. In addition, the API allows the checkpointing and recovery of a running JVM.
Concepts for migrating running virtual machines: design and implementation of a Java virtual machine migration system
2000
University of Zurich, Department of Informatics