Crafting Unikernels

Since we mentioned it in our last team meeting, it would be interesting to start a discussion on what kind of unikernels we should focus on building.

Next post is a wiki so we can list the ideas for candidate unikernels and start defining how services can be split.

This topic should also serve to experiment with performance and resource usage so we can compare message passing between unikernels vs. unix sockets or processes on a single machine. There’s no deadline yet for this research but feel free to chime in and invite knowledgeable people, e.g., from the MirageOS team.


This is a wiki to gather unikernel ideas, design, constraints, and consolidate the discussion over specific and concrete use-cases.

Configuring Mirage for SHRUTHI:

mirage configure -t virtio

Should we deploy a MirageOS machine to play with?

@tg-x @arie @misterfish

What are the required and suggested relationships between the components?

  • eg. “does dromedar require the message router unikernel to exist?”

Has there been any further discussion on how to bundle/split the components into respective unikernels?

This is useful information for me while completing D1.3. (Then we can submit for next chunk of payment)

the message router is required to talk to other local components and to remote nodes
dromedar needs the message router and pub/sub components

This is something we can fine tune over time, as we use message passing both in-process among internal components and among external components over the network.

an initial suggestion for the components:

  • message router
  • upsycle components
  • dromedar

the upsycle part consists of several services (peer sampling, clustering, per-topic dissemination), i would bundle these together initially then see if/how it makes sense to split them up