About Publications Downloads Related Projects Team L4hq.org  
 
Projects
Pistachio
Kickstart
Download
Virtualization
Pre-virtualization
Device Drivers
Multiprocessor
Marzipan
BurnNT
Download
IDL4
Release Notes
Documentation
Download
Persistence
Hazelnut
Download
Getting started
 
Miscellaneous
Mailing lists
Tools
VMwareGateway
Workshops
Google L4Ka.org:
 
 

Running the Resource Monitor

The resource monitor dynamically configures itself at startup based on command line parameters passed via the boot-loader's configuration file. We rely on the GRUB multi-module boot loader, which is able to load multiple modules, with independently specified command line parameters for each module.

The resource monitor creates virtual machines at boot time. It scans the list of modules defined by GRUB, starting after the GRUB entry for the resource monitor. For each group of modules, where a group is defined by the command line parameters, the resource monitor starts a new virtual machine. Virtual machines are created in a synchronized order: the resource monitor waits until the prior finishes initialization before starting the next. If a virtual machine fails to deliver the message that it has completed its initialization, then the resource monitor fails to make forward progress (remember, the resource monitor isn't an end-user product).

Each module can have its own command line. The command line of the first module in a group defines the parameters for the group. The options that the resource monitor looks for:

vmstart
Marks the start of a group of modules. It implicitly ends the prior group of modules.
vmsize=
Configures the size of the virtual machine, and thus the amount of memory that the guest OS will discover. It accepts a unit character to specify Kilobytes, Megabytes, or Gigabytes. For example: vmsize=96M
wedgeinstall=
This parameter supports the afterburner project. It specifies the physical address at which to install the afterburn wedge. It accepts a unit character to specify Kilobytes, Megabytes, or Gigabytes. For example: wedgeinstall=16M
wedgesize=
This parameter supports the afterburner project. It specifies the amount of physical memory to allocate to the afterburn wedge. It accepts a unit character to specify Kilobytes, Megabytes, or Gigabytes. For example: wedgesize=16M
ddos
This parameter supports the device-driver reuse project. It enables device access permissions for the current VM, including support for DMA to/from other virtual machines.
noclientdma
This parameter supports the device-driver reuse project. It disables DMA access to/from virtual machines which are clients of a device driver in the current VM. This is an optimization; as a side effect, Linux will avoid allocating a large page map for supporting DMA to other virtual machines. It would be used, for example, by a device driver VM that controls the PCI bus.
clones=
The number of virtual machine instances to create from the current module definition.

Shared Configuration

For further dynamic configuration of virtual machines, the resource monitor looks for several special ELF file sections. The ELF file sections are:
.hypervisor
Provides a pre-initialized configuration page, designed to be shared between the resource monitor and the VM. The layout of this page is defined in the resource monitor's IDL file. The resource monitor shares configuration settings with the VM via this page, including the size of memory, command line string, and thread identifiers of important resource managers.
.l4utcb
The resource monitor uses the location and size of this section for configuring the L4 UTCB region of the VM. It must have a valid size and alignment for an L4 UTCB region.
.l4kip
The resource monitor uses the location and size of this section for configuring the L4 KIP region of the VM. It must have a valid size and alignment for an L4 KIP region.

If any of these ELF sections are missing, then the resource monitor will try to choose functional defaults for the configuration. In this case, the shared configuration page will not be provided to the VM.

   
 
 
 
  Mail to webmaster   © 2000-2010 University of Karlsruhe