Link Search Menu Expand Document

005 Virtual Machine Monitor

Status

Accepted

Context

The rust-vmm project provides shared components for building Virtual Machine Monitors (VMMs) in the Rust programming language. Rust’s focus on memory safety makes it a very compelling choice for Spectrum’s VMM.

The extant rust-vmm-based VMMs are crosvm Firecracker, and Cloud Hypervisor.

Firecracker does not support other virtio-devices than net or block.

In comparision to crosvm, Cloud Hypervisor has a more flexible IPC mechanisms, better hotplugging support, and a more engaging community as a Linux Foundation project. Cloud Hypervisor additionally has more core features - such as snapshotting, live migration. crosvm supports more devices we will also need.

It will be easier to port devices from crosvm to cloud-hypervisor than to port core features from cloud-hypervisor to crosvm.

Decision

Spectrum will use cloud-hypervisor as the primary VMM.

Consequences

  • Some devices need to be ported from crosvm to cloud-hypervisor.

  • Spectrum functionality is expected to break and not supported if the primary VMM is swapped out.