Å·±¦ÓéÀÖ

Jump to ratings and reviews
Rate this book

Understanding Software Dynamics

Rate this book
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.
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.

464 pages, Paperback

Published December 10, 2021

45 people are currently reading
471 people want to read

About the author

Richard L. Sites

7Ìýbooks5Ìýfollowers

Ratings & Reviews

What do you think?
Rate this book

Friends & Following

Create a free account to discover what your friends think of this book!

Community Reviews

5 stars
14 (42%)
4 stars
11 (33%)
3 stars
7 (21%)
2 stars
1 (3%)
1 star
0 (0%)
Displaying 1 - 10 of 10 reviews
Profile Image for Sebastian Gebski.
1,151 reviews1,256 followers
Read
May 19, 2022
I'm not sure whether I am able to rate it objectively ...

On one hand, it's IMPRESSIVE. The author dives so deep, that many of the details covered are simply fascinating. But TBH it's the knowledge 99% of software engineers would never ever need. He's talking about performance and observability on such a low level (core cycles, memory paging, cache page alignment) that only creators of very low-level tools will appreciate it.

It's not an easy read. It took me around a month to get through the whole book, driven primarily by my geekiness, but I don't think I'll be able to apply anything of the gained knowledge anytime soon (so I'll probably forget all of that within a month).

It's not that I regret the time spent on USD, but ... it's really hard to recommend it. Unless you're about to build a database engine in C. Or a garbage collector. Or a compiler. :)

Profile Image for Emre Sevinç.
173 reviews422 followers
October 15, 2022
This book deserves all the praise! It has a laser-sharp focus and delivers with a super high signal-to-noise ratio. It's been a long time since I've read such a dense book that is also such a joy to read that simply and logically flows from one chapter to the other.

The first 13 chapters gives a thorough and superb introduction to software performance engineering and analysis for the modern data center software. This is like a masterclass: the author assumes the reader has the basics covered with respect to modern computer architecture, as well as fundamental concepts about statistics and probability. There are high quality references for those that need to get up to speed and the book proceeds in a very linear, pedagogical manner, making it a joy to read. I could even recommend some of the chapters to data scientists because those chapters include valuable lessons about how to visualize critical set of data points, especially when there are lot of them.

The great introduction in the first 13 chapters is followed by the very good description of the KUtrace (Kernel-User trace) tool developed by the author. This is a tour de force of technical writing: every technical writer can learn a thing or two from the author who explains what kind of changes he did to Linux kernel and why he did that.

The book finishes with mind-blowing case studies that demonstrate how the author used KUtrace to analyze and solve various performance mysteries. What a piece of technical writing! I mean, crazy good!

Now, you might ask yourself, “do you recommend this book?� After all that praise, I will probably surprise you by saying, “if you’re asking that question, you probably don’t need the book.� I mean, if you are a software engineer like Mikael Ronström (of NBD, MySQL Cluster, and RonDB fame), or Mark Callaghan (of RocksDB fame), then you’ll probably make very good use of this book (see and ). But then you’re like 1% of %1 of the software engineers out there. From another perspective, it would also be safe to say that if you internalized the knowledge in this book (as well as Gregg’s ), then you’d be worth your weight in gold, but then again, only a handful organizations would really need and therefore could easily afford such a person. And if you're such a person, then you are either reading this book, or have already read it. ;)
Profile Image for Alpha.
449 reviews10 followers
Read
May 5, 2022
Read (skimmed) this pretty much just on Dan Luu's recommendation. I can't really rate it fairly, since most of the book is far outside of anything I'd do in my day-to-day. That being said, there are still really good nuggets in it even for me, who never needs to worry about CPU caches, and it is extremely thorough on improving low-level performance.
Profile Image for Bugzmanov.
230 reviews89 followers
November 26, 2023
It's hard to give a fair rating for this one.

On one hand I'm at awe of breadth and depth of this book. Out of all books about software performance, this one goes deep. Really deep. "Here is the experiment of how to measure L1 associativity level" deep. (Most books on software performance don't even mention the fact that CPU caches have associativity sets)

But on the other hand, the writing style leaves a lot to be desired. Almost every time I've stumbled upon something I didn't already know i had to fallback to "rephrase this please" chatgpt prompt or just google for alternative explanations. The book assumes pretty high level of familiarity with the topics but also tries to dip into explanation. I wish it would just referenced learning materials instead of providing short and cryptic paragraphs that are not really helpful for newcomers.

The second half of the book is dedicated to custom tracing tool. KUTrace is super cool and the design walk-through is excellent. The demo of its powers for troubleshooting in the last chapters leaves you salivating. But from a pragmatic standpoint convincing people that there is a need to patch linux kernel is a royal pain in all body parts. For 99% of regular software shops this is a non-starter.
Honestly, it's a bitter-sweet ending to an uneven book.

My conclusion: the book is excellent for skimming and learning about gaps in your knowledge, but probably not so great for covering those gaps
Profile Image for Szymon Kulec.
206 reviews114 followers
January 11, 2023
2 out of 5, closer to 1.6.

The author has clearly massive experience in the area of performance and optimizations. Still, the delivery and the presentation of the topics is far from ideal. I love performance but I found it terribly hard to follow. The mysteries that are solved are not that interesting and sometimes look like provided forcefully. The ideas of tracing or dashboards provide some value and interesting insights just to be covered with another mystery or something.

This book would greatly benefit from a total reorganization or even splitting into different areas and cutting out some of the mystery stuff. Tracing/telemetry/logging, kernel-user mode, statistics. That would be so much better.

I need to add one thing about images (especially charts) look like copy pasted with fonts being from another world. This drove me nuts when reading it.

If you want to learn about this stuff, I'd propose you a better list containing: , (if you're into .NET) and . This is a much better set, much better constructed and you'll learn much more than from this book.
1 review
Currently reading
April 20, 2024
The second portion of the book focuses on bespoke tracing tools. KUTrace is quite cool, and the design walkthrough is fantastic. The demonstration of its troubleshooting capabilities in the last chapters makes you salivate. However, convincing people that the Linux kernel has to be patched is a royal pain in all body parts. This is a non-starter for 99 percent of ordinary software firms.
Honestly, it's a bittersweet conclusion to an unsatisfactory novel.
Profile Image for Ruslan Diachenko.
76 reviews3 followers
Read
September 3, 2024
Super specialized book. I found the first part on tail latency and resources to be measured the most important because this is something most engineers face daily. However, the rest of the book was dedicated to the observation tool, KUtrace. It discussed how to design such a tool and use it to identify performance issues. This type of knowledge is so specialized that I don't see how I can apply it in practice, considering I'm not a performance engineer. I'm definitely not the target audience for the parts following the first one, so no rating.
Profile Image for Denis Romanovsky.
214 reviews
August 6, 2022
Very good on performance measurement and bottlenecks in software. Though, a bit too technical for me.
Profile Image for Phil Eaton.
113 reviews287 followers
September 8, 2024
An excellent, but challenging and sometimes difficult to follow, book to build an intuition for how machines actually work. And to build a better intuition for benchmarking.
Displaying 1 - 10 of 10 reviews

Can't find what you're looking for?

Get help and learn more about the design.