Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 07 Dec 2014 22:22:14 -0800
From:      Peter Grehan <grehan@freebsd.org>
To:        Tinker <tinkr@openmailbox.org>
Cc:        freebsd-virtualization@freebsd.org
Subject:   Re: Can a host OS user process create a zillion BHyVe VM:s and microcontrol them?
Message-ID:  <54854396.9000703@freebsd.org>
In-Reply-To: <0fd8dd84712a2d78e4397ac89d78326c@openmailbox.org>
References:  <CAG=rPVccq7R5%2Bcbm6nR1WCZDM=-xwwkmF=cw8PCuk58oHPA-gQ@mail.gmail.com> <1423616F-F44D-47E5-8595-DE862DC04464@bsdimp.com> <546A34C8.6060004@freebsd.org> <CAG=rPVeEEuK874g6%2BfVpHa5J_4V%2BA%2BQNbB5bCpXiS86jZW_U3Q@mail.gmail.com> <546C8812.2070904@FreeBSD.org> <20141119195923.GS24601@funkthat.com> <CAG=rPVdrjim_28ntxUv6qJxb-_bGhGabZipFyYzNuydZ2XPm5Q@mail.gmail.com> <69A8C06F-A7F6-49EC-8601-91AC4CDBFB13@FreeBSD.org> <547364EB.7090505@freebsd.org> <CAG=rPVeAM2_EEVYyhQiuXV7i%2Bpvw-uPYRBbjXeZhZKbrZzHRMg@mail.gmail.com> <547AEB93.3050600@freebsd.org> <CAF05609-FCB4-4CB6-9533-A1F32A7F3F22@neville-neil.com> <alpine.BSF.2.11.1412041456190.87680@fledge.watson.org> <5fa49b79a601363b471babbfc577590d@openmailbox.org> <5483BA9F.2000905@freebsd.org> <0fd8dd84712a2d78e4397ac89d78326c@openmailbox.org>

next in thread | previous in thread | raw e-mail | index | archive | help
> Right, so a VT-x takes time - if we're talking 2500 cycles per
> roundtrip, then you get approx one million of them per second - fair
> enough.

  Not much time left for anything else though at that exit rate :(

> As you point out the VM is launched absolutely bare.
>
> So then, strategies would need to be devised for how to run the code.
>
> I guess this would range all the way from running a barebones memory
> management and pthreads implemenation (both those exist at least for
> amd64, if I got it right, not sure how up to date they are though),
>
> ..to running a minimal BSD/Linux kernel within the VM for maxing
> compatibility.
>
> Perhaps some neat memory dumping drick could be applied to zero the
> BSD/Linux kernel boot time, i.e. the kernel doesn't boot but it's just
> loaded from a hibernated memory image.

  Yep, that's possible.

> Okay, so, there are two aspects to this problem now:
>
>   (1) The BHyVe specific parts, about how to use BHyVe's interfaces to
> deliver the virtualization/sandbox aspect, and
>
>   (2) The guest specific parts, as in how run the intended
> libraries/binaries as close to the metal as possible and with as low RAM
> overhead as possible (and CPU overhead) within the sandbox.
>
>
> I guess (2) is off-topic to this mailing list so should be looked into
> separately.
>
> If you have any spontaneous thoughts on that one though, of course feel
> free to share them :)

  There are many examples of small embedded o/s's that could easily be 
run in this environment - a reasonable example is the FreeBSD loader itself.

> And, (1) is on this ML's topic, so I can direct any subsequent questions
> about that to here.
>
> If you have any particular references with regard to header files, man
> page or example program source files, feel free to pass them!

  Not a lot of documentation other than the bhyve source code itself.

  lib/libvmmapi/vmmapi_freebsd.c is an example of how to set up a 64-bit 
environment that the FreeBSD/amd64 kernel can be directly executed from.

 
https://github.com/grehan-freebsd/grub2-bhyve/blob/master/grub-core/kern/emu/bhyve_hostif.c 
sets up a flat 32-bit environment that Linux/OpenBSD/NetBSD kernels 
expect to be invoked in.

  usr.sbin/bhyve/bhyverun.c has the main run loop for bhyve, which 
demonstrates how exits are handled.

later,

Peter.







Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?54854396.9000703>