git: 2fc0dfb4ba - main - Status/2024Q1/bhyve.adoc: Add report
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Fri, 29 Mar 2024 16:32:33 UTC
The branch main has been updated by salvadore: URL: https://cgit.FreeBSD.org/doc/commit/?id=2fc0dfb4ba3b057545fb5643d035552667fc7ee5 commit 2fc0dfb4ba3b057545fb5643d035552667fc7ee5 Author: Chris Moerz <freebsd@ny-central.org> AuthorDate: 2024-03-29 16:32:11 +0000 Commit: Lorenzo Salvadore <salvadore@FreeBSD.org> CommitDate: 2024-03-29 16:32:18 +0000 Status/2024Q1/bhyve.adoc: Add report Reviewed by: status (Pau Amma <pauamma@gundo.com>) --- .../en/status/report-2024-01-2024-03/bhyve.adoc | 72 ++++++++++++++++++++++ 1 file changed, 72 insertions(+) diff --git a/website/content/en/status/report-2024-01-2024-03/bhyve.adoc b/website/content/en/status/report-2024-01-2024-03/bhyve.adoc new file mode 100644 index 0000000000..7e94c66526 --- /dev/null +++ b/website/content/en/status/report-2024-01-2024-03/bhyve.adoc @@ -0,0 +1,72 @@ +=== Bhyve Improvements + +Links: + +link:https://callfortesting.org/[bhyve production users calls] URL: link:https://callfortesting.org[] +link:https://wiki.freebsd.org/EnterpriseWorkingGroup[FreeBSD Wiki - Enterprise Working Group] URL: link:https://wiki.freebsd.org/EnterpriseWorkingGroup[] + +link:https://wiki.freebsd.org/ChrisMoerz/bhyve_management[FreeBSD Wiki - EWG - bhyve and jails management tooling] URL: link:https://wiki.freebsd.org/ChrisMoerz/bhyve_management[] + +link:http://static.bultmann.eu/s6-talk/#(1)[Jan Bramkamp's work on s6rc] URL:http://static.bultmann.eu/s6-talk/#(1)[] + +link:https://github.com/christian-moerz/vmstated[vmstated on Github] URL: link:https://github.com/christian-moerz/vmstated[] + +link:https://www.youtube.com/watch?v=f60NCrunXyw[YouTube - vmstated explained] URL: link:https://www.youtube.com/watch?v=f60NCrunXyw[] + +Contact: Chris Moerz <freebsd@ny-central.org> + +==== Bhyve I/O Performance Measurements + + +Participants of the weekly bhyve production users calls recently discussed bhyve's I/O performance. +Various ways of measuring and comparing were brought up, however it was quickly clear that there is currently no formal analysis and report on this. +So, we started this effort in the hopes of better understanding the various impacts of configuration options for a guest on its I/O performance. +We created a set of shell scripts that harness a FreeBSD guest for running package:benchmarks/fio[] I/O performance measurements under various configurations. +This allows us to compare multiple criteria like bandwidth, latency, IOPS, and more. + +So far, we are testing for + +* different storage backends (i.e. ahci-hd, nvme, virtio-blk) +* different memory settings +* different CPU pinning options +* different block sizes for the backing storage +* different block sizes for accessing virtual disks + +We are also pitting results for different CPU manufacturers against each other and contrasting guest vs host performance to better understand the performance impact of virtualization. + +We plan to continue discussing our results during Michael Dexter's weekly bhyve production users call - come join us if you are interested. +We also hope to be able to present the results at EuroBSDCon in Q3. + +==== Bhyve Virtual Machine Tooling + +Last year, Greg Wallace at the FreeBSD Foundation founded the Enterprise Working Group with the specific goal of addressing pain points of Enterprise users of FreeBSD. +One of the work groups that emerged clustered around bhyve and jails management tooling. +After collecting a set of desired features and functionality, one overarching key point for bhyve emerged: the desire to have configuration concepts and tooling for bhyve like the ones available for jails. + +While other desirable features were identified as well, i.e. TPM software emulation and snapshot/restore/host-migration, the conceptual tooling question won over those due to the lower degree of complexity and its clarity on goal and the path on how to take steps towards it. + +Technically, this means working out existing gaps around process supervision and virtual machine state management. +First steps were taken by experimenting with existing frameworks (i.e. s6rc work by Jan Bramkamp) and eventually -- through discussions in the weekly bhyve production user's calls (organized by Michael Dexter) -- this led to a proof-of-concept implementation of "vmstated". + +Started as an experiment to better understand the problem space of process supervision and virtual machine state handling, vmstated is constructed of a daemon and vmstatedctl management utility. +It is built with base-only tooling and libraries and leverages FreeBSD specific constructs like kqueue to minimize its resource impact. + +vmstated is configured via a UCL configuration file (similar to [.filename]#jails.conf#) and -- in combination with a man:bhyve_config|5] configuration file -- already provides highest flexibility in configuring virtual machines. +vmstatedctl provides a jail-like command set to start, stop, and retrieve status information about guests. +State transitions can easily be hooked via shell scripts and allow running additional commands for network or storage set up and tear down when relevant state changes occur. + +An initial release is already in ports as package:sysutils/vmstated[] and updates are pending commit; however, the newest version can be found on GitHub. +We are considering expanding the work; we would also like to invite anyone interested to join us in this work! +Patches, suggestions, feedback, etc. are all very much welcome! + +If you want to know more about our work, come join us at one of Michael Dexter's weekly bhyve production users calls or reach me mailto:freebsd@ny-central.org[by email]. + +==== Documentation === + +We managed to update a few parts of the Handbook and Porter's Handbook (thanks to mailto:emaste@FreeBSD.org[Ed Maste], mailto:jrm@FreeBSD.org[Joseph Mingrone], mailto:pauamma@gundo.com[Pau Amma], and mailto:rgrimes@FreeBSD.org[rgrimes@FreeBSD.org]): + +* several improvements and expansions to the virtualization chapter in the FreeBSD Handbook +** using a man:bhyve_config|5] configuration file +** jailing bhyve +** experimental snapshot and restore feature +** setting up a Windows guest +* we also have a review (link:https://reviews.freebsd.org/D43940[D43940]) up for an initial step to improving the bhyve man page +** this was intentionally started with a structural update first to separate the many `-s` flag options +** once this lands, we can move to a more widespread update to the overall content + +Feedback is obviously very welcome -- on the existing content as well as any additional content we should be looking into!