Other Aspects of Performance Management

Problem ManagementLeaking pipe

Service Level ManagementAngry computer user

Capacity ManagementFish in small bowl










Performance Engineering

If you're a programmer, you should know about performance engineering. Unfortunately, most programmers don't learn this discipline, for many reasons. There was even a time when programmers were told to ignore performance until the software was finished.

In the Beginning

In the early days of computers, programmers had to worry about performance and resource usage, particularly memory. In the pre-virtual memory days and only 8 or 16k bytes of memory, you had to make sure your program would fit.

Structured Programming and Design

As hardware and system software progressed, the physical resource constraints on development were lowered. At the same time organizations were seeing that much of their costs were associated with maintaining code that was already written. An emphasis was placed on producing easily maintainable code. A common "excuse" for obscure and difficult to maintain code was performance, so many programming gurus suggested that performance issues be ignored during the design and development process.

Reality Again

More recently there has been a trend back to considering performance questions throughout the development process. Designs that do not consider performance often do not scale to multiple servers or multiple processors.

Caliper resting on a drawingA Sensible Approach

Performance considerations can be included in the development process without causing maintenance problems. And they should be. Requirements should contain service levels, and designers should make sure the system can meet those levels. How do you do that?

Software performance engineering is a process for ensuring that software will meet its service levels. The first book we know of that describes the basic process, Micro-Analysis of Computer System Performance by Boris Beizer, was written back in 1978.

Performance engineering overlaps capacity planning in many ways. In capacity planning, a queuing theory model is created based on measuring the current system. In software performance engineering, a queuing theory model is created based on the evolving design of the software. This allows the models to be run to determine performance on different hardware configurations.

Program Optimization

Many of the concepts of software performance engineering can be applied to optimizing existing code. These techniques are particularly useful for determining the performance implications of coding changes before actually making the changes.