BenchmarksThere are a variety of bottlenecks used and associated kernel components stressed by the specific collection of benchmarks in a suite. Some of these are detailed in Table 7-1. In addition, performance results and analysis are included for some of these benchmarks.
The benchmarks discussed are selected based on a number of criteria: industry benchmarks, which are reliable indicators of a complex workload, and component-level benchmarks, which indicate specific kernel performance problems. Industry benchmarks are generally accepted by the industry to measure the performance and scalability of a specific workload. These benchmarks often require a complex or expensive setup, which is not available to most of the OSC. However, some of these may be available to the OSC by the Open Source Development Lab (OSDL). Examples include the following: SPECweb99. Representative of web serving performance. SPECsfs. Representative of NFS performance. Database query. Representative of database query performance. NetBench. Representative of SMB file-serving performance.
Component-level benchmarks measure the performance and scalability of specific Linux kernel components that are deemed critical to a wide spectrum of workloads. Examples include the following: Netperf3. Measures the performance of the network stack, including TCP, IP, and network device drivers. VolanoMark. Measures the performance of the scheduler, signals, TCP send/receive, and loopback. Block I/O test. Measures the performance of VFS, raw and direct I/O, block device layer, SCSI layer, and low-level SCSI/fibre device driver.
Some benchmarks are commonly used by the OSC because the OSC already accepts the importance of the benchmark. Thus, it is easier to convince the OSC of performance and scalability bottlenecks illuminated by the benchmark. In addition, generally no licensing issues prevent the publication of raw data. The OSC can run these benchmarks because they are often simple to set up and the hardware required is minimal. Examples include the following: Lmbench. Used to measure performance of the Linux APIs. IOzone. Used to measure native file system throughput. dbench. Used to measure the file system component of NetBench. SMB Torture. Used to measure SMB file-serving performance.
Many benchmark options are available for specific workloads. Some important benchmarks are not listed here. For more information on specific benchmarks, see Chapter 6, "Benchmarks as an Aid to Understanding Workload Performance." ResultsIt is important to understand various benchmarks, so we have chosen three benchmarks used to quantify Linux kernel performance: database query, VolanoMark, and SPECweb99. For all three benchmarks, an eight-way machine is used, as detailed in Figures 7-1 through 7-3. Figure 7-1. Database query benchmark results.Figure 7-3. SPECweb99 benchmark results using the Apache web server.Figure 7-2. VolanoMark benchmark results; loopback mode.Acknowledgments" section later in this chapter for more information.) This benchmark presents a demanding workload to a web server. This workload requests 70% static pages and 30% simple dynamic pages. Sizes of the web pages range from 102 to 921,000 bytes. The dynamic content models GIF advertisement rotation. There is no SSL content. SPECweb99 is relevant because web serving, especially with Apache, is one of the most common uses of Linux servers. Apache is rich in functionality and is not designed for high performance. However, we chose Apache as the web server for this benchmark because it currently hosts more web sites than any other web server on the Internet. SPECweb99 is the accepted standard benchmark for web serving. SPECweb99 stresses the following kernel components: scheduler, TCP/IP, various threading models, sendfile, zero copy, and network drivers. Figure 7-3 shows our results for SPECweb99. Also included is a description of the hardware and software configurations used and our benchmark target. We have a close collaboration with the Linux kernel development team and the IBM Apache team as we make progress on the performance of this benchmark. Some of the issues we have addressed that have resulted in the improvements shown include adding O(1) and read copy update (RCU) dcache kernel patches and adding a new dynamic API mod_specweb module to Apache. As shown in Figure 7-3, we have exceeded our target on this benchmark; however, we are addressing several outstanding Linux kernel component-related issues that we believe will significantly improve the performance of this benchmark. |