Not logged in.

Contribution Details

Type Dissertation
Scope Discipline-based scholarship
Title Concepts for migrating running virtual machines: design and implementation of a Java virtual machine migration system
Organization Unit
Authors
  • Takashi Suezawa
Supervisors
  • Lutz H. Richter
  • Clemens H. Cap
Institution University of Zurich
Faculty Faculty of Economics, Business Administration and Information Technology
Date 2000
Abstract Text 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.
Zusammenfassung Die Idee, laufende Programme oder Prozesse durch ein Netzwerk zu senden, um die Ausführung auf einem anderen Rechner fortzusetzen, entstand Ende der achziger Jahren. Seitdem wurden viele Prozessmigrationssysteme entwickelt und für die Lastverteilung und den Lastausgleich eingesetzt. Die meisten Prozessmigrationssysteme können nur in einer homogenen Umgebung eingesetzt werden, da die Repräsentation des Ausführungszustands eines Prozesses Betriebssystem spezifische Laufzeitdaten enthält. Die Lösung dieses Problems ist die Migration von laufenden virtuellen Maschinen (VM). Unter einer Migration einer laufenden VM wird das Verlagern der laufenden VM von einem Quellrechner auf einen Zielrechner verstanden, wo die Ausführung neu aufgesetzt wird. Nach der Migration fährt die VM mit ihrer Ausführung an dem Ausführungspunkt weiter, wo die Ausführung auf dem Quellrechner eingefroren wurde. Im Gegensatz zu den Prozessmigrationssystemen werden bei einer VM Migration nur eine wohl-definierte Teilmenge des Prozesszustands migriert. Mit anderen Worten wird bei einer VM Migration keine Betriebssystem spezifische Daten berücksichtigt. Die vorliegende Dissertation entwickelt Konzepte für ein VM Migrationssystem und untersucht unter anderem Fragestellungen wie: * Welche Mechanismen sind erforderlich? Damit eine migrierte VM auf dem Zielrechner korrekt aufgesetzt wird, ist es notwendig, den Ausführungszustand der VM vor der Migration zu erfassen und darzustellen. Auf dem Zielrechner muss eine VM-Instanz mit dem entsprechenden Ausführungszustand initialisiert werden. * Aus welchen Laufzeitdaten wird ein Ausführungszustand repräsentiert? Eine Darstellung eines Ausführungszustands, ein sogenannter Schnappschuss, setzt sich aus allen relevanten Laufzeitdaten zusammen, wie dem Stack (enthält temporäre Daten wie Subroutineparameter oder temporäre Variablen), einem Datenbereich (enthält globale Variablen) und einem Textbereich (enthält die Anweisungen des Programms). Die Struktur der Darstellung eines Ausführungzustands kann sich je nach Architektur der darunterliegenden virtuellen Maschine jedoch unterscheiden. * Sind neben den Laufzeitdaten noch Hilfsdaten notwendig um einen Ausführungszustand zu repräsentieren? Da die Datentypen unterschiedliche Bytedarstellungen haben, müssen diese Laufzeitdaten mit Typinformationen ergänzt werden. Mit Hilfe dieser Zusatzinformationen weiss die VM auf dem Zielrechner, welche Byteformate sie von der Darstellung lesen muss. Migration von virtuellen Maschinen eignet sich für die Entwicklung von fehlertoleranten (z.B. ein Trading System), hoch verfügbaren (z.B. ein Flugverkehr Steuersystem) oder Ressourcen-bewussten (z.B. mobile Computing) verteilten Systemen und Applikationen. Die in der vorliegenden Dissertation beschriebenen Konzepte sind für unterschiedliche VM-Architekturen anwendbar. Desweiteren diskutiert sie die Umsetzung dieser Konzepte für die Java virtuelle Maschine (JVM). Das prototypische VM-Migrationssystem wird Merpati genannt. Merpati umfasst eine ""migrationsfähige"" virtuelle Maschine, eine Java Programmierschnittstelle für die Migration einer laufenden JVM, aber auch das Checkpointing und das Recovery einer laufenden JVM.
PDF File Download
Export BibTeX
EP3 XML (ZORA)