annotate README @ 1061:9ccd60698e09

bitkeeper revision 1.700 (401d7e17TsVIdmq0QNgdFLXJHFN1kg)

transfer new domain tools and readmes from the 1.2 tree
author iap10@labyrinth.cl.cam.ac.uk
date Sun Feb 01 22:30:47 2004 +0000 (2004-02-01)
parents 6ec887aa9d16
children 0c707d7680c9
rev   line source
iap10@706 1 #############################
iap10@1061 2 __ __ _ ____
iap10@1061 3 \ \/ /___ _ __ / | |___ \
iap10@1061 4 \ // _ \ '_ \ | | __) |
iap10@1061 5 / \ __/ | | | | |_ / __/
iap10@1061 6 /_/\_\___|_| |_| |_(_)_____|
iap10@1061 7
iap10@706 8 #############################
iap10@706 9
iap10@706 10 University of Cambridge Computer Laboratory
iap10@1061 11 30 Jan 2004
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@1061 18 "Xen" is a Virtual Machine Monitor (VMM) originally developed by the
iap10@1061 19 Systems Research Group of the University of Cambridge Computer
iap10@1061 20 Laboratory, as 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@1061 57 We have worked 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@1061 68 NetBSD has been ported to Xen by Christian Limpach, and will hopefully
iap10@1061 69 soon become part of the standard release. Work on a FreeBSD port has
iap10@1061 70 been started by Kip Macy, and we hope to see this complete for the 1.3
iap10@1061 71 release.
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@1061 137 The public master BK repository for the 1.2 release lives at:
iap10@1061 138 bk://xen.bkbits.net/xeno-1.2.bk
iap10@747 139
iap10@771 140 To fetch a local copy, install the BitKeeper tools, then run:
iap10@1061 141 'bk clone bk://xen.bkbits.net/xeno-1.2.bk'
iap10@771 142
iap10@771 143 To see how to build Xen, Xenolinux, and all the control tools, inspect
iap10@1061 144 the tools/misc/xen-clone script in the BK repository (also available
iap10@1061 145 via http://www.cl.cam.ac.uk/netos/xen/readmes/xen-clone). This script
iap10@1061 146 can be used to clone the repository and perform a full build.
iap10@771 147
iap10@771 148 The build procedure for xenolinux is slightly complicated as its done
iap10@771 149 by running the 'mkbuildtree' script over a pristine Linux tree to turn
iap10@771 150 it into a xenolinux tree by adding the 'xeno' architecture.
iap10@771 151
iap10@1061 152 There's also a recent pre-built source tree on the project downloads
iap10@1061 153 page: http://www.cl.cam.ac.uk/netos/xen/downloads/xeno-1.2.tar.gz
iap10@771 154
iap10@771 155
iap10@771 156 Using the domain control tools
iap10@771 157 ==============================
iap10@771 158
iap10@1061 159 README.CD contains some example invocations.
iap10@744 160
iap10@1061 161 See example Python scripts in tools/examples/ and the associated README.
iap10@1061 162
iap10@1061 163 Further documentation is in docs/ (e.g., docs/Xeno-HOWTO), and also in
iap10@1061 164
iap10@1061 165