/ Research / Xen Hypervisor

Summary. 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 @ipratt -- 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 in 2022 as I begin looking at RISC-V architectures and embedded systems again as part of Interspatial OS.

Relevant Papers

[»] Regional clouds: technical considerations
Jatinder Singh, Jean Bacon, Jon Crowcroft, Anil Madhavapeddy, Thomas Pasquier, W. Kuan Hon and Christopher Millard
Technical report (UCAM-CL-TR-863) at University of Cambridge, Computer Laboratory, Nov 2014
PDF   URL   BibTeX   DOI  

[»] Using Dust Clouds to Enhance Anonymous Communication
Richard Mortier, Anil Madhavapeddy, Theodore Hong, Derek Murray and Malte Schwarzkopf
In security Protocols XVIII, Mar 2014
PDF   URL   BibTeX   DOI  

[»] Unikernels: library operating systems for the cloud
Anil Madhavapeddy, Richard Mortier, Charalampos Rotsos, Dave Scott, Balraj Singh, Thomas Gazagnaire, Steven Smith, Steven Hand and Jon Crowcroft
In proceedings of the eighteenth international conference on Architectural support for programming languages and operating systems, Mar 2013
PDF   URL   BibTeX   DOI   Video  

[»] Programming the Xen cloud using OCaml
Dave Scott, Richard Sharp and Anil Madhavapeddy
In the 1st ACM OCaml Users and Developers Workshop, Sep 2012
PDF   BibTeX   Video  

[»] Reconfigurable Data Processing for Clouds
Anil Madhavapeddy and Satnam Singh
In 2011 IEEE 19th Annual International Symposium on Field-Programmable Custom Computing Machines, May 2011
PDF   URL   BibTeX   DOI  

[»] Using functional programming within an industrial product group: perspectives and perceptions
Dave Scott, Richard Sharp, Thomas Gazagnaire and Anil Madhavapeddy
In proceedings of the 15th ACM SIGPLAN international conference on Functional programming, Sep 2010
PDF   URL   BibTeX   DOI   Video  

[»] Turning Down the LAMP: Software Specialisation for the Cloud
Anil Madhavapeddy, Richard Mortier, Ripduman Sohan, Thomas Gazagnaire, Steven Hand, Tim Deegan, Derek McAuley and Jon Crowcroft
In 2nd USENIX Workshop on Hot Topics in Cloud Computing (HotCloud 10), Jun 2010
PDF   URL   BibTeX   Video  

[»] Multiscale not multicore: efficient heterogeneous cloud computing
Anil Madhavapeddy, Richard Mortier, Jon Crowcroft and Steven Hand
In proceedings of the 2010 ACM-BCS Visions of Computer Science Conference, Apr 2010
PDF   URL   BibTeX  

[»] Xen 2002
Paul R. Barham, Boris Dragovic, Keir A. Fraser, Steven Hand, Tim Harris, Alex Ho, Evangelos Kotsovinos, Anil Madhavapeddy, Rolf Neugebauer, Ian Pratt and Andrew Warfield
Technical report (UCAM-CL-TR-553) at University of Cambridge, Computer Laboratory, Jan 2003
URL   BibTeX   DOI  

Relevant Talks


Building the Xen toolstack using OCaml on 5th Nov 2010. Our experiences with Xen toolstack in OCaml at ICFP 2010. Read more in Using functional programming within an industrial product group: perspectives and perceptions. Part of the Xen Hypervisor project.

News Updates

Nov 2014. «» Report on regional cloud computing law available.
Mar 2014. «» Paper on building dust clouds for anonymous communication.
Mar 2013. «» The first paper on unikernels is pubished at ASPLOS 2013.
Sep 2012. «» Paper on programming the Xen cloud using OCaml at the OCaml Workshop.
May 2011. «» Paper on what a Xen+FPGA cloud would look like at FCCM.
Nov 2010. «» Talk on building the Xen toolstack using OCaml.
Sep 2010. «» Paper on our experiences with writing the Xen control stack in OCaml at ICFP 2010.
Jun 2010. «» Workshop paper on the early MirageOS architecture and evaluation at HotCloud 2010.
Apr 2010. «» Paper on our vision for multiscale programming at the BCS Visions 2010 conference.
Sep 2008. «» Blogged at Citrix about how XenServer high availability works.
Aug 2008. «» Blogged at Citrix about tuning XenServer for better client VDI performance using XenApp available.
Jul 2008. «» Blogged at Citrix about how to install Ubuntu on XenServer as a PV guest.
Jan 2003. «» The first technical report on the Xen hypervisor.