bhyve and contention

Rodney W. Grimes freebsd-rwg at
Wed Feb 14 19:27:17 UTC 2018

[ Charset UTF-8 unsupported, converting... ]
> On 14/02/2018 10:18, Peter Grehan wrote:
> >>> 2.
> >>> In the following context, the server is the same but this time all five
> >>> guests have -c 4 per guest, so bhyve is asking 12 more cores than that
> >>> existing in hardware. Does the guest fail to load, do either guest or
> >>> server crash?
> >>
> >> The is core over commit, very common in the virtualization world,
> >> bhyve does its best effort to give the guests cores as needed.
> > 
> > ?To add to what Rod said - bhyve uses a thread for each vCPU. It's up to
> > the FreeBSD scheduler to determine where/when these threads run.
> > 
> > ?It is possible for a guest to fail, for example if a spinlock times out
> > due to vCPUs not being able to run to release a lock. This is a general
> > problem with virtualization and can occur even on VMWare ESXi with heavy
> > oversubscription.
> There are  some bhyve options you need to check -
> You want to use the -H option which prevents the guest keeping 100% cpu.

Very true, this yields the vCPU when a halt is executed.

> Be sure not to pass the -S option to bhyve as it wires the guest memory.
> This was seen recently as sysutils/chyves uses it by default.

This should be evaluated, if you do not pass -S you run into the
possible performance impact of swapping guest memory, which does
infact allow you more over commit, but at a pretty large
performance penality.

You need swap space if you are going to not pass -S and over commit,
if you do not have enough swap space for the over commit your system
runs out of swap and usually ends up killing random processes, and
random usually means the most important things you are running!

> If you use zfs, you may want to set the arc_max.

This is not a may, if you use ZFS you must restrict its buffer cache,
or expect unstable systems.  ZFS's default situation is to use up
to 95% of memory, that leaves almost nothing for a running VM.

> One thing that I have noticed, as a guest allocates ram, the host
> allocates ram to its bhyve instance, but when the guest releases it, the
> host is unaware of the ram now being free. Apparently there is work on
> getting the guest to notify the host of released ram. Until that is
> available you may want to restart guests that temporarily allocate large
> amounts of ram.

Correct, we need an implementation of what is called a memory ballon
driver so that the guest can pass back to the host un used memory.

> -- 
> FreeBSD - the place to B...Sharing Devices
> Shane Ambler

Rod Grimes                                                 rgrimes at

More information about the freebsd-virtualization mailing list