This page documents how to setup KairosVM, create VMs and run benchmarks inside VMs. It is assumed that all git repositories have first been cloned.

QEMU

First, build QEMU:

$ cd kairosvm-qemu && ./configure --target-list=x86_64-softmmu && make

Kernel

Then build the KairosVM kernel:

$ cd kairosvm-kernel

$ cp /boot/config-`uname -r` .config

$ yes "" | make oldconfig

This should activate the CONFIG_KAIROS option, activate it manually if not. Then build the kernel:

$ sudo ./kinst.sh

Then reboot using the KairosVM kernel. The KairosVM kernel provides different modules which replace the kvm-intel and kvm-amd modules. On an Intel server, the kairosvm_intel module can be used. This step might require to unload an already loaded kvm module first (e.g. rmmod kvm-intel).

Userspace

The test suite is located in kairosvm-userspace. All the configuration is done through the default.json file. First, be sure to build everything:

$ cd kairosvm-userspace

$ make

Most of the actions can be performed using the run_tests.py file and required to be root. The main configuration file is default.json. The default configuration runs 2 VMs and 2 tasks (x264) inside each VM.

You can now create a set of virtual machines (you need deboostrap):

# ./run_tests.py --create-vm

Then, build the benchmarks. As they have been updated to run on ChronOS, you need to have libchronos installed:

$ cd kairosvm-benchmarks && ./build.sh

Launch tests

Check that the kairosvm-intel module is loaded. If 'lsmod | grep kairosvm' does not return anything, load it with:

# modprobe kairosvm-intel

If you have an amd processor, launch kairosvm-amd instead. It creates the /proc/kairos/ directory. The content of this directory is described in Michael Drescher's MS thesis.

Finally the benchmarks can be launched using:

# ./run_tests.py -f

For each VM, you can find the results in /proc/kairos. For example for the first VM, the /proc/kairos/0/dsr file will give the Deadline Satisfaction Ratio for this VM.