Hey,

please find below the notes from our last meeting. The next meeting is on Monday Dec 9th, 10:00-12:00 CET

Best,

Hannes

## Meeting Nov 25th 10:00 - 12:00 CET

- Participants: Sam, Reynir, Hannes, Pierre

### OCaml 5
- https://github.com/mirage/ocaml-solo5/pull/134
- Sam continued and rebased that PR
- the strerror is actually used, it was marked as TODO (we need to implement it) - Virgile restarted last week the measures on the Mirage website, but we don't have access to the Grafana dashboard
- Hannes reviewed some bits and pieces of the ocaml-solo5 PR
- The ocaml-src package relies on an extra file, META, that has been moved to opam-source-archives - There could either be a "echo ... > META" or a META.in file for the ocaml-src package, hannes will take a look and propose PRs -- an empty META file may be sufficient
- TODO: rebase the patches on 5.2.1
- question: what about the LICENSE if we take values (and comments) from an existing project -- maybe we should copy the entire errno.h?

### unikraft
- there's something that works with networking (didn't look into block devices yet)

### Results from performance experiments
- Pierre did some benchmarks https://github.com/palainp/simple-fw/tree/no-cstruct
- running with solo5-spt as a Qubes guest

| Av. bandwitdh (Gbits/sec) | Ocaml 4.14.1 | Ocaml 5.2 | C relay |
|---------------------------|--------------------|-----------------|-------------|
| Cstruct as BA | 1.16 | 1.12 | 1.58 | | Cstruct as bytes | 1.42 | 1.41 | 1.58 |

- running with separate VMs (iperf client, bridge/firewall, iperf server) resulted in the C implementation being slower than the MirageOS ones
- TODO someone else reproducing the benchmarks on a separate infrastructure
- TODO optimize the C implementation (?)
- We can use a bridge interface (brctl) with both network interfaces (so we don't copy from kernel space to user space)
- TODO try with virtio
- Sam: maybe use sendfile? (that'd be an optimization for the C relay)
- To conclude, moving Cstruct from bigarray to bytes improves the performance - Hannes likes the simple-fw performance setup for the lower layers of the network stack, we can learn a lot: different backends, flambda2, trying out queueing (instead of one VMEXIT per packet send/recv) - The remaining blocker for cstruct-as-bytes is the xen backend which relies on non-moving page-aligned memory being passed around. We should continue to work on adapting that code (to use io-page) - Pierre also mentioned that we can look deeper into what allocations we can remove to improve the performance

Reply via email to