Published by Addison-Wesley Professional (February 18, 2022) © 2022

Richard Sites
    VitalSource eTextbook (Lifetime access)
    €37,99
    Adding to cart… The item has been added
    ISBN-13: 9780137589784

    Understanding Software Dynamics ,1st edition

    Language: English

    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.
    • Measure and address issues associated with CPUs, memory, disk/SSD, networks, and their interactions
    • Fix programs that are always too slow, and those that sometimes lag for no apparent reason
    • Design useful observability, logging, and time-stamping capabilities into your code
    • Reason more effectively about performance data to see why reality differs from expectations
    • Identify problems such as excess execution, slow instruction execution, waiting for resources, and software locks
    Understanding Software Dynamics will be valuable to experienced software professionals, including application and OS developers, hardware and system architects, real-time system designers, and game developers, as well as advanced students.

    Register your book for convenient access to downloads, updates, and/or corrections as they become available. See inside book for details.
    Foreword xix
    Preface xxi
    Acknowledgments xxv
    About the Author xxvii


    Part I: Measurement 1
    Chapter 1: My Program Is Too Slow 3
    Chapter 2: Measuring CPUs 15
    Chapter 3: Measuring Memory 31
    Chapter 4: CPU and Memory Interaction 49
    Chapter 5: Measuring Disk/SSD 61
    Chapter 6: Measuring Networks 85
    Chapter 7: Disk and Network Database Interaction 111

    Part II: Observation 131
    Chapter 8: Logging 133
    Chapter 9: Aggregate Measures 141
    Chapter 10: Dashboards 157
    Chapter 11: Other Existing Tools 167
    Chapter 12: Traces 193
    Chapter 13: Observation Tool Design Principles 209

    Part III: Kernel-User Trace 217
    Chapter 14: KUtrace: Goals, Design, Implementation 219
    Chapter 15: KUtrace: Linux Kernel Patches 227
    Chapter 16: KUtrace: Linux Loadable Module 239
    Chapter 17: KUtrace: User-Mode Runtime Control 245
    Chapter 18: KUtrace: Postprocessing 249
    Chapter 19: KUtrace: Display of Software Dynamics 257

    Part IV: Reasoning 267
    Chapter 20: What to Look For 269
    Chapter 21: Executing Too Much 271
    Chapter 22: Executing Slowly 279
    Chapter 23: Waiting for CPU 289
    Chapter 24: Waiting for Memory 299
    Chapter 25: Waiting for Disk 307
    Chapter 26: Waiting for Network 319
    Chapter 27: Waiting for Locks 337
    Chapter 28: Waiting for Time 357
    Chapter 29: Waiting for Queues 361
    Chapter 30: Recap 383

    Appendix A: Sample Servers 387
    Appendix B: Trace Entries 391

    Glossary 397
    References 405
    Index 415