SKIP THE SHIPPING
Use code NOSHIP during checkout to save 40% on eligible eBooks, now through January 5. Shop now.
Register your product to gain access to bonus material or receive a coupon.
Proven techniques for optimizing web, file, print, database, and application servers
Practical introductions to open source performance management tools
Easy-to-understand examples based on Red Hat Enterprise Linux and Novell SUSE Linux Enterprise Server
An indispensable guide to maximizing Linux system and application performance
From Wall Street to Hollywood, Linux runs many of the world's most businesscritical systems. Linux performance now impacts the entire enterprise. In Performance Tuning for Linux Servers, a team of IBM's most-experienced Linux performance specialists shows you how to find bottlenecks, measure performance, and identify effective optimizations.
This book doesn't just cover kernel tuning: it shows how to maximize the end-to-end performance of real-world applications and databases running on Linux. Throughout, the authors present realistic examples based on today's most popular enterprise Linux platforms, Intel-based Red Hat Enterprise Linux, and Novell SUSE Linux Enterprise Server. These examples are designed for simplicity, clarity, and easy adaptation to any contemporary Linux environment. You'll discover how to
Install and configure Linux for maximum performance from the outset
Evaluate and choose the right hardware architecture for your Linux environment
Understand Linux kernels 2.4 through 2.6: components, performance issues, and optimization opportunities
Master core Linux performance tuning principles and strategies
Utilize free, open source tools for measurement, monitoring, system tracing, and benchmarking
Interpret performance data to analyze your Linux server's real-world behavior
Optimize Linux system schedulers, memory, I/O, file systems, and networking
Tune web, file, database, and application servers running commercial workloads
Predict the impact of changes in tuning parameters or configurations
Tune Linux code: optimize design, timing, sockets, threads, synchronization, and more
Architect for maximum performance: SMP scaling, clustering, and topology
Integrate kernel and application tuning in end-to-end system optimization projects
Whether you're an administrator, developer, integrator, or consultant, Performance Tuning for Linux Serverswill help you maximize the performance and value of every Linux system and application you run.
© Copyright Pearson Education. All rights reserved.
Performance Tuning for Linux: An Introduction to Kernels
Preface.
Acknowledgments.
About the Editors.
About the Contributors.
I. LINUX OVERVIEW.
1. Linux Installation Issues.
Introduction
Preinstallation Planning
Configurable 2.6 Kernel Features
Linux Logging Facility
System Initialization: BSD Versus System V Initialization
Summary
References
2. Kernel Overview.
Introduction
The Evolution of Linux
Linux Kernel Architecture
Process Management
Interprocess Communications
The Linux Symmetrical Multiprocessing (SMP) Model
File Systems
New Features in Linux 2.6
Summary
References
3. Overview of Server Architectures.
Introduction
Linux Servers
Processors and Multiprocessing
Memory
I/O
Linux Enterprise Servers
Linux Clusters
Examples of Server Systems
Summary
II. PERFORMANCE ANALYSIS TOOLS.
4. System Performance Monitoring.
Introduction
Background on Linux and Performance Analysis
CPU Utilization
Memory Utilization
I/O Utilization
Network Utilization
Summary
References
5. System Trace Tools.
Introduction
Requirements for System Tracing
The top Utility
strace
OProfile
Performance Inspector
Summary
References
6. Benchmarks as an Aid to Understanding Workload Performance.
Introduction
Benchmarking to Improve Your Workload
What Types of Benchmarks Are There?
Microbenchmarks
Web Server Benchmarks
Summary
III. SYSTEM TUNING.
7. System Performance Principles and Strategy: A Benchmarking Methodology Case Study.
Introduction
Performance Evaluation Methodologies
Benchmarking Methodology Case Study
Analysis Methodology
Benchmarks
Summary
Acknowledgments
References
8. Scheduler Tuning.
Introduction
Single-Processor Systems
Symmetric Multiprocessing (SMP)
Non-Uniform Memory Access (NUMA)
Symmetric Multithreading (SMT)
The 2.6 Linux Scheduler
Load Balancing
Tunable Parts of the Scheduler
Summary
References
9. The Linux Virtual Memory Performance Implications.
Introduction
Memory and Address Space
High-Memory Support
Paging and Swapping
The Linux Page Tables
New Features in Linux 2.6
Summary
References
10. I/O Subsystems Performance Implications.
Introduction
I/O Scheduling and the Block I/O (BIO) Layer
Read and Write Request Batches
Read Anticipation Heuristic
I/O Components that Affect Performance
Addressing an I/O Device
Summary
References
11. File System Tuning.
Introduction
File System Fundamentals
Journaled File Systems
Disks Factor into File System Performance
Fragmenting a File System
File Synchronization
bdflush Parameters
Asynchronous Input and Output
Raw Disk I/O
Ext2 and Ext3
ReiserFS
Journaled File System (JFS)
Next-Generation File System (XFS)
Summary
References
12. Network Tuning.
Introduction
The Network Protocol Stack
Kernel Parameter Tuning Mechanisms
Kernel Auto Tuning
Core Kernel Parameter Descriptions
TCP/IPv4 Protocol Kernel Parameters
Summary
References
13. Interprocess Communication.
Introduction
What Is Interprocess Communication?
Linux SysV IPC Resources and the ipcs Command
Semaphore Parameters
Message Queue Parameters
Shared Memory Segment Parameters
Dynamically Modifying the Configurable IPC Parameters
Configuring IPC Parameters Statically
Pipes
Summary
14. Code Tuning.
Introduction
General Principles
Profiling to Understand the Application
Compiler Options as Tuning Tools
Code Tuning
Algorithm: Achieving Performance Through Design Choices
File I/O
Summary
IV. PERFORMANCE CHARACTERIZATION OF LINUX SERVER APPLICATIONS.
15. Web Servers.
Introduction
HTTP Requests and Responses
Network Behavior of a Web Server
Anatomy of a Web Server Transaction
Different Models of Web Servers
Tuning Web Servers
Summary
References
16. File and Print Servers.
Introduction
Types of Dedicated Network Storage Servers
Optimizing the Performance of Network Storage
References
17. Database Servers.
Introduction
Overview of Database Architectures
Database Tuning Areas to Consider
Process Management
Memory Management
I/O Management
Summary
18. Application Servers.
Introduction
The Application Server Defined
Java, J2EE, and Application Servers
Performance Characterization of Application Servers
Improving Performance and High Availability
Summary
References
V. TUNING CASE STUDIES.
19. Case Study: Tuning the i/o Schedulers in Linux 2.6.
Introduction
Benchmark Environment and Workload Profiles
I/O Schedulers and Performance
Single-CPU Single-Disk Setup
8-Way RAID-5 Setup
16-Way RAID-0 Setup
AS Sequential Read Performance
AS Versus Deadline Performance
CFQ Performance
Summary
References
20. Case Study: File System Tuning.
Introduction
Analyzing File Layout
Tuning File Systems
Measuring I/O
Summary
References
21. Case Study: Network Performance on Linux.
Introduction
Benchmarks Used in the Case Study
Enhancements in the Linux 2.4 and 2.6 Kernels
Case Study
Summary
References
22. Case Study: Commercial Workload Tuning.
Introduction
Overview of Commercial Workload Tuning
Standard Commercial Workload Model for J2EE
Our Commercial Workload Model: Stock Trading
The Performance Analysis Exercise
Summary
References
Appendix A: Tuning Kernel Parameters.
Introduction
The sysctl Interface
The procfs Interface
sysfs (Linux Kernel 2.6 Only)
General Kernel Parameters
Virtual Memory
File System
Network
Index.