Efficiency is a crucial concern across computing systems, from the edge to the cloud. Paradoxically, even as the latencies of bottleneck components such as storage and networks have dropped by up to four orders of magnitude, software path lengths have progressively increased due to overhead from the very frameworks that have revolutionized the pace of information technology. Such overhead can be severe enough to overshadow the benefits from switching to new technologies like persistent memory and low latency interconnects.
Resource Proportional Software Design for Emerging Systems introduces resource proportional design (RPD) as a principled approach to software component and system development that counters the overhead of deeply layered code without removing flexibility or ease of development. RPD makes resource consumption proportional to situational utility by adapting to diverse emerging needs and technology systems evolution.
- Analysis of run-time bloat in deep software stacks, an under-explored source of power-performance wastage in IT systems
- Qualitative and quantitative treatment of key dimensions of resource proportionality
- Code features: Unify and broaden supported but optional features without losing efficiency
- Technology and systems evolution: Design software to adapt with changing trade-offs as technology evolves
- Data processing: Design systems to predict which subsets of data processed by an (analytics or ML) application are likely to be useful
- System wide trade-offs: Address interacting local and global considerations throughout software stacks and hardware including cross-layer co-design involving code, data and systems dimensions, and non-functional requirements such as security and fault tolerance
- Written from a systems perspective to explore RPD principles, best practices, models and tools in the context of emerging technologies and applications
This book is primarily geared towards practitioners with some advanced topics for researchers. The principles shared in the book are expected to be useful for programmers, engineers and researchers interested in ensuring software and systems are optimized for existing and next generation technologies.
The authors are from both industry (Bhattacharya and Voigt) and academic (Gopinath) backgrounds.
Table of Contents
Introduction. The Problem of Software Bloat. Does Lean Imply Green? How Bloat in Software Impacts System Power Performance. Resource Proportional Software Design Principles to Reduce Propensity for Bloat. Resource Proportional Design Strategies I. Resource Proportional Design Strategies: II. Resource Proportional Design Strategies III. Resource Proportional Programming for Persistent Memory Applications. Resource Proportionality in Memory Speed Fabrics. Applying Resource Proportional Design Principles to a Deeply Layered Stack. Data Centric Resource Proportional Systems Design. Adapting the Systems Software Stack to a Changing Paradigm of Uniform Logical Access to a Radically Non-Uniform System. Bridging the Gap. Conclusions and Call to Action.
Suparna Bhattacharya is a Distinguished Technologist at Hewlett Packard Enterprise. She has
spent most of her career in systems software development and research (5 years at HPE preceded by 21 years at IBM), including several enjoyable years as a well-recognized open source contributor to the Linux kernel. Her recent work advances the use of nonvolatile
memory technologies and cross-layer optimization in storage and hyper-converged systems for edge to core data services,containers, machine learning, and artificial intelligence. Suparna is an
ACM India eminent speaker and has served on program committees for ASPLOS, OOPSLA, MASCOTS, ECOOP, HotStorage, and USENIX FAST. She holds a B.Tech from IIT Kharagpur (1993) and a (late-in-life) PhD with a best thesis award from the Indian Institute of Science (2013).
Kanchi Gopinath is a professor at Indian Institute of Science in the Computer Science and Automation
Department. His research interests are primarily in the computer systems area (Operating Systems,
Storage Systems, Systems Security, and Systems Verification). He is currently an associate editor of
IEEE Computer Society Letters and was earlier an associate editor of ACM Transactions on Storage
(2009-2018). His education has been at IIT-Madras (B.Tech’77), University of Wisconsin, Madison (MS’80) and Stanford University(PhD’88). He has also worked at AMD (Sunnyvale) (’80-’82), and as a PostDoc (’88-’89) at Stanford.
Doug Voigt is a retired Distinguished Technologist who worked for HP and HPE storage for his entire
40 year career. He has developed firmware and software for disk controllers, disk arrays, and storage
management. He has led HP and HPE virtual array advanced development projects and strategy since 1990. For the last 10 years his focus has been on non-volatile memory systems. Throughout his career, Doug was a strong proponent of industry standards. He has been a member the Storage Network Industry Association (SNIA) since 2009. He served on the SNIA board of directors, technical council, and as co-chair of the NVM Programming Technical Working Group. Doug has over
50 patents, mostly in the areas of virtual arrays and persistent memory. Doug’s hobbies include music, photography, and reading science fiction/fantasy.