
System Performance Tuning
Description
Alles über E-Books | Antworten auf Fragen rund um E-Books, Kopierschutz und Dateiformate finden Sie in unserem Info- & Hilfebereich.
More details
Other editions
Additional editions

Content
- Intro
- Table of Contents
- Preface
- Who Should Buy This Book?
- A Note on Coverage
- How to Read This Book
- This Book as a Story
- This Book as a Reference
- Organization
- Typographic Conventions
- Comments and Questions
- Personal Comments and Acknowledgments
- Acknowledgments from Mike Loukides
- An Introduction to Performance Tuning
- An Introduction to Computer Architecture
- Levels of Transformation
- Software: algorithms and languages
- The Instruction Set Architecture
- Hardware: microarchitecture, circuits, and devices
- The von Neumann Model
- Caches and the Memory Hierarchy
- The Benefits of a 64-Bit Architecture
- What does it mean to be 64-bit?
- Performance ramifications
- Principles of Performance Tuning
- Principle 0: Understand Your Environment
- Principle 1: TANSTAAFL!
- Principle 2: Throughput Versus Latency
- Principle 3: Do Not Overutilize a Resource
- Principle 4: Design Tests Carefully
- Static Performance Tuning
- Other Miscellaneous Things to Check
- Concluding Thoughts
- Workflow Management
- Workflow Characterization
- Simple Commands
- Process Accounting
- Enabling process accounting
- Reviewing accounting records
- Automating sar
- Enabling sar
- Retrieving data
- Virtual Adrian
- Network Pattern Analysis
- Pattern 1: request-response
- Pattern 1B: inverse request-response
- Pattern 2: data transfer
- Pattern 3: message passing
- Packet size distributions
- Workload Control
- Education
- Usage and performance agreements
- The maxusers and the pt_cnt Parameters
- Limiting Users
- Quotas
- Environmental limits
- Complex Environments
- Benchmarking
- MIPS and Megaflops
- MIPS
- Megaflops
- Component-Specific Benchmarks
- Linpack
- SPECint and SPECfp
- Commercial Workload Benchmarks
- TPC
- SPECweb99
- User Benchmarks
- Choose your problem set
- Choose your runtime
- Automate heavily
- Set benchmark runtime rules
- Concluding Thoughts
- Processors
- Microprocessor Architecture
- Clock Rates
- Pipelining
- Variable-length instructions
- Branches
- The Second Generation of RISC Processor Design
- Caching
- The Cache Hierarchy
- Cache Organization and Operation
- Associativity
- Locality and "Cache-Busters"
- Unit stride
- Linked lists
- Cache-aligned block copy problems
- The Cache Size Anomaly
- Process Scheduling
- The System V Model: The Linux Model
- Finding a process's priority
- Adjusting a process's effective priority
- Modifications for SMP systems
- Multilayered Scheduling Classes: The Solaris Model
- The Solaris threading model
- Scheduling classes
- The dispatcher
- Checking a process's priority
- Tuning the dispatch tables
- Adjusting priorities
- Multiprocessing
- Processor Communication
- Buses
- Crossbars
- UltraSPARC-III systems: Fireplane
- "Interconnectionless" architectures
- Operating System Multiprocessing
- Threads
- Locking
- Cache Influences on Multiprocessor Performance
- Peripheral Interconnects
- SBus
- Clock speed
- Burst transfer size
- Transfer mode
- Summary of SBus implementations
- SBus card utilization
- PCI
- PCI bus transactions
- CompactPCI
- A Summary of Peripheral Interconnects
- Interrupts in Linux
- Interrupts in Solaris
- Processor Performance Tools
- The Load Average
- Process Queues
- Specific Breakdowns
- Multiprocessor Systems
- top and prstat
- Lock Statistics
- Controlling Processors in Solaris
- psrinfo
- psradm
- psrset
- Peripheral Interconnect Performance Tools
- Advanced Processor Performance Statistics
- Concluding Thoughts
- Memory
- Implementations of Physical Memory
- Virtual Memory Architecture
- Pages
- Segments
- Estimating Memory Requirements
- Address Space Layout
- The Free List
- Virtual memory management in Linux
- Page Coloring
- Transaction Lookaside Buffers (TLB)
- Paging and Swapping
- The Decline and Fall of Interactive Performance
- Swap Space
- Anonymous memory
- Sizing swap space
- Organizing swap space
- Swapfiles
- Consumers of Memory
- Filesystem Caching
- Filesystem Cache Writes: fsflush and bdflush
- Solaris: fsflush
- Linux: bdflush
- Interactions Between the Filesystem Cache and Memory
- Priority paging
- Cyclic caching
- Interactions Between the Filesystem Cache and Disk
- Tools for Memory Performance Analysis
- Memory Benchmarking
- STREAM
- lmbench
- Examining Memory Usage System-Wide
- vmstat
- sar
- memstat
- Examining Memory Usage of Processes
- Solaris tools
- Linux Tools
- Concluding Thoughts
- Disks
- Disk Architecture
- Zoned Bit Rate (ZBR) recording
- Disk caches
- Access Patterns
- Reads
- Writes
- UFS write throttling
- Performance Specifications
- One million bytes is a megabyte?
- Burst speed versus internal transfer speed
- Internal transfer speed versus actual speed
- Average seek time
- Storage capacity and access capacity
- Interfaces
- IDE
- Improving IDE performance in Linux
- Limitations of IDE drives
- IPI
- SCSI
- Multi-initiator SCSI
- Bus transactions
- Synchronous versus asynchronous transfers
- Termination
- Command queuing
- Differential signaling
- Bus utilization
- Mixing different speed SCSI devices
- SCSI implementations
- Fibre Channel
- IEEE 1394 (FireWire)
- Universal Serial Bus (USB)
- Common Performance Problems
- High I/O Skew
- Memory-Disk Interactions
- High Service Times
- Filesystems
- vnodes, inodes, and rnodes
- The directory name lookup cache (DNLC)
- The Unix Filesystem (UFS)
- inode density
- Filesystem cluster size
- Minimum free space
- Rotational delay
- fstyp and tunefs
- Bypassing memory caching
- The inode cache
- The buffer cache
- Logging Filesystems
- Solstice:DiskSuite
- Solaris
- The Second Extended Filesystem (EXT2)
- The Third Extended Filesystem (EXT3)
- Tuning the elevator algorithm
- Choosing a journaling mode
- Transitioning from ext2 to ext3
- The Reiser Filesystem (ReiserFS)
- Tail packing
- The Journaled Filesystem (JFS)
- The Temporary Filesystem (tmpfs)
- Veritas VxFS
- Caching Filesystems (CacheFS)
- Minimizing seek times by filesystem layout
- Tools for Analysis
- Enabling Disk Caches
- Disk Performance Benchmarking
- hdparm
- tiobench
- iozone
- Second-Time-Through Improvements?
- Using iostat
- Historical limitations: iostat and queuing terminology
- Using sar
- I/O Tracing
- Using the kernel probes
- Using process filtering
- Restarting prex
- Concluding Thoughts
- Disk Arrays
- Terminology
- RAID Levels
- RAID 0: Striping
- RAID 1: Mirroring
- RAID 2: Hamming Code Arrays
- RAID 3: Parity-Protected Striping
- RAID 4: Parity-Protected Striping with Independent Disks
- RAID 5: Distributed, Parity-Protected Striping
- RAID 10: Mirrored Striping
- Software Versus Hardware
- Software
- Hardware
- RAID overlap
- A Summary of Disk Array Design
- Choosing a RAID Level
- Software RAID Implementations
- Solaris: Solstice DiskSuite
- State databases
- RAID 0: stripes
- RAID 1: mirrors
- RAID 5 arrays
- Hot spare pools
- Linux: md
- Persistent superblocks
- Chunk size
- Linear mode
- RAID 0: stripes
- RAID 1: mirrors
- RAID 5 arrays
- Creating the array
- Autodetection
- Booting from an array device
- RAID Recipes
- Attribute-Intensive Home Directories
- Data-Intensive Home Directories
- High Performance Computing
- Databases
- Case Study: Applications Doing Large I/O
- Concluding Thoughts
- Networks
- Network Principles
- The OSI Model
- Physical Media
- UTP
- A note on terminology: plugs and jacks
- Fiber
- Network Interfaces
- Ethernet
- Fundamentals of Ethernet signaling
- Topologies
- 10BASE-T
- 100BASE-T4
- 100BASE-TX
- Gigabit Ethernet topologies
- The 5-4-3 rule
- Collisions
- Autonegotiation
- Displaying and setting modes
- FDDI
- ATM
- Ethernet Versus ATM/FDDI
- Network Protocols
- IP
- Fragmentation
- Time-to-live
- Protocols
- IP addresses
- Classful addressing
- Subnetting classful networks
- Moving to a classless world
- Routing
- TCP
- Connection initiation and SYN flooding
- Path MTU discovery and the maximum segment size
- Buffers, watermarks, and windows
- Retransmissions
- Deferring acknowledgments
- Window congestion and the slow start algorithm
- TCP timers and intervals
- The Nagle algorithm
- UDP
- TCP Versus UDP for Network Transport
- NFS
- Characterizing NFS Activity
- Tuning Clients
- Obtaining statistics for an NFS-mounted filesystem
- The rnode cache
- Tuning NFS clients for bursty transfers
- Tuning NFS clients for sequential transfer
- Tuning Servers
- Designing disk subsystems for NFS servers
- NVRAM caching
- Memory requirements
- The two basic types of NFS servers
- Tuning the number of NFS threads
- Adjusting the buffer cache
- The maxusers parameter
- The directory name lookup cache (DNLC)
- The inode cache
- Observing NFS server performance with nfsstat
- Wide Area Networks and NFS
- CIFS via Unix
- Concluding Thoughts
- Code Tuning
- The Two Critical Approaches
- String Searching Algorithms
- Algorithm 1: naive searching
- Algorithm 2: Knuth-Morris-Pratt searching
- Algorithm 3: Boyer-Moore searching
- Caveats in Optimization
- Techniques for Code Analysis
- Application Timing: time, timex, and ptime
- time
- timex
- ptime
- Mechanisms of timing
- Timing-Specific Code Sections
- Timing via gethrtime
- Timing via the TICK register
- Probe-Based Analysis: Solaris TNF
- Inserting probes
- Caveats
- Profiler-Based Analysis: gprof
- Implementing profiling
- Compiling with profiling
- Execution with profiling
- Profile analysis
- Caveats
- Optimization Patterns
- Arithmetic
- Loops
- Strings
- Interacting with Compilers
- Typical Optimizations: -fast
- Optimization Level: -xO
- Specifying Instruction Set Architecture: -xarch
- Specifying Processor Architecture: -xchip
- Function Inlining: -xinlining and -xcrossfile
- Data Dependency Analysis: -xdepend
- Vector Operations: -xvector
- Default Floating Point Constant Size: -xsfpconst
- Data Prefetching: -xprefetch
- Quick and Dirty Compiler Flags
- Profiling Feedback
- Concluding Thoughts
- Instant Tuning
- Top Five Tuning Tips
- Where Is the Disk Bottleneck?
- Do You Have Enough Memory?
- Are the Processors Overloaded?
- Are Processes Blocked on Disk I/O?
- Does System Time Heavily Dominate User Time?
- Instant Tuning Recipes
- Single-User Development Workstations
- Filesystems
- Swap space
- Kernel tuning
- Workgroup Servers
- Memory
- Disks
- Filesystems
- Swap space
- Optimizing NFS
- Kernel tuning
- Web Servers
- Memory
- Disks
- Filesystems
- Swap space
- Networks
- Kernel tuning
- Special case: proxy servers
- Index
System requirements
File format: PDF
Copy-Protection: Adobe-DRM (Digital Rights Management)
System requirements:
- Computer (Windows; MacOS X; Linux): Install the free reader Adobe Digital Editions prior to download (see eBook Help).
- Tablet/smartphone (Android; iOS): Install the free app Adobe Digital Editions or the app PocketBook before downloading (see eBook Help).
- E-reader: Bookeen, Kobo, Pocketbook, Sony, Tolino and many more (only limited: Kindle).
The file format PDF always displays a book page identically on any hardware. This makes PDF suitable for complex layouts such as those used in textbooks and reference books (images, tables, columns, footnotes). Unfortunately, on the small screens of e-readers or smartphones, PDFs are rather annoying, requiring too much scrolling.
This eBook uses Adobe-DRM, a „hard” copy protection. If the necessary requirements are not met, unfortunately you will not be able to open the eBook. You will therefore need to prepare your reading hardware before downloading.
Please note: We strongly recommend that you authorise using your personal Adobe ID after installation of any reading software.
For more information, see our eBook Help page.