Other Aspects of Performance Management

Problem ManagementLeaking pipe

Service Level ManagementAngry user

Performance EngineeringSpeedometer

Queuing Theory?People waiting in line

If you want to be a performance expert, then you need to know some queuing theory. This can certainly turn off a lot of people. Luckily, you don't have to be a theoretical mathematician to understand the basics.




Capacity Management

Big fish in a small bowlIn his classic book on software engineering, The Mythical Man-Month, Fred Brooks titled Chapter 9 Ten Pounds in a Five-Pound Sack. We've always considered this a very fitting image of the problem capacity planning is meant to solve.

The load on a computer system grows over time. But a given hardware and software configuration has a finite limit on the load it can handle with a specific service level. If you consider the computer a container, like a fish bowl or sack, and the load on the system the size of the stuff in the container, you can see how we can run into a problem.

A Simple Process

The capacity planning process is not very complicated, and not limited to computer systems. If you are a manufacturing company, for example, you need to plan production capacity to meet increasing (or possibly decreasing) customer demand. For any type of capacity planning problem, you need to estimate the amount of future capacity you need at a certain time, and then determine how to provide the required capacity.

In Practice, More Difficult Than It Seems

For computer systems, how do you measure capacity? How do you determine the capacity of a given hardware/software configuration? How do you forecast future capacity needs? These are all difficult questions.

The solution usually used is based on queuing theory models. These models can be created by measuring your running systems. The parameters for these models include transaction rates for on-line work, and the number of simultaneous jobs running for batch work. They can be used to predict performance levels given changes in load. To determine the maximum capacity of you system, just increase the load in the model until your service level is exceeded.


If you can forecast the rate that the load on your system is growing, you can determine when you will run out of capacity. This is a big "if." How do you forecast future load? Luckily, there are many ways to do this, if you have the data to support it. There are two main problems sites have with forecasting future load: 1) they don't have any data to use, or they have the wrong data, and 2) they lack expertise is statistical forecasting.

Increasing Capacity

With a forecast for load, models of your system can be used to determine the most cost-effective way to increase you system's capacity. Should you add another server, or upgrade to a faster server? Should you use faster disks, or maybe more disks? Do you need to increase bandwidth? Queuing theory models can answer these questions.

System Optimization

Sometimes you can increase capacity without having to upgrade hardware. Optimizing programs to use fewer resources increases the capacity of your system. Optimizing programs, however, can be expensive. And many programs can't be optimized by very much. The trick is finding those programs that consume large amounts of resources and determining if their resource usage can be significantly lowered. Sometimes global optimizations of system or database parameters or structures can provide major increases in capacity.