English | 2020 | ISBN: 1138053540 | 408 Pages | PDF | 19 MB
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.