Several examples are presented in previous chapters to predict performance when changes occur in an existing system, either with respect to its workload or with respect to its hardware/software platform. Performance engineering involves building performance models for existing workloads and predicting the effects of possible upgrades. Measurements taken on existing workloads are used to obtain the service demands required by performance models, as indicated in Fig. 9.1.
Figure 9.1. Capacity planning for existing workloads.
However, in many performance engineering situations, one is confronted with the problem of predicting the performance of future new applications. Two types of new applications are considered here:
Typically, the role of performance is seen as being of secondary importance in the development of new applications . To their detriment, most applications are designed, implemented, and installed without prior or proper performance considerations. All too often, the pressure to release a new product as soon as possible takes precedence over a higher quality, better performing product. "We'll fix the performance problems in the next release" is the PWPF (i.e., penny-wise, pound-foolish) policy. Incorporating performance throughout the design of a new product is both financially beneficial and professionally responsible. As seen throughout this text, performance depends critically upon the particular combination of logical requirements, physical design, and the operating environment. The consequence of this neglect is that many applications are abandoned soon after (and sometimes before!) implementation. Often, such applications require expensive software rewrites and/or an increase in the current system's capacity.
Correct functionality of an application should not be its only requirement. New applications should also be required to meet certain specified performance service levels. Analysts and designers should be concerned with the performance requirements of new systems from the beginning stages of the early design. This requires being able to construct useful performance models from a relatively high level logical description of an application and a relatively high level description of a target architecture. This is called application sizing (AS).
Figure 9.2 depicts the role of application sizing in a typical performance engineering study. If a new application is to augment existing applications, a performance model can provide a performance assessment of the new application as well as an estimate of the impact (i.e., the environmental impact) on already existing applications. Therefore, the inputs to the performance model include the estimated service demands for the new application and the measured service demands for the existing applications.
Figure 9.2. Application sizing for new workloads.
The process of constructing software systems that meet performance objectives is called software performance engineering (SPE). This term is credited to Connie Smith in her seminal paper published in 1981 . SPE is used to differentiate those designs that are likely to yield satisfactory performance from those that are likely to suffer serious performance problems. SPE is used to discard those designs that are likely to exhibit unacceptable performance. Such identifications are required before significant time is spent on the applications' development. This chapter illustrates how performance models are used in the SPE process. The presentation is motivated by the design of a new help desk application. The data and models used in the chapter can be found in the Ch09-Data.XLS, Ch09-Data-Mod.XLS, Ch09-OpenQN.XLS, and Ch09-OpenQN.XLS MS Excel workbooks.