A Virtual Machine Monitor for Utilizing Non-dedicated Clusters Kenji Kaneda Yoshihiro Oyama Akinori Yonezawa (University of Tokyo) Today I'd like to talk about a virtual machine monitor for utilizing non-dedicated clusters. This is a joint work with Yoshihiro Oyama and Akinori Yonezawa.
What is the Goal of This Work? Build a virtual SMP on a cluster Commodity OS runs on a virtual SMP Easy management of distributed resources Various applications run on a guest OS Easy parallel programming with shell script, make command, … The goal of this work is to build a virtual SMP machine on a non-dedicated cluster to provide a single system image. Compared with previous systems for achieving a single system image, our approach has two advantages. First, commodity OS runs on a virtual SMP with minor modifications to the OS kernels. This feature allows us to easily manage distributed resources with mechanisms provided by the OS. Second, a wide variety of parallel applications for shared memory systems run on a guest OS with no modifications to the applications. With this feature, we can easily write and execute parallel programs with familiar tools such as shell script or the make command. cluster virtualization virtual SMP
Virtual Machine Monitor (VMM) Current Status Virtual 8-way SMP is built on a cluster of 8 nodes Linux 2.4 runs as a guest OS Linux 2.4 guest OS virtual SMP Processor Memory … I would like to talk about the current status of this work. We implemented a virtual machine monitor. The VMM builds a virtual 8-way SMP on a cluster of 8 nodes, and Linux 2.4 runs as a guest OS on a virtual machine. Virtual Machine Monitor (VMM) host OS Linux 2.4 Linux 2.4 Linux 2.4 physical machines Processor Processor Processor … Memory Memory Memory
Demo Distributing a workload with our VMM I would like to demonstrate how we can distribute a workload using our VMM. The central window is a terminal of Linux running on a virtual 8-way SMP, and the upper window shows the CPU load of the cluster. When we fork multiple processes on Linux, the processes are automatically allocated on the virtual machine’s processors by the scheduling mechanism of Linux. The processes are then allocated on the physical machines’ processor which the virtual machine’s processors are mapped to. In addition, we can easily control these processes using the process management mechanism provided by Linux. For example, we can stop the execution of processes by sending signals to them.
How to Implement our VMM Virtualize hardware resources: Processors Para-virtualization Shared memory Similar to software DSM I/O devices A central server keeps track of virtual devices I would like to talk about the overview of the implementation of our VMM. This slide summarizes how the VMM virtualizes processors, shared memory, and I/O devices. To virtualize processors, the VMM achieves para-virtualization of the ISA. A guest operating system is statically modified to run optimally in a virtual machine. To virtualize shared memory, the VMM uses a mechanism similar to software distributed shared memory. The current implementation is based on sequential consistent, multiple-reader/single-writer protocol. To virtualize I/O devices, the VMM prepares a central server that keeps track of the states of all the devices.
Support of Hotplug of Physical Machines VMM keeps a virtual SMP consistent even if physical machines are added or removed consistent = # of virtual processors is fixed virtual N-way SMP The VMM supports hotplug of physical machines. It keeps a virtual SMP consistent even if physical machines are added or removed dynamically. Specifically, it keeps the number of virtual processors fixed even if the number of physical processors changes constantly. virtualization
How to Support Hotplug VMM dynamically maps virtual processors to physical processors VMM moves some virtual processor to a newly added physical machine Processor Memory virtual SMP To provide a fixed number of processors, the VMM dynamically maps virtual processors to physical processors. For example, when a physical machine is added, the VMM moves some virtual processor to the newly added machine. physical machines Processor Memory Processor Memory Processor Memory
Future Work Performance Improvement Fault tolerance Optimizing our memory coherence algorithm Fault tolerance with a distributed check-pointing algorithm We plan several extensions and improvements to our system. For example, we plan to improve the performance of our VMM by optimizing our memory coherence algorithm. We also plan to implement a fault tolerance mechanism. We plan to use a distributed check-pointing algorithm to get a snapshot of individual virtual processors.
Thank You for Your Attention Source code is available at http://www.yl.is.s.u-tokyo.ac.jp/projects/vincs/