- The Emergence of Web Applications
- Basic Definitions
- The Nature of the Web and Its Challenges
- Performance and Scalability
- Performance
- Scalability
- The Internet Medium
- Wide Audience
- Interactive
- Dynamic
- Always On
- Integrated
- Lack of Complete Control
- Measuring Performance and Scalability
- Measuring Performance
- Beyond Benchmarking
- Measuring Scalability
- Throughput and Price/Performance
- Scalability and Performance Hints
- Think End-to-End
- Scalability Doesn't Equal Performance
- Summary
Beyond Benchmarking
In addition to benchmarking, there are other types of performance measurements that are well-suited to certain classes of problems. For example, suppose your Web applications are very CPU bound. To improve performance, you can add multiple processors to your system or process the problem over a cluster of workstations. Both approaches assume that it is possible to either automatically parallelize your computations or leverage explicit parallelization (i.e., thread use) and allocate parallel blocks of instructions to different CPUs/workstations. Whichever solution you choose, you will need to measure its net effect. If you don't, then you're shooting in the dark.
When trying to assess improvement in pure computational performance, we can measure the speedup associated with that computation. Speedup is generally defined as:
Speedup = Told/Tnew
where Told is the execution time under the previous computational scenario and Tnew is the execution time under the new scenario.
The term scenario is general because there are two general ways to investigate speedup: at the software level and at the hardware level. At the software level, this means changing the program code: If a program takes 10 seconds to run with the old code and 5 seconds to run with the new code, the speedup is obviously 2. At the hardware level, this means adding processors or cluster nodes. Correspondingly, for multiprocessor or cluster-based systems, the speedup metric is commonly redefined as:
Speedup = T1/Tp
where T1 is the execution time with one processor and Tp is the execution time when the program is run on p processors.
Ideally, speedup increases linearly, as processors are added to a system. In reality, however, this is never the case. All sorts of issuesprocessor-to-processor communication cost, program data hazards, and the likecontribute to an overall overhead of computing something on p processors instead of one.