In modern computer systems, because of the remarkable progress in multi-processing nodes, graphics processing units (GPUs), and multi-layer caching and their interactions with other storage and communication components, the level of complexity has increased considerably. It makes latency control and performance realization a critical matter, especially for software system management that involves time-sensitive applications and data center environments. More consideration should be given to the tiny details of the functionality of the components in order to understand their operations and utilize the machine in an optimized manner. By sharing his experiences in this book, Sites tries to unveil these details in a system software monitoring style rather than an algorithmic analysis way.
Software dynamics is a broad subject that mostly implies the dynamism of algorithmic analysis for performance, latency, and related spatial and temporal issues. However, this book provides a new approach to evaluating software behavior in order to encounter performance glitches in an experimental and practical way. It explains how to deploy monitoring tools to evaluate the main components in a computing environment: central processing units (CPUs), memory, disk/solid-state drive (SSD), network, and software locks, as well as their interconnections.
The first chapters explain the raison d’être of the components’ non-performant operations and how they influence the overall system throughput, especially when it comes to unexpected delays and non-envisaged performance degradation. The mechanism for delay estimation by CPU cycles, knowledge of compiler behavior, and machine instructions to write effective code are explained; the impact of memory hierarchy, cache organization, miss or hit ratio and the influence of cache size in the interaction between cache and virtual memory, refreshing policy, and using remote procedure calls (RPCs) for measuring performance in networking are illustrated. Different registering, event logging, and monitoring tools are covered next: counter, profile, traces, logging, and related Linux tools are featured, including how these tools can be utilized to gain insight into unexpected behaviors, bottlenecks, and the burden load. Shedding light in the dark, the details of kernel-user context switching in the operating system (OS) are detailed. Using a monitoring approach and KUtrace Linux utility, the book illustrates how to unveil the impact of context switching on software execution optimality. The last part explains that all of these analysis methods are supposed to detect the causes. It shows readers how to use the mentioned techniques and tools to remedy those malfunctions that cause long-tail latencies and performance degradation.
Although the book is not a theoretical monologue, its value is apparent. Because of its experimental nature, it can be used as a reference when monitoring performance in an advanced undergraduate computer system lab. Due to its emphasis on monitoring hardware components and loose relevance to algorithmic software topics, the title is somewhat ambiguous; moreover, the book could be composed in a more concise fashion. It is recommended for readers interested in system software, especially data center environments.
More reviews about this item: Amazon, Goodreads