Performance Modeling for the Masses

Dr. Dobb's Journal April 2002

By Stathis Papaefstathiou

Stathis is a researcher for Microsoft Research and can be contacted at efp@microsoft.com.


Performance Solutions: A Practical Guide to Creating Responsive, Scalable Software
Connie U. Smith and Lloyd G. Williams
Addison-Wesley, 2001
510 pp., $49.99
ISBN 0-201-72229-1

You are responsible for the design of a new Internet service architecture. It will be great! Thousands of users will experience a great new interface with better flexibility and ease of use, and most importantly fast response times. However, how do you know that your software architecture will scale during the holiday season, when the user load is expected to increase? No problem. You'll just spend several million dollars to develop the software, and then if it doesn't work, you will fix it. Does this sound familiar? Many of us have made this mistake and sometimes the results are catastrophic. Fundamental errors in the design of the architecture can lead to software that doesn't meet its performance requirements. These errors are very difficult to resolve and the cost of fixing them includes not only software-development costs but also the cost of the disruption in the company's operations.

Performance Solutions: A Practical Guide to Creating Responsive, Scalable Software by C.U. Smith and L.G. Williams addresses this problem. The book presents Software Performance Engineering (SPE), a complete quantitative approach for developing software that meets its performance objectives. SPE is a technology that promotes proactive performance management rather than the "let's build it and see" approach. SPE is a mature technology; many performance conferences include SPE sessions and a large number of SPE success stories have emerged from the industry. However, we still haven't seen a wider acceptance of this technology. In my view, there are two reasons for this: Until now, there was no accessible description of the technology, and there is limited tool support for SPE. This book addresses the former issue only.

Performance Solutions is in many ways different from the typical performance modeling books that are currently available on bookstore shelves. It is not a dry description of techniques for characterizing workloads and predicting performance, but instead describes the process of incorporating performance engineering into the software-development cycle. The modeling techniques included in the book are accessible to a wider community, rather than the hard-core modeling expert. The book is well organized and aims to address a wide audience including developers, managers, performance engineers, and students. However, let me make clear that Performance Solutions by no means trivializes the modeling process. You will still need a performance expert in your organization to apply SPE.

The book includes a detailed description of the steps of the SPE process and how it can be integrated in traditional development models such as the waterfall model, the spiral model, and the unified process model. In the early design stages, the SPE process requires the development of performance models. Special emphasis is given to detailed representation of software architecture. This is achieved with the use of Software Execution Graphs (SEG), which represent the performance characteristics of the software workflow and their associated resource requirements (CPU, I/O, communications operations, and so on). One chapter in the book describes how we can estimate resource usage profiles before we have developed the software. The software model is complemented with a system model that aims to represent the hardware and predict delays that occur from its concurrent use (resource contention, for instance). The book also includes instructions for using UML- design diagrams for assessing the performance of the architecture.

One of the most interesting parts of Performance Solutions presents generic advice for the creation of efficient designs and software — the performance principles, patterns, and antipatterns. Experience has shown that some types of designs always generate poor performance. The principles give a road map for the creation of efficient designs. Both patterns and antipatterns have been widely used in software engineering; here, they are applied in the context of performance.

The SPE process doesn't end at the design stage. The book offers guidance in the use of monitoring and instrumentation and how it can be employed to refine models developed in the design stage. These models can be utilized in postdevelopment stages for capacity planning.

Throughout Performance Solutions there are many practical examples taken from interesting test cases and applications. Two chapters are dedicated to case studies of a web project and an embedded real-time application. The authors' experience as performance consultants in real industry projects is evident.

Performance Solutions is a departure from the traditional performance modeling book targeted at a few modeling experts. The book is well written and is aimed at everyone involved in the process of creating responsive software.

DDJ