This eBook includes the following formats, accessible from your Account page after purchase:
EPUB The open industry format known for its reflowable content and usability on supported mobile devices.
MOBI The eBook format compatible with the Amazon Kindle and Amazon Kindle applications.
PDF The popular standard, used most often with the free Adobe® Reader® software.
This eBook requires no passwords or activation to read. We customize your eBook by discreetly watermarking it with your name, making it uniquely yours.
Also available in other formats.
Register your product to gain access to bonus material or receive a coupon.
An Expert Guide to Software Performance Optimization
From mobile and cloud apps to video games to driverless vehicle control, more and more software is time-constrained: It must deliver reliable results seamlessly, consistently, and virtually instantaneously. If it doesn't, customers are unhappy--and sometimes lives are put at risk. When complex software underperforms or fails, software engineers need to identify and address the root causes. This is difficult and, historically, few tools have been available to help.
In Understanding Software Dynamics, performance expert Richard L. Sites tackles the problem head on, offering expert methods and advanced tools for understanding complex, time-constrained software dynamics, improving reliability and troubleshooting challenging performance problems.
Sites draws on several decades of experience pioneering software performance optimization, as well as extensive experience teaching graduate-level developers. He introduces principles and techniques for use in any environment, from embedded devices to datacenters, illuminating them with examples based on x86 or ARM processors running Linux and linked by Ethernet. He also guides readers through building and applying a powerful, new, extremely low-overhead open-source software tool, KUtrace, to precisely trace executions on every CPU core. Using insights gleaned from this tool, readers can apply nuanced solutions--not merely brute-force techniques such as turning off caches or cores.
About the Author
Part I: Measurement
Chapter 1: My Program Is Too Slow
Chapter 2: Measuring CPUs
Chapter 3: Measuring Memory
Chapter 4: CPU and Memory Interaction
Chapter 5: Measuring Disk/SSD
Chapter 6: Measuring Networks
Chapter 7: Disk and Network Database Interaction
Part II: Observation
Chapter 8: Logging
Chapter 9: Aggregate Measures
Chapter 10: Dashboards
Chapter 11: Other Existing Tools
Chapter 12: Traces
Part III: KUtrace
Chapter 14: Goals, Design, Implementation
Chapter 15: Linux Kernel Patches
Chapter 16: Linux Loadable Module
Chapter 17: User-Mode Runtime Control
Chapter 18: Postprocessing
Chapter 19: Display of Software Dynamics
Part IV: Reasoning
Chapter 20: What to Look For
Chapter 21: Executing Too Much
Chapter 22: Executing Slowly
Chapter 23: Waiting for CPU
Chapter 24: Waiting for Memory
Chapter 25: Waiting for Disk
Chapter 26: Waiting for Network
Chapter 27: Waiting for Locks
Chapter 28: Waiting for Time
Chapter 29: Waiting for Queues
Chapter 30: Recap
Appendix A: Sample Servers
Appendix B: Trace Entries