Evaluating Performance
Performance Overview 1-7
Setting Performance Targets
Whether you are designing or maintaining a system, you should set specific
performance goals so that you know how and what to optimize. If you alter
parameters without a specific goal in mind, you can waste time tuning your system
without significant gain.
An example of a specific performance goal is an order entry response time under
three seconds. If the application does not meet that goal, identify the cause (for
example, I/O contention), and take corrective action. During development, test the
application to determine if it meets the designed performance goals.
Tuning usually involves a series of trade-offs. Once you have determined the
bottlenecks, you may have to modify performance in some other areas to achieve
the desired results. For example, if I/O is a problem, you may need to purchase
more memory or more disks. If a purchase is not possible, you may have to limit the
concurrency of the system to achieve the desired performance. However, if you
have clearly defined goals for performance, the decision on what to trade for higher
performance is simpler because you have identified the most important areas.
Setting User Expectations
Application developers, database administrators, and system administrators must
be careful to set appropriate performance expectations for users. When the system
carries out a particularly complicated operation, response time may be slower than
when it is performing a simple operation. Users should be made aware of which
operations might take longer.
Evaluating Performance
With clearly defined performance goals, you can readily determine when
performance tuning has been successful. Success depends on the functional
objectives you have established with the user community, your ability to measure
whether or not the criteria are being met, and your ability to take corrective action
to overcome any exceptions.
Ongoing performance monitoring enables you to maintain a well tuned system.
Keeping a history of the application’s performance over time enables you to make
useful comparisons. With data about actual resource consumption for a range of
loads, you can conduct objective scalability studies and from these predict the
resource requirements for anticipated load volumes.