Various Improvements to the FreeBSD hypervisor 

Contact: Chris Moerz <freebsd@ny-central.org>, 

I/O Performance Measurements

Recent discussions among Bhyve production users highlighted the need for formal I/O performance analysis. In response, the team began testing various configurations using a set of shell scripts with the benchmarks/fio package. The focus is evaluating different storage backends, memory settings, CPU pinning options, and block sizes for both backing storage and virtual disks. The team also compares performance across CPU manufacturers and guest and host environments. 

Virtual Machine Tooling

The FreeBSD Foundation’s Enterprise Working Group identified a need for Bhyve tooling, similar to jails. This led to the development of “vmstated,” a daemon and management utility built with base-only FreeBSD tools. Vmstated is configured via UCL, offering flexibility in managing virtual machines, with features like jail-like command sets and state transition hooks. The tool is available in the ports collection as sysutils/vmstated, with ongoing updates on GitHub. Contributions and feedback are encouraged.

Documentation Updates

Several updates have been made to the FreeBSD Handbook and Porter’s Handbook, focusing on virtualization, Bhyve configuration, and managing Bhyve guests. A review for an updated Bhyve man page structure is underway, with further content improvements planned. Feedback on these updates is welcome.

Flattened Device Tree for arm64 Guests

Mark Johnston and Andrew Turner collaborated to create essential routines for constructing a Flattened Device Tree (FDT) for arm64 bhyve guests. The FDT describes different hardware components, such as CPUs, memory, UART, PCIe controller, interrupt controller, and platform timer, which the guest OS should be aware of.

More Information: Bhyve Updates (GitHub)