Sun Performance and Tuning: Java and the Internet (2nd Edition)
PrefaceThis book consists of everything I have learned over the years about performance and tuning. It includes a structured approach, opinions, heuristics, and references. It contains documentation of the behavior of systems, with recommendations that are often needed but that are rarely available. I cover all of the Solaris operating system releases up to Solaris 2.6, and major Sun products up to the beginning of 1998.This second edition of Sun Performance and Tuning has doubled in size, and almost all the content is new. I have been writing a monthly performance question and answer column for SunWorld Online magazine at sun/sunworldonline, and many of those columns have been updated and incorporated into this book. You should read my column regularly to keep up to date with developments that postdate publication of this book.During the three years since first publication, the Internet transitioned from a useful tool to a major part of the computer business, and the Java phenomenon arrived. This is both a subject for discussion-hence the new subtitle for this edition-and a resource for obtaining detailed and up-to-date information. I have also worked closely with Richard Pettit over the last few years to develop the SE Performance Toolkit, and this edition contains detailed documentation written by Richard on the toolkit, and the performance interfaces provided by Solaris. We decided not to include it with the book on a CD-ROM, as it is easy to download the latest release over the Internet.  The SE3.0 release is available and my January 1998 SunWorld Online column is a FAQ for SE.This book is aimed both at developers who want to design for performance and need a central reference to better understand Sun machines, and at system administrators who have a Sun machine running applications and want to understand and improve overall performance.This book covers an incredibly complex and fast-changing topic. I have tried to organize it in a useful manner with the most important information up front in each chapter and many cross-references. A book like this can never truly be complete and finished, but it has to be frozen at some point so it can be published!How This Book Is OrganizedThis book is intended to be read sequentially, as it tries to cover the most significant and most common performance problems first. You can use it as a reference work by following the many cross-references that link related topics.Chapter 1 - Quick Tips and Recipes is for those of you who need results now and don't have time to read the whole book first.Chapter 2 - Performance Management covers the methods and tools used to manage performance.Chapter 3 - Performance Measurement to decide whether your efforts at tuning have made any difference to the system performance.Chapter 4 - Internet Servers contains an introduction to TCP/IP and offers guidelines on tuning and sizing web servers and proxy caching web servers.Chapter 5 - Java Application Servers contains a complete sizing guide for serving the new class of Network Computer client systems based on Java.Chapter6 - Source Code Optimization is aimed primarily at developers and end users who have access to the source code of the application being tuned. It covers Java performance and 64 bit issues.Chapter7 - Applications tells you how to find out what an off-the-shelf application is doing and discusses changes in the execution environment.Chapter8 - Disks investigates the performance characteristics of disk subsystems and describes how to monitor and tune them.Chapter 9 - Networks contains Sun-specific information on network hardware and performance issues.Chapter10 - Processors looks at how to decide whether you have enough CPU power for your workload. The chapter also provides a high-level description of the interactions between multiprocessor machines and Unix.Chapter11 - System Architectures looks at the way uniprocessor and multiprocessor SPARC systems are put together.Chapter12 - Caches looks at how caches work in principle, with examples of hardware and kernel based caching mechanisms.Chapter13 - RAM and Virtual Memory explains how the paging algorithm works and where memory flows to and from in the system.Chapter 14 - Kernel Algorithms and Tuning provides an insight into the algorithms and tunable parameters of the Solaris 2 kernel.Chapter 15 - Metric Collection Interfaces describes the interfaces to Solaris and how to code to them to get at performance information.Chapter 16 - The SymbEL Example Tools documents the example tools that are provided with the SE performance toolkit.Chapter 17 - The SymbEL Language contains the complete user manual and descriptions of how to use this freely available performance toolkit.Appendix A - Tunables Quick Reference turns the advice given elsewhere into  tunable values summarized in table form.AppendixB - References contains a long list of sources of further information, with a description of what is of interest in each document.Related BooksI have tried to avoid duplicating the techniques and content covered by my colleague Brian Wong in his book Configuration and Capacity Planning for Solaris Servers, Sun Microsystems Press, 1997. There is some natural overlap, but it is best to treat the two books as a matched pair. Brian covers in great detail the techniques required to decide on an initial configuration and has far more information on system and storage architectures than I do.During the summer of 1997, I presented a week long "Practical Performance Methods" class with Dr. Neil Gunther as part of the Stanford University Western Institute of Computer Science (WICS) summer seminar program. Neil's material is covered in his book, The Practical Performance Analyst, McGraw-Hill, 1998. Neil takes the most advanced techniques of performance analysis and modeling and relates them to real-world situations in a way that you can use directly to solve problems.