annotate README @ 771:f6f2a326ccaa

bitkeeper revision 1.468 (3f776bd43_wFRTwYlSu5A4qtJST5zw)

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