I started reading this book in December, and am still reading it as of March 2022. I needed that much time as there is a lot to digest in Sites' book. Also, I've enjoyed reading it, and like other books I enjoy reading, I often put it down when I've finished a section I want to spend more time thinking about.
Sites strongly encourages readers to estimate how long their systems should take to complete transactions. He starts with simple arithmetic program examples, running long loops to make operations requiring nanoseconds take long enough to easily measure, then pointing out where compiler optimizations will completely wipe out loops that do nothing further with their variables. In chapter five, he starts with a matrix operation, one that is memory bound, and shows how interference with how cache lines get chosen slows down the matrix multiplication. In the end, Sites has reorganized how data has been accessed, improving performance by an order of magnitude. He then challenges readers to improve his sample program to squeeze out another 20% performance gain as an exercise.
In Part two, observations, Sites provides clear information about how to log, collect, and display information. Following his theme of measurement, he points out how best to log data so as to avoid slowing down the very systems you need to observe. The focus is on being able to instrument systems in production, where the maximum slowdown acceptable must be 1% or less. Doing so involves how data is collected, how often, and how it is stored, with this strict focus on usability and efficiency. He goes as far as describing how data best gets used in dashboards.
Mixing programs that run well against themselves likely will encounter little if any interference.
That was in a chapter examining interference between compute-bound programs. It appears obvious, but so do a lot of things you can read in this book. And they aren't really obvious until they have been explained.
The HTML files created using the toolchain contain an incredible amount of information. The diagrams use symbols, text labels, 256 colors, and even Morse code, and it takes practice to make sense out of what you are seeing. The illustrations in both the print and electronic versions of the book are in color, but I sometimes need to magnify figures so I can see the details I was missing. For example, small, pointed triangles indicating the IPC at different points overlapped so closely that I couldn't make them out without magnification. Younger eyes may not have any trouble with the illustrations. When working with the HTML files in a browser, you can zoom in, mark areas of interest, as well as select other ways to display the data.
Understanding Software Dynamics
by Richard L. Sites
Addison-Wesley, 2022, 465 pages
ISBN-13: 978-0-13-758973-9