Features

General

  • Pluggable backends including
    • xc: drives Xen via libxc and libxenguest
    • xenlight: drives Xen via libxenlight and libxc
    • libvirt: drives Xen via libvirt
    • qemu: drives KVM by running qemu processes
    • simulator: simulates operations for component-testing
  • Supports running multiple instances and backends on the same host, looking after different sets of VMs
  • Distribution agnostic, known to work on
    • XenServer
    • CentOS 6.*
    • Ubuntu 14.04
    • Fedora 21
  • Extensive configuration via command-line (see manpage) and config file
  • Command-line tool for easy VM administration and troubleshooting
  • User-settable degree of concurrency to get VMs started quickly

VMs

  • VM start/shutdown/reboot
  • VM suspend/resume/checkpoint/migrate
  • VM pause/unpause
  • VM s3suspend/s3resume
  • customisable SMBIOS tables for OEM-locked VMs
  • hooks for 3rd party extensions:
    • pre-start
    • pre-destroy
    • post-destroy
    • pre-reboot
  • per-VM xenguest replacement
  • suppression of VM reboot loops
  • live vCPU hotplug and unplug
  • vCPU to pCPU affinity setting
  • vCPU QoS settings (weight and cap for the Xen credit2 scheduler)
  • DMC memory-ballooning support
  • support for storage driver domains
  • live update of VM shadow memory
  • guest-initiated disk/nic hotunplug
  • guest-initiated disk eject
  • force disk/nic unplug
  • support for ‘surprise-removable’ devices
  • disk QoS configuration
  • nic QoS configuration
  • persistent RTC
  • two-way guest agent communication for monitoring and control
  • network carrier configuration
  • port-locking for nics
  • text and VNC consoles over TCP and Unix domain sockets
  • PV kernel and ramdisk whitelisting
  • configurable VM videoram
  • programmable action-after-crash behaviour including: shutting down the VM, taking a crash dump or leaving the domain paused for inspection
  • ability to move nics between bridges/switches
  • advertises the VM memory footprints
  • PCI passthrough
  • support for discrete emulators (e.g. ‘demu’)
  • PV keyboard and mouse
  • qemu stub domains
  • cirrus and stdvga graphics cards
  • HVM serial console (useful for debugging)
  • support for vGPU
  • workaround for ‘spurious page faults’ kernel bug
  • workaround for ‘machine address size’ kernel bug

Hosts

  • CPUid masking for heterogenous pools: reports true features and current features
  • Host console reading
  • Hypervisor version and capabilities reporting
  • Host CPU querying

APIs

  • versioned json-rpc API with feature advertisements
  • clients can disconnect, reconnect and easily resync with the latest VM state without losing updates
  • all operations have task control including
    • asychronous cancellation: for both subprocesses and xenstore watches
    • progress updates
    • subtasks
    • per-task debug logs
  • asynchronous event watching API
  • advertises VM metrics
    • memory usage
    • balloon driver co-operativeness
    • shadow memory usage
    • domain ids
  • channel passing (via sendmsg(2)) for efficent memory image copying