User Mode Linux: Coming to a Kernel Near You, Part 1
Practical Uses and Issues

Dee-Ann LeBlanc
Wednesday, March 12, 2003 11:51:10 AM
There are quite a number of uses for a feature such as UML. People like
myself who install a lot of beta software or even just evaluate a lot of
software can end up with a real mess on our hands, for example. I tend
to use a second machine but it's much slower than my primary, and my
setup requires me to bounce back and forth between computers using a
switchbox so I can't see everything at once. UML would allow me to lock
the beta software and whatnot into a virtual system on my main computer,
ensuring that beta bugs only messed up the UML session and not my entire
work machine.
Then there's the issue of services we don't quite trust, or don't dare
trust. Worried that someone might break out of the FTP server space? Run
your FTP server from within a UML, and even if the person does they
can't reach the main machine. Worried about all of those BIND security
warnings? Farm the nameserver onto a UML too.
Of course, there is a performance hit for using UML. You've got a
virtual kernel for each UML instance, plus your main kernel, the
programs running in your UMLs, and the programs running on your main
machine. RAM is your friend when you're using UML. But, then, RAM is
just as important with a tool like VMware.
The performance drag is most apparent when you're running many UML
instances. Rather than running a co-location service, there are already
people in the UML community running multi-UML services where each client
or participant gets their own virtual machine on the same box, with
their own root login and so on, to administer as they see fit. As people
run more and more services in their UMLs, the whole machine's load
increases, and so you can end up with one person hogging many of the CPU
cycles if you're not careful.
To avoid this, you can specify how much RAM each UML is allowed to ask
for. You set this value individually so you're not required to give
every UML the same amount of RAM, so those services that you consider
high priority can receive a larger allocation than the low priority
ones. Fortunately, while you'll want to do the math to ensure that
you've got enough RAM to suit everyone's needs, if all of your UMLs
together ask for more RAM than is actually available, the main machine's
kernel swaps out those requests just like any other RAM over usage. You
can also assign swap space to the UMLs for their own use.
Next: Trying Out UML Right Now »