A Comparison of Linux Performance Tuning Books
Tuning Linux systems for performance is an essential task for any system administrator, but it also is one of the least documented. Without a hard-won understanding, performance tuning often can seem like some kind of black magic or performance art.
I've recently had the opportunity to read two books on the topic: Optimizing Linux Performance, written by Phillip G. Ezolt and part of the HP Professional Books imprint, and Performance Tuning for Linux Servers, edited by Sandra K. Johnson and published by IBM Press. As both of these titles came out of large companies that are throwing a lot of support behind Linux, I thought it would be worthwhile to compare the two books.
First, the similarities. Being that both of these books were written on the same topic, you might expect a fair amount of overlap--and you'd be right. Both of them cover a variety of standard tools for investigating performance problems: top, netstat, sar, oprofile and friends all receive good coverage. Both books also provide some recommendations for the process of performance tuning itself. It's also nice to see that both books provide some example performance tuning scenarios.
The books share a common flaw too. Although they both talk about performance tuning on a single box, occasionally using graphical tools, neither provides serious coverage of tuning an application in an enterprise setting. This task is a different beast altogether from single-box tuning; the tool sets are different, although they do overlap; the kinds of problems and solutions differ widely; and the people involved--it's almost never only one person--need to correlate much more data to come to a solution. For a large Web application such as Amazon.com, it might not be unusual to see 30 or more individual systems--Web servers, load balancers, routers, application servers and databases servers--involved in a single transaction.
These similarities, both good and bad, do not mean these books are identical twins, however. There are a number of differences. Optimizing Linux Performance, a smaller softcover book, covers less ground but does a better job with what it does cover. Linux System Tuning, a serious-looking hardback, seems as though it should provide deeper coverage of more topics, but it is marred by a number of flaws, as discussed below.
Overall, Optimizing Linux Performance (ISBN 0-13-148682-9) is a solid book. Ezolt starts out with an overview of performance tuning and provides a number of tips to help you make system tuning a repeatable and understandable process. He moves on to cover performance analysis tools for system CPU, system memory, process-specific CPU, process-specific memory, disk I/O and networking. He also includes a chapter on using "helpers" to automate using these tools, recording their output and analyzing the data you've collected. He then looks at the tools in situ, addressing specific kinds of performance bottlenecks and walking through three examples he calls "Performance Hunts". Finally, he closes with a chapter addressing the current state of Linux-based performance tools and what can be done to improve them.
At 326 pages, excluding appendices, and 13 chapters, Optimizing Linux Performance isn't a huge book, but I'd say it's worth the $49.99 cover price if you're getting started with performance tuning on Linux.
Performance Tuning for Linux Servers (ISBN 0-13-144753-X) has some problems. The biggest problem I found is it was written by many authors--more than 20--and it reads that way. Information often is repeated and sometimes in contradictory ways, and the style and usability are ragged. I also was put off by the large number of simple errors, such as the claim that ext2fs was the first filesystem on Linux. If the simple stuff is wrong, how can I trust the other information?
The book does have some value though. It provides a much more thorough background on Linux systems than does Optimizing Linux Performance. Performance Tuning for Linux Servers discusses more tools, including Performance Inspector, which I'd never heard of before. It also feels like there is a wider breadth of expertise under the hood of this book.
I expected more from a book by IBM however, and unless you're shooting for completeness, I don't recommend spending the $54.99 for this book. Hopefully an improved second edition that's worth the cost will come along soon; otherwise, look for it at a sale.