[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Next MirageOS meeting 2024-06-10


  • To: mirageos-devel@xxxxxxxxxxxxxxxxxxxx
  • From: Hannes Mehnert <hannes@xxxxxxxxxxx>
  • Date: Mon, 27 May 2024 12:57:19 +0200
  • Autocrypt: addr=hannes@xxxxxxxxxxx; keydata= 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
  • Delivery-date: Mon, 27 May 2024 10:57:35 +0000
  • List-id: Developer list for MirageOS <mirageos-devel.lists.xenproject.org>

Hello,

our next meeting is in two weeks, June 10th at 09:00 CEST (https://www.timeanddate.com/worldclock/fixedtime.html?msg=MirageOS+call&iso=20240610T07&ah=1)

As usual everyone is welcome to attend this bi-weekly meeting. The current agenda is here: https://pad.data.coop/wGS4r8RyTKqQ73mcw7FrwA

Feel free to add any additional items you'd like to discuss. The Jitsi link for the meeting is https://meet.jit.si/mirageos-call


The notes from today's meeting:
Participants: Pierre, Thomas G., Shakthi, Sabine, Hannes, Samuel

Agenda:
- mirage 4.5.0 and 4.5.1 released \o/
- the dune-variant approach for defunctorisation
- OCaml-solo5 goes OCaml 5.2
    - merge and add a branch for Ocaml 4.4?
- next meeting june 10th 09:00 CEST

Notes:
#### mirage 4.5
- Hannes: we have made a new release of Mirage!! Mirage 4.5 splits runtime and configuration time keys. 4.5.1 fixes a few bugs (and adds one breaking change). mirage-skeleton has been updated - all Hannes' unikernels as well. Mirage doesn't depend on mirage-runtime anymore. Summary: seems to work great!
- Pierre: qubes-mirage-firewall also uses mirage 4.5
- Thomas: 4.5 was released just before the retreat, so we had time to find some bugs in that

#### dune variants / defunctorisation
- Hannes: Lucas added dune variant in Dune when we released mirage4. The idea was to use this but we dropped the idea at the time. Investigated using dune variants instead of functors durung the retreat. The result: 4.5.1 now uses dune variant for mirage-bootvar (used to be 4 repositories! now just one that uses variants and works nicely). The code is much clearer: a single repo - easier to compare the various implementation for unix/xen/solo5. Bigger topic: could we generalise this to the entire network stack. Also for the time device. Hit a bug in Dune (https://github.com/ocaml/dune/issues/10460) - found a small repro case and reported to Dune. Rudi found a fix and Dune master is now fixed. How do we move forward now?
- mirage-time defunctorisation https://github.com/mirage/mirage/pull/1529
- Thomas: where to get rid of functors?
  - everywhere? at the application side, everything should be static
  - but when you write libraries, it is a bit unclear
  - also for testing
- if you look at the file system / block device stack, you may need some flexibility here
  - it is useful to get rid of functors where we can
- Thomas: if there's a way to keep functors when we develop the libraries, but the exposed interface is very simple (no functor) - Thomas: error messages -- if you're using Time, but forget the dependency, you get not so nice error messages
- Hannes:
    - Time/Clock/Random: no need for functor
    - mirage-net/ethernet/arp: no need for a functor
- Block: CCM/partioning; VPN: also provide a network stack - here having a functor makes sense - Thomas: we expose some internal complexity (what is functorised / what is not?) to the user - how to communicate to the user whether a device is functorised or not (put it on the extra_deps vs in the type (`@->`) and application (`$`)) - Hannes: maybe `extra_deps` is not the right thing -- since we want to depend only on `mirage-time` / `mirage-clock` with the target-specific implementation - Samuel: we can add a dependency on mirage-time / mirage-clock in all the unikernels - Thomas: for the RNG it is a bit more complex, since we need to call the `initialize` function - Samuel: maybe we could always link time and clock with the unikernel - everyone: good idea! - Hannes: let's wait for the Dune release with the fix about dune variants - and make progress on time/clock!
- Pierre: this is a good move, but the mirage-block-ccm should stay as is :D
- Thomas: the question is where do we want this flexibility? Look at POSIX
- Hannes: this is a great analogy - on UNIX systems we have tun/tap devices (for VPN etc.), and also block devices which support encryption -- so maybe at the device level it makes sense to have the abstraction

#### OCaml 5 + solo5
- https://github.com/mirage/ocaml-solo5/pull/134
- Samuel: the behaviour with the GC changed a lot in OCaml 5, someone has a good example to test a long-running unikernel? - Hannes: maybe the retreat website, where we graph the memory usage (and thus have a comparison between last months and with OCaml 5)
- Samuel: didn't manage to compile mirage-www yet, stuck in opam-monorepo
  - Thomas will look into that issue this week
- Pierre: will swap his qubes-firewall to OCaml 5 this week, last week saw ~10-20% performance improvement with OCaml 5 - OCaml 5.2 supports compaction now, but we've to manually call `Gc.compact ()` - Pierre: at the early OCaml 5 stages, each domain allocated 2MB stack - we set the maximum domains to 1 in ocaml-solo5
- Samuel: when ocaml-solo5 is built, it sets the number of domains to 1
- Pierre: solo5 already reserves 1MB for the global stack

#### MirageOS and Unikraft
- Samuel: there are small examples, currently quite a lot needs to be done manually - Samuel: the question is who drives the build, unikraft wants to have control, mirage as well - Samuel: we will need something like ocaml-unikraft (similar to ocaml-solo5), at the moment `musl` is used - Samuel: there's some basic support for SMP in unikraft, but not yet enough for OCaml (scheduling) - Samuel: from performance perspective, one thing that is interesting is the support of ring interfaces - Thomas: the build system changes, we should talk with unikraft so that they're aware of what we do (and if they change stuff, we get informed)



 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.