# Xen Hypervisor

*2002-01-01 — project*


I was on the original team at Cambridge that built the Xen hypervisor in 2002
\-- the first open-source "type-1" hypervisor that ushered in the age of cloud
computing and virtual machines.  Xen emerged from the Xenoservers project at
the CL SRG, where I started my PhD and hacked on the emerging codebase and
subsequently worked on the development of the commercial distribution of
XenServer.


Back at the turn of the century, the Computer Lab SRG faculty at the time
(led by my first PhD supervisor Ian Pratt) decided to start the
[XenoServers](https://www.cl.cam.ac.uk/techreports/UCAM-CL-TR-552.pdf) project,
which would build a public infrastructure for wide-area distributed computing.
An [EPSRC grant](https://gow.epsrc.ukri.org/NGBOViewGrant.aspx?GrantRef=GR/S01894/01) lead
to a number of graduate students all surging into the SRG in around 2002 to
work on the project, including me.

The later history of Xen is chronicled [on the original Xen
website](http://www-archive.xenproject.org/community/xenhistory.html), but the
early days were a heady mixture of furious hacking to put the various
prototypes together. I did a very early port of NetBSD to the PV interface,
before the introduction of linear page table checking into the hypervisor
defeated my port and Christian Limpach took it over.  That early work was
recorded in the [Xen 2002](https://anil.recoil.org/papers/xen02) technical report. My involvement for a while after was
limited, as I also interned with Sandy Fraser in Princeton and set up the [Ubiquitous Interaction Devices](https://anil.recoil.org/projects/ubiqinteraction)
project with Intel Research.

It was after the open source release of Xen 1.0 and the submission of my PhD
thesis that I joined XenSource as an early engineer and began release managing
the first commercial distribution of Xen, known as XenServer.  This involved
building an entire embedded "appliance" that hid the underlying complexities of
managing virtual machines. To add to the fun, we also built an entire
management toolstack in OCaml, making it one of the largest commercial uses
of functional programming back then.  Our experiences with building
this are published in [Using functional programming within an industrial product group: perspectives and perceptions](https://anil.recoil.org/papers/2010-icfp-xen), and the XenServer management stack is still
going strong as an [open source project](https://github.com/xapi-project/xen-api).

The nitty-gritty of XenServer engineering has never been captured in an academic
paper, but I wrote a few blog posts (on the now-defunct Citrix blog) that are
mirrored here:
- [Installing Ubuntu on XenServer](https://anil.recoil.org/notes/installing-ubuntu-on-xenserver) covers how the then-nascent Linux distribution could be virtualised.
- [Shedding light on XenApp on XenServer performance tuning](https://anil.recoil.org/notes/shedding-some-light-on-xenapp-on-xenserver-performance-tuning) discusses some performance profiling issues with XenServer after the Citrix acquisition of XenSource.
- [Peeking under the hood of High Availability](https://anil.recoil.org/notes/peeking-under-the-hood-of-high-availability) illustrates the extremely cool high-availability feature we built into XenServer 5.0, using some fairly complex OCaml hacking under the hood of the management stack.

Once I returned to academia full-time in 2010, much of my later work also improved
the Xen toolstack.  I laid out the early vision for multiscale computing in [Multiscale not multicore: efficient heterogeneous cloud computing](https://anil.recoil.org/papers/2010-bcs-visions)
and subsequently a prototype from the [Unikernels](https://anil.recoil.org/projects/unikernels) project in [Turning Down the LAMP: Software Specialisation for the Cloud](https://anil.recoil.org/papers/2010-hotcloud-lamp).
As Xen got itself an ARM port a few years
later, my work on [Jitsu: Just-In-Time Summoning of Unikernels](https://anil.recoil.org/papers/2015-nsdi-jitsu) also fed back to Xen development by highlighting potential efficiencies in the toolstack.
I also investigated whether FPGAs would make sense in cloud environments in [Reconfigurable Data Processing for Clouds](https://anil.recoil.org/papers/2011-fccm-cloudfpga).

In 2021, I largely use Solo5 and KVM as my main hacking and production
hypervisor, but I plan to revisit Xen at some point as I begin looking
at RISC-V architectures and embedded systems again as part of [Interspatial OS](https://anil.recoil.org/projects/osmose).
Period: 2002–2009

## Related

- [AoAH Day 23: Unpac unifies git branching with package management](https://anil.recoil.org/notes/aoah-2025-23) (note, 2025-12-23)
- [About](https://anil.recoil.org/notes/index) (note, 2025-02-15)
- [Programming FPGAs using OCaml](https://anil.recoil.org/notes/fpgas-hardcaml) (note, 2025-02-07)
- [Interspatial OS](https://anil.recoil.org/projects/osmose) (project, 2018-01-01)
- [Jitsu: Just-In-Time Summoning of Unikernels](https://anil.recoil.org/papers/2015-nsdi-jitsu) (paper, 2015-05-01)
- [Reconfigurable Data Processing for Clouds](https://anil.recoil.org/papers/2011-fccm-cloudfpga) (paper, 2011-05-01)
- [Building the Xen toolstack using OCaml](https://anil.recoil.org/videos/43ab3ae0-9ffc-474f-aa02-3cc1139f54d1) (video, 2010-11-05)
- [Using functional programming within an industrial product group: perspectives and perceptions](https://anil.recoil.org/papers/2010-icfp-xen) (paper, 2010-09-01)
- [Turning Down the LAMP: Software Specialisation for the Cloud](https://anil.recoil.org/papers/2010-hotcloud-lamp) (paper, 2010-06-01)
- [Multiscale not multicore: efficient heterogeneous cloud computing](https://anil.recoil.org/papers/2010-bcs-visions) (paper, 2010-04-01)
- [Unikernels](https://anil.recoil.org/projects/unikernels) (project, 2010-01-01)
- [Personal Containers](https://anil.recoil.org/projects/perscon) (project, 2009-01-01)
- [Peeking under the hood of High Availability](https://anil.recoil.org/notes/peeking-under-the-hood-of-high-availability) (note, 2008-09-17)
- [Shedding light on XenApp on XenServer performance tuning](https://anil.recoil.org/notes/shedding-some-light-on-xenapp-on-xenserver-performance-tuning) (note, 2008-08-04)
- [Installing Ubuntu on XenServer](https://anil.recoil.org/notes/installing-ubuntu-on-xenserver) (note, 2008-07-02)
- [Xen 2002](https://anil.recoil.org/notes/xen02-1) (note, 2003-01-04)
- [Functional Internet Services](https://anil.recoil.org/projects/melange) (project, 2003-01-01)
- [Ubiquitous Interaction Devices](https://anil.recoil.org/projects/ubiqinteraction) (project, 2003-01-01)
- [Xen 2002](https://anil.recoil.org/papers/xen02) (paper, 2003-01-01)
- [Started PhD at Cambridge](https://anil.recoil.org/notes/starting-phd) (note, 2002-09-01)

---
Canonical: https://anil.recoil.org/projects/xen
Type: project
Tags: xen, systems, cloud, distributed, opensource, security
