v1.10.0
firecracker-microvm/firecrackerv1.10.0Nov 7, 2024by JackThomson2
AI Summary
Firecracker v1.10.0 brings performance improvements to virtio-net, adds GDB debugging support, and raises the minimum guest kernel requirement to 5.10.
Key Highlights
- Added VIRTIO_NET_F_RX_MRGBUF support for better memory management
- Added KVM_KVMCLOCK_CTRL ioctl support for soft lockup prevention
- Added GDB debugging support for microVM guest kernel
- Upgraded virtio-net to use readv syscall (RX performance improvement)
- Dropped support for guest kernel 4.14
Breaking Changes
- Minimum supported guest kernel is now 5.10
New Features
- VIRTIO_NET_F_RX_MRGBUF support
- KVM_KVMCLOCK_CTRL ioctl
- GDB debugging support
- ARM cache support for high number of sets
- virtio-net readv optimization
Full Release Notes
### Added * [#4834](https://github.com/firecracker-microvm/firecracker/pull/4834): Add `VIRTIO_NET_F_RX_MRGBUF` support to the `virtio-net` device. When this feature is negotiated, guest `virtio-net` driver can perform more efficient memory management which in turn improves RX and TX performance. * [#4460](https://github.com/firecracker-microvm/firecracker/pull/4460): Add a call to [`KVM_KVMCLOCK_CTRL`](https://docs.kernel.org/virt/kvm/api.html#kvm-kvmclock-ctrl) after pausing vCPUs on x86_64 architectures. This ioctl sets a flag in the KVM state of the vCPU indicating that it has been paused by the host userspace. In guests that use kvmclock, the soft lockup watchdog checks this flag. If it is set, it won't trigger the lockup condition. Calling the ioctl for guests that don't use kvmclock will fail. These failures are not fatal. We log the failure and increase the `vcpu.kvmclock_ctrl_fails` metric. * [#4869](https://github.com/firecracker-microvm/firecracker/pull/4869): Added support for Aarch64 systems which feature CPU caches with a number of sets higher than `u16::MAX`. * [#4797](https://github.com/firecracker-microvm/firecracker/pull/4797), [#4854](https://github.com/firecracker-microvm/firecracker/pull/4854): Added GDB debugging support for a microVM guest kernel. Please see our [GDB debugging documentation](docs/gdb-debugging.md) for more information. ### Changed * [#4844](https://github.com/firecracker-microvm/firecracker/pull/4844): Upgrade `virtio-net` device to use `readv` syscall to avoid unnecessary memory copies on RX path, increasing the RX performance. ### Removed * [#4804](https://github.com/firecracker-microvm/firecracker/pull/4804): Drop Support for guest kernel 4.14. Linux 4.14 reached end-of-life in [January 2024](https://lore.kernel.org/lkml/2024011046-ecology-tiptoeing-ce50@gregkh/) The minimum supported guest kernel now is 5.10. ### Fixed * [#4796](https://github.com/firecracker-microvm/firecracker/pull/4796): Fixed Vsock not notifying guest about `TRANSPORT_RESET_EVENT` event after snapshot restore. This resulted in guest waiting indefinitely on a connection which was reset during snapshot creation. * [#4790](https://github.com/firecracker-microvm/firecracker/pull/4790): v1.9.0 was missing most of the debugging information in the debuginfo file, due to a change in the Cargo defaults. This has been corrected. * [#4826](https://github.com/firecracker-microvm/firecracker/pull/4826): Add missing configuration of tap offload features when restoring from a snapshot. Setting the features was previously [moved](https://github.com/firecracker-microvm/firecracker/pull/4680/commits/49ed5ea4b48ccd98903da037368fa3108f58ac1f) from net device creation to device activation time, but it was not reflected in the restore path. This was leading to inability to connect to the restored VM if the offload features were used.