TWO OF THE GOALS OF CAPACITY PLANNING ARE TO EMPLOY THE RESOURCES YOU HAVE ON HAND IN THE most efficient manner, and to predict future needs based on the patterns of current use. For those well-defined workloads, you can get pretty close to utilizing most of the hardware resources for each class of server you have, such as databases, web servers, and storage devices. Unfortunately, web application workloads are rarely (if ever) perfectly aligned with the available hardware resources.
In those circumstances, you end up with inefficiencies in your capacity. For example, if you know your database’s specific ceiling (limit) is determined by its memory or disk usage, but meanwhile it uses very little CPU, then there’s no reason to buy servers with two quad-core CPUs. That resource (and investment) will simply be wasted unless you direct the server to work on other CPU-intensive tasks. Even buying a single CPU may be overkill. But often, that’s all that’s available, so you end up with idle resources.
It’s the continual need to balance correct resources to workload demand that makes capacity planning so important, and in recent years some technologies and approaches have emerged that render this balance easier to manage, with ever-finer granularity.
Server virtualization and cloud computing are two such approaches, and it’s worth exploring what they mean in the context of capacity planning.
There are many definitions of virtualization. ...