Hello,
sorry for the late reply -- but we had some notes from the meeting below.
The next meeting is the upcoming Monday, January 13th 10:00 - 12:00 CET
at https://meet.jit.si/MirageOS -- see our shared pad at
https://pad.data.coop/To6IOSeNSOK9kFVlgo7XWw?both# for notes and agenda
(add your talking points there) :)
Best,
Hannes
## Meeting Dec 9th 10:00 - 12:00 CET
- Participants: Sam, Hannes, Reynir, Pierre, Pixie
### OCaml 5
- ocaml-solo5 1.0.0 is released, now we can get MirageOS unikernels with
OCaml 5.2.1
- TODO we should announce this on discuss.ocaml.org and on mirageos.org
- Romain opened a PR for ocaml-solo5
https://github.com/mirage/ocaml-solo5/pull/144
- Pierre: pthread_cond_init is a stub, so pthread_cond_destroy could
as well be
- Hannes: the second commit is to not use opam-monorepo -- let us
briefly remind ourselves that a MirageOS unikernel has a custom libc, so
we need to cross-compile all opam packages that include C stubs. The
MirageOS 4 way of doing that is to download (using opam-monorepo all
opam packages into a "duniverse" directory), and compile everything.
- Hannes: it is not entirely clear to me how to detect opam packages
that include C stubs (to cross-compile them), but removing the
opam-monorepo dependency would be great
- Sam: we all agree that if we're cross-compiling to a different
architecture, this won't work
- Reynir: does cross-compilation work at the moment? Sam: I have
tested it, from x86_64 to aarch64 - running on Raspberry PI
- Hannes: that cross-compilation is Linux-only so I never tested it
- Sam: What do you mean it's Linux-only?
- Hannes: _ says it's Linux-only and I never bothered looking into
the details. Actually, maybe it's not. -- Turns out the
solo5-cross-aarch64 is Linux only
- Reynir: maybe there should be an opam flag "this does not include C
stubs", but that'd be incomplete and require some bookkeeping. If we
mark common packages as such we can avoid some re-fetching.
- Hannes: we would need to convince a lot of package maintainers to
include this flag.
- Hannes: META file includes information if we should link to
external archives. Maybe a path forward. Feels a bit hairy, and only
works with installed packages and not packages we don't have installed yet.
- Hannes: If we separate pthread_cond_destroy() into another PR we
can merge that now. For the rest of the PR we can discuss on the mailing
list etc.
- Sam: I agree.
### What is Mirage CI?
- https://github.com/ocurrent/mirage-ci
- Likely it has somewhere OCaml 4 hardcoded, and that needs to be changed
### OCaml 5 used on mirageos.org
- Sam: The OCaml 5 unikernel uses much more memory
- Sam talked with the OCaml GC people - they need more tests
- Sam: Now running with different space_overhead parameters - from 120
(default) to 60
- Sam: Currently OCaml pre-allocates lots of pools, it may be sensible
to reduce the maximum size of the objects that pools are allocated for
-- for MirageOS unikernels with a low memory footprint
- Sam: On mirageos.org we have quite some memory available for the
unikernels, would be interesting to see how such a unikernel behaves if
it has not so much memory
- Hannes: you could tweak the deployment shell scripts to give the
unikernel less memory
- Hannes: is there an issue tracking this on the ocaml/ocaml repository?
- Sam: there have been discussions about frama-c and coq and their
memory usages with OCaml 5
### Performance
- Pierre didn't have time to test VirtIO further (and won't for the next
3 weeks)