Documentation and guides

Weekly Meeting: 2013-06-04

6th June 2013: EC2, shared ring performance and outreach

Attendees: Jonathan Ludlam, Vincent Bernardoff, Dave Scott, Anil Madhavapeddy, Amir Chaudhry, Mike McClurg


Excellent progress on Mirari from Vincent, who will have patches available soon for merging.

Anil: main last change we need to make is to stop Mirari from requiring OPAM switch. This is because it forces you to compile a new compiler (takes a long time) just to build a Xen kernel. Instead, we can use the OPAM constraint solver to do the selection of packages rather than environment variables.

All agreed (Thomas is on vacation but agreed this would work earlier on a cl-mirage mail thread). This should be the last breaking change in the build infrastructure before the release, so we'll aim to integrate by next week.

Testing and EC2 integration

Vincent: There is no automatic way to set up a free EC2 for Mirage with micro. You have to do it by hand each time you want to upload a kernel.

Anil: We also need reliable shutdown hooks for EC2, or risk spending lots of cash by mistake!

Balraj has been playing with performance to optimise the network stack. Some questions about perf and Xen: there doesn't appear to be a perf-xen mode although there is a perf-kvm mode. OCaml 4.1-trunk has really good CFI stubs that make using perf almost pleasant.

nil: Tom Ridge is just starting work on building a verified filesystem in OCaml, so we had a meeting about that with Thomas Gazagnaire last week. Very exciting work, as it should be easy to hook into Mirage.

Some discussion of the RPC mechanism for Vincent's testing infrastructure. Consensus is that instead of using Xenstore as an RPC mechanism, we should use an explicit libvchan communication channel instead. This would let us build command-line tools for vchan that make it easier to manipulate the kernel.

Balraj also raised the question of TCP and intended behaviour of the ring interface with fragmentation. His tests run very small packets (below TCP minimum size) and deadlock if the ring doesn't have enough free slots. Dave/Anil think that we need to lock the shared rings to queue up producers (so that we dont end up with out-of-order packets on the wire) and also provide a new function to request a reservation of multiple contiguous ring slots. Dave will look into this further.


Anil: Preparing for the release in July, we need to think about what blog posts people would be interested in.

Anil: A really good blog post for Dave would be how to build a userspace block device in pure OCaml that provides storage to VMs. For a memory device, we could pretty much build this from the OCaml toplevel in dom0.

Jon: I like the idea of getting people to do screen-casts.

Anil: Aim for one high quality blog post from everyone every two months. Should be able to get a post up every two weeks then. Every post should think about its target (level of Xen familiarity, etc). Lars from could advise on this.

Merging to trunk

Vincent: Can someone look at Unix back-end and code-review the shift to multiple processes for UNIX.

Anil: on the queue for this week, and will definitely have it merged by next week's meeting. This will very likely break trunk for a little while since I'll do the OPAM rearrangement at the same time.

SSL libraries

Anil: Now that ctypes is released, we should look at SSL alternative bindings again. Prashanth pointed out axTLS, which is a BSD licensed alternative to MatrixSSL and therefore worth looking into more (but it's API isn't quite as agnostic to sockets as MatrixSSL, sadly, but should still work fine as sockets can be nonblocking in the axTLS world).