- ホーム
- > 洋書
- > 英文書
- > Computer / Operating Systems
Full Description
The Complete Guide to Optimizing Systems PerformanceWritten by the winner of the 2013 LISA Award for Outstanding Achievement in System AdministrationLarge-scale enterprise, cloud, and virtualized computing systems have introduced serious performance challenges. Now, internationally renowned performance expert Brendan Gregg has brought together proven methodologies, tools, and metrics for analyzing and tuning even the most complex environments. Systems Performance: Enterprise and the Cloud focuses on Linux (R) and Unix (R) performance, while illuminating performance issues that are relevant to all operating systems. You'll gain deep insight into how systems work and perform, and learn methodologies for analyzing and improving system and application performance. Gregg presents examples from bare-metal systems and virtualized cloud tenants running Linux-based Ubuntu (R), Fedora (R), CentOS, and the illumos-based Joyent (R) SmartOS (TM) and OmniTI OmniOS (R). He systematically covers modern systems performance, including the "traditional" analysis of CPUs, memory, disks, and networks, and new areas including cloud computing and dynamic tracing. This book also helps you identify and fix the "unknown unknowns" of complex performance: bottlenecks that emerge from elements and interactions you were not aware of. The text concludes with a detailed case study, showing how a real cloud customer issue was analyzed from start to finish.Coverage includes* Modern performance analysis and tuning: terminology, concepts, models, methods, and techniques* Dynamic tracing techniques and tools, including examples of DTrace, SystemTap, and perf* Kernel internals: uncovering what the OS is doing* Using system observability tools, interfaces, and frameworks* Understanding and monitoring application performance* Optimizing CPUs: processors, cores, hardware threads, caches, interconnects, and kernel scheduling* Memory optimization: virtual memory, paging, swapping, memory architectures, busses, address spaces, and allocators* File system I/O, including caching* Storage devices/controllers, disk I/O workloads, RAID, and kernel I/O* Network-related performance issues: protocols, sockets, interfaces, and physical connections* Performance implications of OS and hardware-based virtualization, and new issues encountered with cloud computing* Benchmarking: getting accurate results and avoiding common mistakesThis guide is indispensable for anyone who operates enterprise or cloud environments: system, network, database, and web admins; developers; and other professionals. For students and others new to optimization, it also provides exercises reflecting Gregg's extensive instructional experience.
Contents
Acknowledgments xxxiiiAbout the Author xxxvChapter 1: Introduction 1 1.1 Systems Performance 11.2 Roles 21.3 Activities 31.4 Perspectives 41.5 Performance Is Challenging 41.6 Latency 61.7 Dynamic Tracing 71.8 Cloud Computing 81.9 Case Studies 9Chapter 2: Methodology 152.1 Terminology 162.2 Models 172.3 Concepts 182.4 Perspectives 322.5 Methodology 352.6 Modeling 572.7 Capacity Planning 652.8 Statistics 692.9 Monitoring 742.10 Visualizations 762.11 Exercises 822.12 References 82Chapter 3: Operating Systems 853.1 Terminology 863.2 Background 873.3 Kernels 1053.4 Exercises 1133.5 References 113Chapter 4: Observability Tools 1154.1 Tool Types 1164.2 Observability Sources 1204.3 DTrace 1334.4 SystemTap 1444.5 perf 1494.6 Observing Observability 1504.7 Exercises 1514.8 References 151Chapter 5: Applications 1535.1 Application Basics 1535.2 Application Performance Techniques 1585.3 Programming Languages 1635.4 Methodology and Analysis 1675.5 Exercises 1865.6 References 187Chapter 6: CPUs 1896.1 Terminology 1906.2 Models 1916.3 Concepts 1936.4 Architecture 1996.5 Methodology 2146.6 Analysis 2246.7 Experimentation 2546.8 Tuning 2566.9 Exercises 2606.10 References 262Chapter 7: Memory 2657.1 Terminology 2667.2 Concepts 2677.3 Architecture 2727.4 Methodology 2897.5 Analysis 2957.6 Tuning 3147.7 Exercises 3197.8 References 320Chapter 8: File Systems 3238.1 Terminology 3248.2 Models 3258.3 Concepts 3268.4 Architecture 3378.5 Methodology 3538.6 Analysis 3628.7 Experimentation 3838.8 Tuning 3878.9 Exercises 3918.10 References 392Chapter 9: Disks 3959.1 Terminology 3969.2 Models 397 9.3 Concepts 399 9.4 Architecture 407 9.5 Methodology 421 9.6 Analysis 431 9.7 Experimentation 4659.8 Tuning 4679.9 Exercises 4709.10 References 471Chapter 10: Network 47310.1 Terminology 47410.2 Models 47410.3 Concepts 47610.4 Architecture 48310.5 Methodology 49310.6 Analysis 50310.7 Experimentation 53510.8 Tuning 53610.9 Exercises 54210.10 References 543Chapter 11: Cloud Computing 54511.1 Background 54611.2 OS Virtualization 55111.3 Hardware Virtualization 56311.4 Comparisons 58111.5 Exercises 58311.6 References 584Chapter 12: Benchmarking 58712.1 Background 58812.2 Benchmarking Types 59712.3 Methodology 60212.4 Benchmark Questions 61312.5 Exercises 61412.6 References 615Chapter 13: Case Study 61713.1 Case Study: The Red Whale 61713.2 Comments 63313.3 Additional Information 63413.4 References 634Appendix A: USE Method: Linux 637Physical Resources 637Software Resources 640Reference 641Appendix B: USE Method: Solaris 643Physical Resources 643Software Resources 646References 647Appendix C: sar Summary 649Linux 649Solaris 650Appendix D: DTrace One-Liners 651syscall Provider 651proc Provider 655profile Provider 655sched Provider 657fbt Provider 658pid Provider 659io Provider 660sysinfo Provider 660vminfo Provider 661ip Provider 661tcp provider 662udp provider 663Appendix E: DTrace to SystemTap 665Functionality 665Terminology 666Probes 666Built-in Variables 667Functions 668Example 1: Listing syscall Entry Probes 668Example 2: Summarize read() Returned Size 668Example 3: Count syscalls by Process Name 670Example 4: Count syscalls by syscall Name, for Process ID 123 671Example 5: Count syscalls by syscall Name, for "httpd" Processes 672Example 6: Trace File open()s with Process Name and Path Name 672Example 7: Summarize read() Latency for "mysqld" Processes 672Example 8: Trace New Processes with Process Name and Arguments 673Example 9: Sample Kernel Stacks at 100 Hz 674References 674Appendix F: Solutions to Selected Exercises 675Chapter 2 Methodology 675Chapter 3 Operating Systems 675Chapter 6 CPUs 675Chapter 7 Memory 676Chapter 8 File Systems 676Chapter 9 Disks 677Chapter 11 Cloud Computing 677Appendix G: Systems Performance Who's Who 679Glossary 683Bibliography 689Index 697