The next step is to tune the host operating
system both for virtualization and concurrent database oriented
client workloads. It is really no different than tuning a
stand-alone database server except that the host is one step or
level of abstraction removed. You simply need to make sure that you
minimize any unnecessary overhead and, thus, maximize the overall
performance. The only difference is that CPU, memory and I/O
assumptions need to be made a lot more generically since the
hardware will be shared across hosted clients. So, optimally, all
your tuning efforts should apply relatively well across hosted
clients, therefore realizing the double-dipping and triple-dipping
effects mentioned earlier.
The chief new complexity is that you now may
have multiple databases using some shared resources (much like
historically hosting multiple databases on a single box), and thus,
need to account for that at some point in your tuning. But each
optimization step should occur in its own due time. Tune the virtual
server host first. Then tune each of the virtual machines clients
(see next chapter) as though you are still implementing single
database per server deployments (which technically speaking, could
occur at some point even in a virtual world). And finally, tune the
host operating system for side effects caused by sharing resources,
but do not start here or try to do it all in one pass.
Much like any scientific experiment or database
benchmarking, you should only change a single variable per test
iteration so that you can properly measure and accord your observed
results. I call this technique Incremental Tuning and suggest that
it is both the mandatory and only reliable way to correctly optimize
any computer system, especially a virtualized host running multiple
virtual clients.
Optimize by Subsystem
It is best to think of a virtual host server as
being composed of four basic subsystems, which should be the focus
of any OS tuning efforts:
Furthermore, all the above areas should be tuned
with the servers purpose in mind hosting multiple virtual
clients. The basic idea being that the overall performance can be no
better or worse than the sum of its parts. Additionally, all of the
above are possibly dynamic in the virtual world, so again making
more generic assumptions should generally lead to better aggregate
results. This is really nothing more than Incremental Tuning
applied at the first granular level of interest: the subsystems.
We will now look at doing just this for both
Linux and Windows (note that all these techniques would apply in
some fashion to other operating systems such as Sun Solaris, Hewlett
Packard's HP-UX or IBMs AIX). In all cases, it is assumed that
simply installing a clean basic host operating system is something
the user finds both comfortable and familiar. A summarization is
included at the end of the chapter as well for future quick
reference.
This is an excerpt from
Oracle on VMWare:
Expert tips for database virtualization
by Rampant TechPress.