Moin,
Ziel dieses Beitrags soll es sein Erfahrungen mit bhyve zusammenzutragen. Meine Idee ist, dass ich die Erkenntnisse immer in diesem ersten Beitrag sammle (evtl. kommentiere) und aktualisiere. Anlass ist, dass ich vor der Entscheidung stehe, einen Gast neu aufzusetzen. Da bestimmte Parameter im Nachhinein nur schwierig geändert werden können, möchte ich die Maschine natürlich so aufsetzen, dass sie für meine Bedürfnisse optimal konfiguriert/aufgesetzt ist. Mir geht es im konkreten im einen Windows 11 Gast, den ich produktiv einsetze. Damit möglichst viele von den Erfahrungen aller profitieren können, macht es aber Sinn auch andere Gastsysteme zu berücksichtigen.
Um möglichst flexibel zu sein würde ich es gerne auf die Mittel beschränken, die das Basissystem mitbringt. Dinge wie libvirt oder vmbhyve sollten wir also unberücksichtigt lassen. Da wir 2024 haben setze ich einfach mal den Einsatz von zfs voraus.
Um einen Anfang zu finden, hier erstmal ein Aufruf, wie ich einen Gast starte. Die einzelnen Parameter würde ich dann "auseinandernehmen":
-c threads=8: Ich habe System mit einer CPU, welche 16 Kerne bzw. 32 Threads hat. Ob es hier sinnvoller ist "numcpus", "sockets", "cores" oder "threads" zu verwenden, weiß ich nicht. "Lizenzbedingt" würde ich vermuten, dass "numcpus" ausscheidet.
-m 16G: Der Host hat 64G, dem Gast möchte ich (da weitere Gäste laufen) 16G zuweisen.
-s 4,nvme,/dev/zvol...: Meine Tests (iirc. unter FreeBSD 14.0) mit einer jungfräulichen Windows 10-Installation haben ergeben, dass -nvme schneller als "ahci-hd" und sogar als "virtio-blk" ist. Inzwischen bezweifle ich das, da ein Test der Lesegeschwindigkeit auf nur noch ca. 600MB/sec. kommt. Als Festplattendevice habe ich keine Datei verwendet sondern ein zvol. Ob das sinnvoll ist? Keine Ahnung. Schön finde ich, dass ich so einfach snapshots von dem zvol machen und "wegsichern" kann.
-s 7,passthru...: Benötige ich, da ich einen USB-Kartenleser an den Gast durchreichen muss.
-s 10,virtio-net,tap0: virtio-net habe ich gewählt, da ich vermuten würde, dass dies schneller ist als eine Netzwerkkarte zu emulieren.
-p0...: Wie oben beschrieben pinne ich die einzelnen virtuellen Threads an einen echten Thread. Ob dies auch Nachteile hat, weiß ich nicht.
Soweit für den Anfang. Offen ist für mich bislang tpm bzw. tpm-passthru. Windows 11 benötigt grundsätzlich tpm. Mein Board hat zwar tpm 2.0 aber scheinbar wird die Hardware von FreeBSD nicht unterstützt. Wenn ich "kldload tpm" ausführe kommt "kernel: driver bug: Unable to set devclass (class: ppc devname: (unknown))". Eine Alternative wäre swtpm (aus den Ports/packages), was ich jedoch bis heute nicht verstanden und ans Laufen gebracht habe.
Gerne können Anmerkungen, Verbesserungsvorschläge gemacht werden oder Fragen gestellt werden. Auch Meinungen usw. sind willkommen.
Hoffentlich gibt es eine rege Beteiligung, von der viele profitieren.
Ziel dieses Beitrags soll es sein Erfahrungen mit bhyve zusammenzutragen. Meine Idee ist, dass ich die Erkenntnisse immer in diesem ersten Beitrag sammle (evtl. kommentiere) und aktualisiere. Anlass ist, dass ich vor der Entscheidung stehe, einen Gast neu aufzusetzen. Da bestimmte Parameter im Nachhinein nur schwierig geändert werden können, möchte ich die Maschine natürlich so aufsetzen, dass sie für meine Bedürfnisse optimal konfiguriert/aufgesetzt ist. Mir geht es im konkreten im einen Windows 11 Gast, den ich produktiv einsetze. Damit möglichst viele von den Erfahrungen aller profitieren können, macht es aber Sinn auch andere Gastsysteme zu berücksichtigen.
Um möglichst flexibel zu sein würde ich es gerne auf die Mittel beschränken, die das Basissystem mitbringt. Dinge wie libvirt oder vmbhyve sollten wir also unberücksichtigt lassen. Da wir 2024 haben setze ich einfach mal den Einsatz von zfs voraus.
Um einen Anfang zu finden, hier erstmal ein Aufruf, wie ich einen Gast starte. Die einzelnen Parameter würde ich dann "auseinandernehmen":
-S: diesen Parameter benötige ich, weil ich einen USB-Kartenleser an den Gast durchreichen muss.bhyve -S -c threads=8 -m 16G -H -w -s 0,amd_hostbridge -s 3,ahci-cd,/home/foobar/bhyve/null_dvd.iso -s 4,nvme,/dev/zvol/vm0/win10disk0 -s 7,passthru,1/0/0 -s 10,virtio-net,tap0 -s11,fbuf,tcp=0.0.0.0:5900,w=1600,h=900 -s 30,xhci,tablet -s31,lpc -lbootrom,/usr/local/share/uefi-firmware/BHYVE_UEFI.fd -p0:1 -p1:2 -p2:3 -p3:4 -p4:5 -p5:6 -p6:7 -p7:8 win11 &
-c threads=8: Ich habe System mit einer CPU, welche 16 Kerne bzw. 32 Threads hat. Ob es hier sinnvoller ist "numcpus", "sockets", "cores" oder "threads" zu verwenden, weiß ich nicht. "Lizenzbedingt" würde ich vermuten, dass "numcpus" ausscheidet.
-m 16G: Der Host hat 64G, dem Gast möchte ich (da weitere Gäste laufen) 16G zuweisen.
-s 4,nvme,/dev/zvol...: Meine Tests (iirc. unter FreeBSD 14.0) mit einer jungfräulichen Windows 10-Installation haben ergeben, dass -nvme schneller als "ahci-hd" und sogar als "virtio-blk" ist. Inzwischen bezweifle ich das, da ein Test der Lesegeschwindigkeit auf nur noch ca. 600MB/sec. kommt. Als Festplattendevice habe ich keine Datei verwendet sondern ein zvol. Ob das sinnvoll ist? Keine Ahnung. Schön finde ich, dass ich so einfach snapshots von dem zvol machen und "wegsichern" kann.
-s 7,passthru...: Benötige ich, da ich einen USB-Kartenleser an den Gast durchreichen muss.
-s 10,virtio-net,tap0: virtio-net habe ich gewählt, da ich vermuten würde, dass dies schneller ist als eine Netzwerkkarte zu emulieren.
-p0...: Wie oben beschrieben pinne ich die einzelnen virtuellen Threads an einen echten Thread. Ob dies auch Nachteile hat, weiß ich nicht.
Soweit für den Anfang. Offen ist für mich bislang tpm bzw. tpm-passthru. Windows 11 benötigt grundsätzlich tpm. Mein Board hat zwar tpm 2.0 aber scheinbar wird die Hardware von FreeBSD nicht unterstützt. Wenn ich "kldload tpm" ausführe kommt "kernel: driver bug: Unable to set devclass (class: ppc devname: (unknown))". Eine Alternative wäre swtpm (aus den Ports/packages), was ich jedoch bis heute nicht verstanden und ans Laufen gebracht habe.
Gerne können Anmerkungen, Verbesserungsvorschläge gemacht werden oder Fragen gestellt werden. Auch Meinungen usw. sind willkommen.
Hoffentlich gibt es eine rege Beteiligung, von der viele profitieren.
Zuletzt bearbeitet: