Complete the following exercises found in your text: 1.1, 1.6, 1.11 and 1.12Post your answers in a Word document. You must show all of your work for each problem.
1.6 Performance Assessing the performance of computers can be quite challenging. The scale and intricacy of modern software systems, together with the wide range of performance improvement techniques employed by hardware designers, have made performance assessment much more difficult. When trying to choose among different computers, performance is an important attribute. Accurately measuring and comparing different computers is critical to purchasers and therefore to designers. The people selling computers know this as well. Often, salespeople would like you to see their computer in the best possible light, whether or not this light accurately reflects the needs of the purchaser's application. Hence, understanding how best to measure performance and the limitations of performance measurements is important in selecting a computer. The rest of this section describes different ways in which performance can be determined; then, we describe the metrics for measuring performance from the viewpoint of both a computer user and a designer. We also look at how these metrics are related and present the classical processor performance equation, which we will use throughout the text. Defining performance When we say one computer has better performance than another, what do we mean? Although this question might seem simple, an analogy with passenger airplanes shows how subtle the question of performance can be. The table below lists some typical passenger airplanes, together with their cruising speed, range, and capacity. If we wanted to know which of the planes in this table had the best performance, we would first need to define performance. For example, considering different measures of performance, we see that the plane with the highest cruising speed was the Concorde (retired from service in 2003), the plane with the longest range is the DC-8, and the plane with the largest capacity is the 747. Table 1.6.1: The capacity, range, and speed for a number of commercial airplanes (COD Figure 1.14). The last column shows the rate at which the airplane transports passengers, which is the capacity times the cruising speed (ignoring range and takeoff and landing times). Airplane Passenger capacity Cruising range (miles) Cruising speed (m.p.h.) Passenger throughput (passengers x m.p.h.) Boeing 777 375 4630 610 228,750 Boeing 747 470 4150 610 286,700 BAC/Sud Concorde 132 4000 1350 178,200 Douglas DC-8-50 146 8720 544 79,424 Feedback? Let's suppose we define performance in terms of speed. This still leaves two possible definitions. You could define the fastest plane as the one with the highest cruising speed, taking a single passenger from one point to another in the least time. If you were interested in transporting 450 passengers from one point to another, however, the 747 would clearly be the fastest, as the last column of the figure shows. Similarly, we can define computer performance in several different ways. If you were running a program on two different desktop computers, you'd say that the faster one is the desktop computer that gets the job done first. If you were running a datacenter that had several servers running jobs submitted by many users, you'd say that the faster computer was the one that completed the most jobs during a day. As an individual computer user, you are interested in reducing response time—the time between the start and completion of a task—also referred to as execution time. Datacenter managers are often interested in increasing throughput or bandwidth—the total amount of work done in a given time. Hence, in most cases, we will need different performance metrics as well as different sets of applications to benchmark personal mobile devices, which are more focused on response time, versus servers, which are more focused on throughput. Response time: Also called execution time. The total time required for the computer to complete a task, including disk accesses, memory accesses, I/O activities, operating system overhead, CPU execution time, and so on. Throughput: Also called bandwidth. Another measure of performance, it is the number of tasks completed per unit time. PARTICIPATION ACTIVITY 1.6.1: Execution time and throughput. 1) At Joe's Car Wash, a car enters the wash, and exits 5 minutes later (nice and clean). 5 minutes is the _________. execution time throughput 2) At Joe's Car Wash, a car enters the wash, and exits 5 minutes later. However, 1 minute after a car enters, the next car can enter. Thus, once full, the car wash outputs 1 clean car per minute. 1 car per minute is the _________. response time throughput 3) Response time is synonymous with _________. execution time throughput 4) Cars drive 60 km/h over a 1 km long bridge. A car thus requires 1 minute to cross the bridge. Cars stay separated by about 100 m, so 1 car enters and another exits the bridge every 6 seconds. The execution time is _________. 1 minute 6 seconds 5) Cars drive 60 km/h over a 1 km long bridge. A car thus requires 1 minute to cross the bridge. Cars stay separated by about 100 m, so 1 car enters and another exits the bridge every 6 seconds. The throughput is ________. 6 cars / sec 10 cars / minute 6) Increasing the speed limit for cars driving over a bridge _______ the execution time. improves worsens 7) Increasing the speed limit for cars driving over a bridge while keeping the same minimum separation between cars _______ the throughput. improves worsens Feedback? PARTICIPATION ACTIVITY 1.6.2: Example of throughput and response time. 1) Replacing a processor in a computer with a faster processor has what effect? Decreases response time Increases throughput Both (decreases response time and increases throughput) 2) Adding additional processors to a system that uses multiple processors for separate tasks -- for example, searching the web -- has what effect? Assume that before adding processors, tasks do not wait to execute (tasks do not "queue up"). Decreases response time Increases throughput Both (decreases response time and increases throughput) 3) Adding additional processors to a system that uses multiple processors for separate tasks -- for example, searching the web -- has what effect? Assume that before adding processors, tasks often must wait to execute due to another task executing (tasks "queue up"). Decreases response time Increases throughput Both (decreases response time and increases throughput) Feedback? In discussing the performance of computers, we will be primarily concerned with response time for the first few chapters. To maximize performance, we want to minimize response time or execution time for some task. PARTICIPATION ACTIVITY 1.6.3: Performance. Start 2x speed Y Execution time X Execution time Y Performance > X Performance Computer X Computer Y Performance Performance Computer X Computer Y Performance > X Y Computer X Computer Y Execution time Performance Computer X Computer Y Execution time = X X Execution time Execution time > X Y Execution time Execution time > Y X 1 1 1 Performance Performance = X Y n = n Captions keyboard_arrow_down Feedback? In discussing a computer design, we often want to relate the performance of two different computers quantitatively. We will use the phrase "X is n times faster than Y"—or equivalently "X is n times as fast as Y"—to mean PerformanceXPerformanceY=n If X is n times as fast as Y, then the execution time on Y is n times as long as it is on X: PerformanceXPerformanceY=Execution timeYExecution timeX=n Example 1.6.1: Relative performance. If computer A runs a program in 10 seconds and computer B runs the same program in 15 seconds, how much faster is A than B? Answer We know that A is n times as fast as B if PerformanceAPerformanceB=Execution timeBExecution timeA=n Thus the performance ratio is 1510=1.5 and A is therefore 1.5 times as fast as B. Feedback? In the above example, we could also say that computer B is 1.5 times slower than computer A, since PerformanceAPerformanceB=1.5 means that PerformanceA1.5=PerformanceB For simplicity, we will normally use the terminology as fast as when we try to compare computers quantitatively. Because performance and execution time are reciprocals, increasing performance requires decreasing execution time. To avoid the potential confusion between the terms increasing and decreasing, we usually say "improve performance" or "improve execution time" when we mean "increase performance" and "decrease execution time." PARTICIPATION ACTIVITY 1.6.4: Performance. Computer A requires 10 seconds to compress a file. Computer B requires 5 seconds. 1) Which computer has higher execution time? A B 2) Which computer has higher performance? A B 3) If performance is 1 / execution time, what is A's performance? 0.1 10 4) If performance is 1 / execution time, what is B's performance? 0.2 5 5) How many times faster is B than A at compressing a file? 2 1/2 6) To determine how many times faster Computer C is than Computer D, which is the correct calculation? PerfC / PerfD PerfD / PerfC Feedback? Measuring performance Time is the measure of computer performance: the computer that performs the same amount of work in the least time is the fastest. Program execution time is measured in seconds per program. However, time can be defined in different ways, depending on what we count. The most straightforward definition of time is called wall clock time, response time, or elapsed time. These terms mean the total time to complete a task, including disk accesses, memory accesses, input/output (I/O) activities, operating system overhead—everything. Computers are often shared, however, and a processor may work on several programs simultaneously. In such cases, the system may try to optimize throughput rather than attempt to minimize the elapsed time for one program. Hence, we often want to distinguish between the elapsed time and the time over which the processor is working on our behalf. CPU execution time or simply CPU time, which recognizes this distinction, is the time the CPU spends computing for this task and does not include time spent waiting for I/O or running other programs. (Remember, though, that the response time experienced by the user will be the elapsed time of the program, not the CPU time.) CPU time can be further divided into the CPU time spent in the program, called user CPU time, and the CPU time spent in the operating system performing tasks on behalf of the program, called system CPU time. Differentiating between system and user CPU time is difficult to do accurately, because it is often hard to assign responsibility for operating system activities to one user program rather than another and because of the functionality differences among operating systems. CPU execution time: Also called CPU time. The actual time the CPU spends computing for a specific task. User CPU time: The CPU time spent in a program itself. System CPU time: The CPU time spent in the operating system performing tasks on behalf of the program. For consistency, we maintain a distinction between performance based on elapsed time and that based on CPU execution time. We will use the term system performance to refer to elapsed time on an unloaded system and CPU performance to refer to user CPU time. We will focus on CPU performance in this chapter, although our discussions of how to summarize performance can be applied to either elapsed time