A Virtual Machine Monitor for Providing a Single System Image
For Japanese Version
News
(May 26, 2006) Version 0.3.1 is out (Changelog).
(May 15, 2006) Version 0.3 is out (Changelog).
(July 6, 2005) A new demo movie is uploaded. A virtual 8-way multi-processor machine is running!
(May 31, 2005) Version 0.2 is out (Changelog).
(Dec 20, 2004) Version 0.1 is out (Changelog).
Overview
Virtual Multiprocessor is a virtual machine monitor
(VMM) for providing a single system image. It virtualizes a
shared-memory multi-processor machine on a network of computers. More
specifically, like existing VMMs, Virtual multiprocessor takes
complete control of the machine hardware and creates virtual machines,
each of which behaves like a complete physical machine that can run
its own operating system. In contrast to the existing VMMs, our
system creates a virtual multi-processor machine on a collection of
single-processor machines. For example, the system gives users the
illusion of N-way multi-processor machine on top of N
single-processor machines that are connected via networks.
This functionality of our system greatly simplifies utilization of
distributed resources. For example, suppose that a user would like to
access and run some parallel tasks on two single-processor machines.
With our system, a virtual dual-processor machine is created on two
physical machines. The user is able to execute parallel tasks by
simply forking processes on the guest OS (e.g., Linux) running inside
the virtual machine. These processes are automatically allocated on
virtual processors by the scheduler of the guest OS, and are finally
allocated on physical machines by the VMM.
Demo Movies
- Executing parallel tasks on a virtual 8-way multi-processor machine which is built on top of eight physical machines (wmv)
- Booting up a virtual dual-processor machine on two physical single-processor machines (wmv)
Publications
- Papers
- Kenji Kaneda, Yoshihiro Oyama, and Akinori Yonezawa.
"A Virtual Machine Monitor for Providing a Single System Image".
Submitted to IPDPS 2006 (and rejected!),
15 pages, (pdf).
- Kenji Kaneda, Yoshihiro Oyama, and Akinori Yonezawa.
"A Virtual Machine Monitor for Providing a Single System Image" (in Japanese).
To appear in IPJS Transactions on Advanced Computing Systems, Vol. 47, No. SIG 3 (ACS 13).
- Kenji Kaneda, Yoshihiro Oyama, and Akinori Yonezawa.
"A Virtual Machine Monitor for Providing a Single System Image" (in Japanese).
In Proceedings of the 17th IPSJ Computer System Symposium (ComSys2005),
pages 3-12, November 2005 (papar.pdf) (presentation.ppt).
(Best Student Paper)
- Poster Presentations
- Kenji Kaneda, Yoshihiro Oyama, and Akinori Yonezawa.
"Virtualizing a Multi-processor Machine on a Network of Computers".
In the 2nd Symposium on Global Dependable Information Infrastructure,
March 2005 (abstract.pdf)
(poster.ppt)
(presentation.ppt).
- Talks
- Kenji Kaneda, Yoshihiro Oyama, and Akinori Yonezawa.
"A Virtual Machine Monitor for Utilizing Non-dedicated Clusters".
In Work-in-Progress Session of the 20th ACM Symposium on Operating Systems Principles (SOSP'05),
October 2005 (abstract.pdf)
(presentation.ppt)
(movie.wmv).
- Press
- NIKKEI BYTE, No. 270, "Kasoka no shotai", pp. 32-33, November 2005. (In Japanese)
License
This software is distributed under the GNU General Public License.
Download
You can also download the latest version of the source code from our
Subverion repository svn://oop7.is.s.u-tokyo.ac.jp/vm.
Install
The software is intended to work with Linux operating system and with
hardware based on x86 processors.
It is compiled and installed using the configure
script and a pair of make commands.
The simplest way to install the software is:
-
cd to the directory containing the source code and
type ./configure to configure the software for your system. If
you're using csh on an old version of System V, you might need to
type sh ./configure instead to prevent csh from
trying to execute configure itself.
-
Type make to compile the package.
-
Type make install to install the software and the header
files.
The default installation prefix is /usr/local.
You can specify an installation prefix other than /usr/local by
giving configure an option --prefix=PATH.
Usage
-
Write a configuration file for specifying (1) hostnames and ports which the
virtual machine connects to and listens at, (2) the path to a disk
image, and (3) the path to an initial memory image.
In the configuration file, a keyword marked at the beginning of the
line determines what each line means. More specifically,
- the line that starts with the keyword cpu specifies hostnames and ports which the
virtual machine connects to and listens at.
- the line that starts with the keyword disk specifies the
path to a disk image.
- the line that starts with the keyword memory specifies the
path to an initial memory image.
Here is a sample configuration file.
-
Execute the installed command mon with specifying a CPU ID
and the path to the configuration file as follow:
mon --id number --config filename
The individual process forked by this command emulates a processor with a given
CPU ID. Thus if you would like to emulate a virtual machine with N processors,
you need fork N processes with different CPU IDs. Note that you
have to run processes on hosts which are specified in the
configuration file.
Related Work
- Virtual Machine Monitors
(e.g., Virtual Iron (Katana),
vNUMA,
VMWare,
LilyVM)
- Simulators/Emualtors
(e.g, SimOS,
Bochs)
- Distributed Shared Memory Systems
(e.g., Shasta,
cJVM)
- Distributed Operating Systems
(e.g., MOSIX.
Kerrighed,
OpenSSI)
- Microkernels
(e.g., Mach,
GNU hurd)
Links
Kenji Kaneda
kaneda@yl.is.s.u-tokyo.ac.jp