view README @ 1018:80553bc5d3e8

bitkeeper revision 1.658 (3fe5ac16UXA85i7JkYQ0lVd6adEPDQ)

date Sun Dec 21 14:20:06 2003 +0000 (2003-12-21)
parents 6ec887aa9d16
children 9ccd60698e09
line source
1 #############################
2 __ __ _ ___
3 \ \/ /___ _ __ / | / _ \
4 \ // _ \ '_ \ | || | | |
5 / \ __/ | | | | || |_| |
6 /_/\_\___|_| |_| |_(_)___/
8 #############################
10 University of Cambridge Computer Laboratory
11 31 Aug 2003
15 About the Xen Virtual Machine Monitor
16 =====================================
18 "Xen" is a Virtual Machine Monitor (VMM) developed by the Systems
19 Research Group of the University of Cambridge Computer Laboratory, as
20 part of the UK-EPSRC funded XenoServers project.
22 The XenoServers project aims to provide a "public infrastructure for
23 global distributed computing", and Xen plays a key part in that,
24 allowing us to efficiently partition a single machine to enable
25 multiple independent clients to run their operating systems and
26 applications in an environment providing protection, resource
27 isolation and accounting. The project web page contains further
28 information along with pointers to papers and technical reports:
31 Xen has since grown into a project in its own right, enabling us to
32 investigate interesting research issues regarding the best techniques
33 for virtualizing resources such as the CPU, memory, disk and network.
34 The project has been bolstered by support from Intel Research
35 Cambridge, who are now working closely with us. We're also in receipt
36 of support from Microsoft Research Cambridge to port Windows XP to
37 run on Xen.
39 Xen enables multiple operating system images to execute concurrently
40 on the same hardware with very low performance overhead --- much lower
41 than commercial offerings for the same x86 platform.
43 This is achieved by requiring OSs to be specifically ported to run on
44 Xen, rather than allowing unmodified OS images to be used. Crucially,
45 only the OS needs to be changed -- all of the user-level application
46 binaries, libraries etc can run unmodified. Hence the modified OS
47 kernel can typically just be dropped into any existing OS distribution
48 or installation.
50 Xen currently runs on the x86 architecture, but could in principle be
51 ported to others. In fact, it would have been rather easier to write
52 Xen for pretty much any other architecture as x86 is particularly
53 tricky to handle. A good description of Xen's design, implementation
54 and performance is contained in our October 2003 SOSP paper, available
55 at
57 We have been working on porting 3 different operating systems to run
58 on Xen: Linux 2.4, Windows XP, and NetBSD.
60 The Linux 2.4 port (currently Linux 2.4.22) works very well -- we
61 regularly use it to host complex applications such as PostgreSQL,
62 Apache, BK servers etc. It runs every user-space applications we've
63 tried. We refer to our version of Linux ported to run on Xen as
64 "XenoLinux", although really it's just standard Linux ported to a new
65 virtual CPU architecture that we call xeno-x86 (abbreviated to just
66 "xeno").
68 Unfortunately, the NetBSD port has stalled due to lack of man
69 power. We believe most of the hard stuff has already been done, and
70 are hoping to get the ball rolling again soon. In hindsight, a FreeBSD
71 4 port might have been more useful to the community. Any volunteers? :-)
73 The Windows XP port is nearly finished. It's running user space
74 applications and is generally in pretty good shape thanks to some hard
75 work by the team over the summer. Of course, there are issues with
76 releasing this code to others. We should be able to release the
77 source and binaries to anyone that has signed the Microsoft academic
78 source license, which these days has very reasonable terms. We are in
79 discussions with Microsoft about the possibility of being able to make
80 binary releases to a larger user community. Obviously, there are
81 issues with product activation in this environment which need to be
82 thought through.
84 So, for the moment, you only get to run multiple copies of Linux on
85 Xen, but we hope this will change before too long. Even running
86 multiple copies of the same OS can be very useful, as it provides a
87 means of containing faults to one OS image, and also for providing
88 performance isolation between the various OS, enabling you to either
89 restrict, or reserve resources for, particular VM instances.
91 It's also useful for development -- each version of Linux can have
92 different patches applied, enabling different kernels to be tried
93 out. For example, the "vservers" patch used by PlanetLab applies
94 cleanly to our ported version of Linux.
96 We've successfully booted over 128 copies of Linux on the same machine
97 (a dual CPU hyperthreaded Xeon box) but we imagine that it would be
98 more normal to use some smaller number, perhaps 10-20.
101 Hardware support
102 ================
104 Xen is intended to be run on server-class machines, and the current
105 list of supported hardware very much reflects this, avoiding the need
106 for us to write drivers for "legacy" hardware. It is likely that some
107 desktop chipsets will fail to work properly with the default Xen
108 configuration: specifying 'noacpi' or 'ignorebiostables' when booting
109 Xen may help in these cases.
111 Xen requires a "P6" or newer processor (e.g. Pentium Pro, Celeron,
112 Pentium II, Pentium III, Pentium IV, Xeon, AMD Athlon, AMD Duron).
113 Multiprocessor machines are supported, and we also have basic support
114 for HyperThreading (SMT), although this remains a topic for ongoing
115 research. We're also looking at an AMD x86_64 port (though it should
116 run on Opterons in 32-bit mode just fine).
118 Xen can currently use up to 4GB of memory. It's possible for x86
119 machines to address more than that (64GB), but it requires using a
120 different page table format (3-level rather than 2-level) that we
121 currently don't support. Adding 3-level PAE support wouldn't be
122 difficult, but we'd also need to add support to all the guest
123 OSs. Volunteers welcome!
125 We currently support a relatively modern set of network cards: Intel
126 e1000, Broadcom BCM 57xx (tg3), 3COM 3c905 (3c59x). Adding support for
127 other NICs that support hardware DMA scatter/gather from half-word
128 aligned addresses is relatively straightforward, by porting the
129 equivalent Linux driver. Drivers for a number of other older cards
130 have recently been added [pcnet32, e100, tulip], but these are not
131 recommended since they require extra packet copies.
134 Building Xen and XenoLinux
135 ==========================
137 The public master BK repository for the 1.0 release lives at:
138 bk://
140 To fetch a local copy, install the BitKeeper tools, then run:
141 'bk clone bk://'
143 To see how to build Xen, Xenolinux, and all the control tools, inspect
144 the tools/misc/xen-clone script in the BK repository. This script can
145 be used to clone the repostitory and perform a full build.
147 The build procedure for xenolinux is slightly complicated as its done
148 by running the 'mkbuildtree' script over a pristine Linux tree to turn
149 it into a xenolinux tree by adding the 'xeno' architecture.
151 There's also a pre-built source tree on the project downloads page.
154 Using the domain control tools
155 ==============================
157 See example Python scripts in tools/examples/
159 Further documentation is in docs/ (e.g., docs/Xeno-HOWTO).