[Barrelfish-users] Capabilities in Barrelfish

Timothy Roscoe troscoe at inf.ethz.ch
Tue Aug 4 11:39:51 CEST 2015


Dear Utsav,

[ CC'ing the Barrelfish-Users list, which is the appropriate place for
  this kind of discussion ]

It's not quite clear from your email what you are trying to achieve -
if your goal is to run Docker applications, this may be a challenge.
Docker applications are, essentially, written to the Linux ABI, and
Barrelfish by design provides a very different interface to the OS.
First off you'd need some kind of Linux compatibility layer (for
example, Graphene) ported to Barrelfish. 

If, instead, you want to provide the equivalent of a container
abstraction on top of Barrelfish, then the capability system is a good
place to start, since all memory-based resources in Barrelfish are
referred to by capabilities (or should be).  First, you need to
understand what capabilities are and how they are used in general (I
can recommend Hank Levy's book), and also how the Barrelfish
capability system works (our research papers talk about some of this,
and there's a nice research paper on the SeL4 cap system which was the
inspiration for the one in Barrelfish). 

The Barrelfish memory system is based on exposing both physical
resources and virtual memory mappings directly to application
runtimes, rather than hiding them behind a kernel abstraction like
Linux does.  This is a rather different tradeoff - to migrate a domain
you would need to rebuild the page table mappings yourself, and this
would involve a certain amount of capability (pointer) swizzling at
the far end.

The good news is that the capability system makes it straightforward
to virtualize the namespace of the process, and Barrelfish's
RBED-based per-core scheduler provides good performance isolation.

As for running Barrelfish in some cloud system, I don't know if anyone
has ever booted Barrelfish on some IaaS service, but we have run
Barrelfish in the past under HyperV and KVM, so it might be possible.
The biggest problems are likely to be drivers support for virtual
devices (for example, the Barrelfish Tulip driver used for HyperV has
not been maintained in a long time) and debugging.  

This sounds like a large and complex project, even without providing
the rich management framework and functionality that Docker provides. 

 -- Mothy

At Sun, 2 Aug 2015 13:47:58 -0700, Utsav Popli <utsav2601 at gmail.com> wrote:
> Hello Timothy,
> My name is Utsav Popli, a graduate student at San jose state university. I
> am working on my master's project and as per my project I need to create a
> 'Docker' like framework for Barrelfish.  In which a process can run in an
> isolated container and the container can be migrated onto cloud. I was
> going through your ppt on Capabilities and somehow I think that's what what
> we have been looking for. But because of no guidance and proper resources I
> am finding it very hard even to start.
> I will be really pleased if you will be able to guide/mentor us for our
> project.
> Thanking you
> 
> Regards
> Utsav Popli
> +13096600501
> 



More information about the Barrelfish-users mailing list