Beginning and experienced programmers will use this comprehensive guide to persistent memory programming. You will understand how persistent memory brings together several new software/hardware requirements, and offers great promise for better performance and faster application startup times - a huge leap forward in byte-addressable capacity compared with current DRAM offerings.
This revolutionary new technology gives applications significant performance and capacity improvements over existing technologies. It requires a new way of thinking and developing, which makes this highly disruptive to the IT/computing industry. The full spectrum of industry sectors that will benefit from this technology include, but are not limited to, in-memory and traditional databases, AI, analytics, HPC, virtualization, and big data.
What You'll Learn: Understand what persistent memory is, what it does, and the value it brings to the industry; Become familiar with the operating system and hardware requirements to use persistent memory; Know the fundamentals of persistent memory programming: why it is different from current programming methods, and what developers need to keep in mind when programming for persistence; Look at persistent memory application development by example using the Persistent Memory Development Kit (PMDK); Design and optimize data structures for persistent memory; Study how real-world applications are modified to leverage persistent memory; Utilize the tools available for persistent memory programming, application performance profiling, and debugging.
This open book is licensed under a Creative Commons License (CC BY). You can download Programming Persistent Memory ebook for free in PDF format (9.2 MB).
Table of Contents
About the Author
About the Technical Reviewer
About the Contributors
Introduction to Persistent Memory Programming
Persistent Memory Architecture
Operating System Support for Persistent Memory
Fundamental Concepts of Persistent Memory Programming
Introducing the Persistent Memory Development Kit
libpmem: Low-Level Persistent Memory Support
libpmemobj: A Native Transactional Object Store
libpmemobj-cpp: The Adaptable Language - C++ and
pmemkv: A Persistent In-Memory Key-Value Store
Volatile Use of Persistent Memory
Designing Data Structures for Persistent Memory
Debugging Persistent Memory Applications
Enabling Persistence Using a Real-World Application
Concurrency and Persistent Memory
Profiling and Performance
PMDK Internals: Important Algorithms and Data Structures
Reliability, Availability, and Serviceability (RAS)
Remote Persistent Memory
How to Install NDCTL and DAXCTL on Linux
How to Install the Persistent Memory Development Kit (PMDK)
How to Install IPMCTL on Linux and Windows
Java for Persistent Memory
The Future of Remote Persistent Memory Replication