mirror of
https://github.com/cloud-hypervisor/cloud-hypervisor.git
synced 2024-08-26 01:41:15 +00:00
136 lines
5.6 KiB
Markdown
136 lines
5.6 KiB
Markdown
- [v0.2.0](#v020)
|
|
- [Network device offloading](#network-device-offloading)
|
|
- [Minimal hardware-reduced ACPI](#minimal-hardware-reduced-acpi)
|
|
- [Debug I/O port](#debug-io-port)
|
|
- [Improved direct device assignment](#improved-direct-device-assignment)
|
|
- [Improved shared filesystem](#improved-shared-filesystem)
|
|
- [Ubuntu bionic based CI](#ubuntu-bionic-based-ci)
|
|
- [v0.1.0](#v010)
|
|
- [Shared filesystem](#shared-filesystem)
|
|
- [Initial direct device assignment support](#initial-direct-device-assignment-support)
|
|
- [Userspace IOAPIC](#userspace-ioapic)
|
|
- [Virtual persistent memory](#virtual-persistent-memory)
|
|
- [Linux kernel bzImage](#linux-kernel-bzimage)
|
|
- [Console over virtio](#console-over-virtio)
|
|
- [Unit testing](#unit-testing)
|
|
- [Integration tests parallelization](#integration-tests-parallelization)
|
|
|
|
# v0.2.0
|
|
|
|
This release has been tracked through the [0.2.0 project](https://github.com/intel/cloud-hypervisor/projects/2).
|
|
|
|
Highlights for `cloud-hypervisor` version 0.2.0 include:
|
|
|
|
### Network device offloading
|
|
|
|
As part of our general effort to offload paravirtualized I/O to external
|
|
processes, we added support for
|
|
[vhost-user-net](https://access.redhat.com/solutions/3394851) backends. This
|
|
enables `cloud-hypervisor` users to plug a `vhost-user` based networking device
|
|
(e.g. [DPDK](https://dpdk.org)) into the VMM as their virtio network backend.
|
|
|
|
### Minimal hardware-reduced ACPI
|
|
|
|
In order to properly implement and guest reset and shutdown, we implemented
|
|
a minimal version of the hardware-reduced ACPI specification. Together with
|
|
a tiny I/O port based ACPI device, this allows `cloud-hypervisor` guests to
|
|
cleanly reboot and shutdown.
|
|
|
|
The ACPI implementation is a `cloud-hypervisor` build time option that is
|
|
enabled by default.
|
|
|
|
### Debug I/O port
|
|
|
|
Based on the Firecracker idea of using a dedicated I/O port to measure guest
|
|
boot times, we added support for logging guest events through the
|
|
[0x80](https://www.intel.com/content/www/us/en/support/articles/000005500/boards-and-kits.html)
|
|
PC debug port. This allows, among other things, for granular guest boot time
|
|
measurements. See our [debug port documentation](https://github.com/intel/cloud-hypervisor/blob/master/docs/debug-port.md)
|
|
for more details.
|
|
|
|
### Improved direct device assignment
|
|
|
|
We fixed a major performance issue with our initial VFIO implementation: When
|
|
enabling VT-d through the KVM and VFIO APIs, our guest memory writes and reads
|
|
were (in many cases) not cached. After correctly tagging the guest memory from
|
|
`cloud-hypervisor` we're now able to reach the expected performance from
|
|
directly assigned devices.
|
|
|
|
### Improved shared filesystem
|
|
|
|
We added shared memory region with [DAX](https://www.kernel.org/doc/Documentation/filesystems/dax.txt)
|
|
support to our [virtio-fs](https://virtio-fs.gitlab.io/) shared file system.
|
|
This provides better shared filesystem IO performance with a smaller guest
|
|
memory footprint.
|
|
|
|
### Ubuntu bionic based CI
|
|
|
|
Thanks to our [simple KVM firmware](https://github.com/intel/rust-hypervisor-firmware)
|
|
improvements, we are now able to boot Ubuntu bionic images. We added those to
|
|
our CI pipeline.
|
|
|
|
# v0.1.0
|
|
|
|
This release has been tracked through the [0.1.0 project](https://github.com/intel/cloud-hypervisor/projects/1).
|
|
|
|
Highlights for `cloud-hypervisor` version 0.1.0 include:
|
|
|
|
### Shared filesystem
|
|
|
|
We added support for the [virtio-fs](https://virtio-fs.gitlab.io/) shared file
|
|
system, allowing for an efficient and reliable way of sharing a filesystem
|
|
between the host and the `cloud-hypervisor` guest.
|
|
|
|
See our [filesystem sharing](https://github.com/intel/cloud-hypervisor/blob/master/docs/fs.md)
|
|
documentation for more details on how to use virtio-fs with `cloud-hypervisor`.
|
|
|
|
### Initial direct device assignment support
|
|
|
|
VFIO (Virtual Function I/O) is a kernel framework that exposes direct device
|
|
access to userspace. `cloud-hypervisor` uses VFIO to directly assign host
|
|
physical devices into its guest.
|
|
|
|
See our [VFIO](https://github.com/intel/cloud-hypervisor/blob/master/docs/vfio.md)
|
|
documentation for more detail on how to directly assign host devices to
|
|
`cloud-hypervisor` guests.
|
|
|
|
### Userspace IOAPIC
|
|
|
|
`cloud-hypervisor` supports a so-called split IRQ chip implementation by
|
|
implementing support for the [IOAPIC](https://wiki.osdev.org/IOAPIC).
|
|
By moving part of the IRQ chip implementation from kernel space to user space,
|
|
the IRQ chip emulation does not always run in a fully privileged mode.
|
|
|
|
### Virtual persistent memory
|
|
|
|
The `virtio-pmem` implementation emulates a virtual persistent memory device
|
|
that `cloud-hypervisor` can e.g. boot from. Booting from a `virtio-pmem` device
|
|
allows to bypass the guest page cache and improve the guest memory footprint.
|
|
|
|
### Linux kernel bzImage
|
|
|
|
The `cloud-hypervisor` linux kernel loader now supports direct kernel boot from
|
|
`bzImage` kernel images, which is usually the format that Linux distributions
|
|
use to ship their kernels. For example, this allows for booting from the host
|
|
distribution kernel image.
|
|
|
|
### Console over virtio
|
|
|
|
`cloud-hypervisor` now exposes a `virtio-console` device to the guest. Although
|
|
using this device as a guest console can potentially cut some early boot
|
|
messages, it can reduce the guest boot time and provides a complete console
|
|
implementation.
|
|
|
|
The `virtio-console` device is enabled by default for the guest console.
|
|
Switching back to the legacy serial port is done by selecting
|
|
`--serial tty --console off` from the command line.
|
|
|
|
### Unit testing
|
|
|
|
We now run all unit tests from all our crates directly from our CI.
|
|
|
|
### Integration tests parallelization
|
|
|
|
The CI cycle run time has been significantly reduced by refactoring our
|
|
integration tests; allowing them to all be run in parallel.
|