Novell Home

A Cool Solutions for Developers Book Review: Performance Tuning for Linux Servers

Novell Cool Solutions: Feature
By Arun Singh

Digg This - Slashdot This

Posted: 29 Aug 2005
 

Review by
Arun Singh
Novell, Inc.

Performance Tuning for Linux Servers (IBM Press, http://www.phptr.com/title/013144753X)

Author: Sandra Johnson, Gerrit Huizenga, Badari Pulavarty.
Published by: IBM Press , ISBN: 013144753X
Published: May 27, 2005; Pages: 576; Edition: 1st.

Performance of Linux servers is one aspect people take for granted, given the advancement in the Linux Kernel. Performance Tuning for Linux Servers is an excellent addition to your library, if you ever wish to dig deep into Linux servers. This book provides the basic knowledge and skills needed to understand the performance of Linux servers, and contains examples based on popular enterprise Linux distributions (SUSE Linux Enterprise Server, and Red Hat Enterprise Linux) useful to Linux developers, administrators and architects of all experience levels. This book is organized into five sections with an appendix on "Tuning Kernel Parameters". Each chapter in this book is written by respected expert engineers, which add values to this book.

Part I: "Linux Overview" section has chapters on "Linux Installation Issues", "Kernel Overview" and "Overview of Server Architectures".

The Linux Installation chapter helps you understand the value of planning to optimize performance. It covers Placing partitions, Using multiple hard drives, Selecting file systems, Converting file systems and Configuring RAID. Additionally, it briefly introduces new Linux Kernel 2.6 features (I/O Elevators and Huge TLB Page Support). Linux logging and log rotation, as well as the difference between Sys V and BSD System initialization table (/etc/inittab) are explained.

The Kernel Overview chapter talks about general Linux Kernel Architecture and covers the Linux Symmetrical Multiprocessing (SMP) Model. There is comprehensive list of new Linux 2.6 features.

The Overview of Server Architecture chapter introduces different Server Topologies, covers SMP, NUMA and Clusters and explains differences between High-Performance Clusters and High-Availability Clusters. IBM zSeries server is used in the example.

Part II: "Performance Analysis Tools" section has chapters on "System Performance Monitoring", "System Trace Tools" and "Benchmarks as an Aid to Understanding Workload Performance". Provides details of various systems tools available for performance analysis.

System Performance Monitoring provides information about a number of Linux performance tools – CPU Tools (uptime, vmstat, top, sar), Memory Tools (vmstat, ps), I/O Tools (iostat, sar), and Network Tools (netstat, nfsstat, tcpdump, ethtool, snmp, ifport, ifconfig, route, arp, ping, traceroute, host, nslookup). This chapter described the data provided by the above tools and how they can be used in performance analysis.

System Trace Tools covers the most common open-source community Linux tracing tools like top, strace, OProfile and Performance Inspector (PI). OProfile and PI are described in great detail.

The Benchmarks as an Aid to Understanding Workload Performance chapter talks about benefits of benchmarking and covers Operating System Benchmarks (Lmbench, AIN7, AIM9, Reaim, SPEC SDET), Disk Benchmark (Bonnie/Bonnie++, IOzone, IOmeter, tiobench, dbench), Network Benchmarks (Netperf, SPEC SFS), Application Benchmarks (Java Benchmarks, Post Mark, Database Benchmark), and WEB Server Benchmarks (SPECweb).

Part III: "Systems Tuning" section has chapters on "System Performance Principles and Strategy: A Benchmarking Methodology Case Study", "Scheduler Tuning", "Linux Virtual Memory", "I/O Subsystems", "File System Tuning", "Network Tuning", "Interprocess Communication", and "Code Tuning".

System Performance Principles and Strategy talks about general Benchmark Run Rules and how to set targets for improved Linux kernel performance.

Scheduler Tuning covers different architecture (SMP- Symmetric Multiprocessing, NUMA, SMT-Symmetric Multithreading) in the context of scheduler, and covers the 2.6 Linux Scheduler. Tunable parts of scheduler is explained.

The Linux Virtual memory chapter covers implementation of virtual memory system and provides basic concept of Memory and Address Space. Some of the new Kernel 2.6 features (rmap, objrmap, Largepages Support, Page Allocation and Replacement, Slab Allocator) are discussed. Virtual Memory tunable parameters are discussed.

The I/O Subsystems chapter covers I/O scheduling and different Kernel 2.6 I/O Schedulers (Deadline, CFQ and Anticipatory) in details. I/O schedulers tuning parameters and Performance Implications is briefly discussed.

File System Tuning introduces File System Fundamentals and explains basic File system terms. Different File System is discussed and a comparison chart is provided for Ext3, ReiserFS, XFS and JFS.

Network Tuning covers Kernel Parameters affecting system performance. TCP/IP v4 Protocol Kernel Parameters are covered in great detail.

The Interprocess Communication (IPC) chapter introduces different types IPC (Semaphores, Messages Queues, Shared Memory segments, Pipes, FIFO) in great detail. This chapter also provides information on IPCS command to view IPC messages and how Dynamically you can modify and configure IPC parameters using /proc and sysctl.

The Code Tuning chapter covers basic profiling, compiler options, and basic performance tuning.

Part IV: "Performance Characterization of Linux Server Applications" section has chapters on "WEB Servers", "File and Print Servers", "Database Servers", and "Application Servers". Describes the performance characteristics of server applications, including discussion on wed, file, database, and application servers.

The Web Servers chapter provides a brief overview of web servers and discusses what web servers are, what they do, and how they use the network. How to tune web servers is covered, especially Apache web server.

File and Print Servers covers Major Network File Systems (SMB/CIFS, NFS, WebDAV, AFS/DFS, Cluster File System). I/O performance measurement tools are discussed.

Database Servers provides overview of Database Architecture, Database Workload (OLTP vs DSS) and Tuning Areas (I/O Tuning, Que Length and Response Time, Load Balancing, Global Memory, Logging Device).

Application Servers provides overview of most popular J2EE based servers. Compressive list of Linux Applications server is provided. How to find Application Server performance "hot spots" is covered. How to Improve performance and High Availability using SMP and clustering is discussed.

Part IV: "Tuning Case Studies" section has several case study chapters on "Tuning the I/O Schedulers in Linux 2.6", "File System Tuning", "Network Performance on Linux", and "Commercial Workload Tuning".

The I/O schedulers chapter explains in great detail about the importance of different I/O schedulers in Linux Kernel. Various Kernel 2.6 I/O schedulers are discussed with Web Server Benchmark, File Server Benchmark, Mail Server Benchmark, Metadata Benchmark, Sequential Read/Write Benchmark. Results of benchmarks are tabulated very clearly against different file system options.

The File System Tuning chapter explains how to look into structure of Ext2/Ext3, JFS, ReiserFS, and XFS files systems. After initial introductions to various file systems layout, it examines how to tune these file systems. How to measure I/O statics is covered i.e. iostat and sar. Complete command line syntax is provided for hands-on experience.

A Network Performance case study is done using industry standard benchmarks i.e. NetBench, Netperf3, VolanoMark, SPECWeb99. This chapter covers network stack enhancements in Linux 2.4 and 2.6 Kernel. Specifically, enhancements in SendFile, TCP Segmentation Offloading, Process and IRQ affinity, Network Device driver API, TCP Offload Engine.

Appendix: "Tuning Kernel Parameters" section discusses many of the kernel tunable parameters and explains how to use sysctl, /proc, and sysfs interfaces to tune the Linux kernel. Provides simple usage of sysctl command and how procfs parameters can be viewed and changed. It also provides general Kernel parameters description.

Conclusion This book covers many topics of Linux performance tuning. Each chapter is written by an expert engineer in that topic, making this book more valuable.

Useful References:

  1. Tuning SUSE Linux Enterprise Server on IBM Server: http://www.redbooks.ibm.com/redpapers/pdfs/redp3862.pdf

  2. Performance Tuning for Linux Servers: http://www.phptr.com/title/013144753X

  3. Performance and tuning recommendations for Oracle 10g on zSeries Linux: http://www.ibm.com/developerworks/linux/linux390/perf/tuning_rec_database_OracleRec.html

  4. LTC Linux Performance Team: http://linuxperf.sourceforge.net/

  5. I/O Scheduler: http://www.linuxjournal.com/article/6931

  6. TPC Benchmarks: http://www.tpc.org/

  7. SPEC Benchmarks: http://www.spec.org/

  8. OProfile: http://oprofile.sourceforge.net/about/

  9. dbench: http://freshmeat.net/projects/dbench/

  10. IBM Press Books: http://www.phptr.com/ibmpress


Novell Cool Solutions (corporate web communities) are produced by WebWise Solutions. www.webwiseone.com

© 2014 Novell