A Virtual Machine Monitor for modern Cloud workloads. Features include CPU, memory and device hotplug, support for running Windows and Linux guests, device offload with vhost-user and a minimal compact footprint. Written in Rust with a strong focus on security.
This release has been tracked in our roadmap project as iteration v39.0. The following user visible changes have been made:
It is now possible to use --pci-segment
to adjust the aperture size that
devices 32-bit and 64-bit PCI device BARs will be allocated from. Previously
the address space was equally distributed across all the segments which may
leave insufficient space for devices that require a large 32-bit space. With
this change the weighting per segment can be adjusted. (#6387)
Support for directly booting Linux from bzImages has been added.(#6200)
The x_nv_gpudirect_clique
option was added to --device
to allow the
configuration of device P2P support with NVIDIA GPUs. (#6235)
A new API endpoint and ch-remote
option added for injecting an NMI into the
guest. (#6047)
sigwinch_listener
process (#6208)queue_affinity
option in OpenAPI metadata (#6268)virtio-vsock
(#6306)virtio-fs
tag validation (#6358, #6359)pvpanic
device to OpenAPI metadata (#6372)virtio-mem
regions with snapshot/restore (#6337,
#6338)event-monitor
events around reboot (#6277, #6274)ch-remote
with no subcommand (#6230)virtio
devices after snapshot/restore and live migration
(#6326, #6265)Many thanks to everyone who has contributed to our release:
This is a bug fix release. The following issues have been addressed:
This release has been tracked in our roadmap project as iteration v38.0. The following user visible changes have been made:
Users now can throttle a group of block devices with the new
--rate-limiter-group
option. Details can be found from the I/O
Throttling documentation
Users now have the option to pin virt-queue threads for block devices to specific host cpus.
The boot time with prefault
option enabled is optimized via parallel
memory prefault.
A 'debug-console' device is added to provide a user-configurable debug port for logging guest information. Details can be found from the Debug IO Ports documentation.
All non-emulated MMIO regions of VFIO devices are now mapped to the VFIO container, allowing PCIe P2P between all VFIO devices on the same VM. This is required for a wide variety of multi-GPU workloads involving GPUDirect P2P (DMA between two GPUs), GPUDirect RDMA (DMA between a GPU and an IB device).
Users now can set the vcpu affinity to a host CPU with index larger than 255.
virtio-vsock
(#6080, #6091, #6095)Many thanks to everyone who has contributed to our release:
This is a bug fix release. The following issues have been addressed:
static mut
with once_cell
(#5772)This is a bug fix release. The following issues have been addressed:
This is a bug fix release. The following issues have been addressed:
This release has been tracked in our roadmap project as iteration v37.0. The following user visible changes have been made:
This release is a LTS release. Point releases for bug fixes will be made for the next 18 months; live migration and live upgrade will be supported between the point releases of the LTS.
Now VFIO devices with 32-bit memory BARs can be attached to non-zero PCI segments on the guest, allowing users to have more 32-bit devices and assign such devices to appropriate NUMA nodes for better performance.
Named TAP devices now accepts IP configuration from users, such as IP and MAC address, as long as the named TAP device is created by Cloud Hypervisor (e.g. not existing TAP devices).
Now legacy serial device and virtio console can be set as TTY mode as
the same time. This allows users to capture early boot logs with the
legacy serial device without losing performance benefits of using
virtio-console, when appropriate kernel configuration is used (such as
using kernel command-line console=hvc0 earlyprintk=ttyS0
on x86).
The speed of VM restoration from snapshots is improved with a better implementation of deserializing JSON files.
Many thanks to everyone who has contributed to our release:
This release has been tracked in our roadmap project as iteration v36.0. The following user visible changes have been made:
We switched back to use the clap
crate to create our command line,
since the argh
crate is barely maintained. There were several syntax
changes:
--option value
commands now are --option=value
.--disk DISK1 --disk DISK2
command now is --disk DISK1 DISK2
.-v -v -v
command now is -vvv
.Note: the released binary size increased around 0.3M due to this change.
Now the enabled (Cargo) features of the running Cloud Hypervisor
instance can be queried via API endpoint (/vmm.ping
) and CLI
(--version -v
).
The --numa
command is augmented with a new option pci_segment=
, so
that users can define the relationship between PCI segments and NUMA
nodes. Examples can be found from the memory documentation
Now the CPU topology on x86_64 platforms supports multiple vendors.
The --serial
command is augmented with a new option socket=
, allowing
users to access the serial port using a Unix socket.
An AIO backend is added for virtio-block
devices to improve block
device performance when the io_uring
feature is not supported by the
host Operating System.
Many thanks to everyone who has contributed to our release:
This release has been tracked in our roadmap project as iteration v35.0. The following user visible changes have been made:
virtio-vsock
Support for Linux Guest Kernel v6.3+Since kernel v6.3, a vsock packet can be included in a single descriptor,
instead of being split over two descriptors. Our virtio-vsock
implementation
now support both situations.
virtio-block
A new option serial
is added to the --block
command that allows users to
specify a serial number for block devices which will be guest visible.
This ensures migration works correctly between hosts that have different TSC frequencies if the guest is running with TSC as the source of timekeeping.
static mut
with once_cell
(#5772)Many thanks to everyone who has contributed to our release:
This release has been tracked in our roadmap project as iteration v34.0. The following user visible changes have been made:
A new device has been added that can communicate when the guest kernel has panicked and share those details with the VMM. This is controlled with a new --pvpanic
command line option and JSON API change equivalent. (#5526)
Requesting to dump the guest memory as core dump will now transparently pause the VM if required; returning to the original state after. (#5604)
The support for QCOW2 files has been enhanced to include support for using backing files. (#5573)
The minimum supported host kernel is now 5.13 in order to incorporate a bug fix for KVM_FEATURE_ASYNC_PF_INT
functionality. (#5626)
Many thanks to everyone who has contributed to our release: