Xen Hypervisor

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 project, which would build a public infrastructure for wide-area distributed computing. An EPSRC grant 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, 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 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 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, and the XenServer management stack is still going strong as an open source project.

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:

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 and subsequently a prototype from the Unikernels project in Turning Down the LAMP: Software Specialisation for the Cloud. As Xen got itself an ARM port a few years later, my work on Jitsu: Just-In-Time Summoning of Unikernels 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.

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.

Activity

Introducing unpac, a tool that unifies git and package management into a single workflow where all code dependencies live in one repository as trackable branches.
AboutFeb 2025
Professor Anil Madhavapeddy's research combines computer science and conservation at the University of Cambridge
Learn FPGA programming with OCaml using HardCaml.
Anil Madhavapeddy, Thomas Leonard et al. — 12th USENIX Symposium on Networked Systems Design and Implementation (NSDI 15)
Anil Madhavapeddy, Satnam Singh — 2011 IEEE 19th Annual International Symposium on Field-Programmable Custom Computing Machines
Our experiences with Xen toolstack in OCaml at ICFP 2010
Dave Scott, Richard Sharp et al. — Proceedings of the 15th ACM SIGPLAN international conference on Functional programming
Anil Madhavapeddy, Richard Mortier et al. — 2nd USENIX Workshop on Hot Topics in Cloud Computing (HotCloud 10)
Anil Madhavapeddy, Richard Mortier et al. — Proceedings of the 2010 ACM-BCS Visions of Computer Science Conference
UnikernelsJan 2010
Learn how XenServer's High Availability feature works, including host failure detection and automatic VM restarts.
Optimize XenApp performance on XenServer with expert tuning tips.
This guide provides step-by-step instructions for installing Ubuntu as a paravirtualized (PV) guest on Citrix XenServer 4.1, including configuring the grub boot loader, installing XenServer tools, and setting up VNC for graphical console access.
Xen 2002Jan 2003
First technical report on Xen hypervisor with contributions to early NetBSD port.
Xen 2002Jan 2003
Paul R. Barham, Boris Dragovic et al.
Started PhD in Systems Research at Cambridge University, focusing on Xen hypervisor.