Open, Load, Store!

Master Persistent Memory Programming
with our Comprehensive Guide

Coming Soon in Print and Digital Formats

Programming Persistent Memory: A Comprehensive Guide for Developers is published through Apress Open using a Creative Commons Attribution license.  The eBook will be freely available online and accessible to everyone.  In addition to the FREE digital version, a print edition is offered for those readers who want a physical copy.

Start Reading Now

EMail Me When It's Ready!

We promise to only use your email address for the sole purpose of keeping you updated when new chapters are released, when the FREE eBook is published, and to possibly request your feedback on our work.

This is the first book to fully explain the revolutionary persistent memory technology and how developers can fully utilize it. 

Programming Persistent Memory:
A Comprehensive Guide for Developers

This is a comprehensive guide to persistent memory programming, targeted towards experienced programmers. 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.

Programming Persistent Memory describes the technology and why it is exciting the industry. It covers the operating system and hardware requirements as well as how to create development environments using emulated or real persistent memory hardware. The book explains fundamental concepts, provides an introduction to persistent memory programming APIs for C, C++, Javascript, and other languages, discusses RMDA with persistent memory, reviews security features, and presents many examples. Source code and examples that you can run on your own systems are included.

What You Will 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
  • Learn 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
  • Persistent memory application development by example using the Persistent Memory Development Kit (PMDK)
  • Designing and optimizing data structures for persistent memory
  • How real-world applications are modified to leverage persistent memory
  • Utilize the tools available for persistent memory programming, application performance profiling, and debugging

This book provides vendor-neutral coverage of persistent memory technologies, including reference to existing real-world products and services

Table of Contents

  1. Introduction to Persistent Memory - Introduces persistent memory and dips our toes in the water with a simple persistent key-value store example using libpmemkv.  Read it now!
  2. Persistent Memory Architecture - Describes the persistent memory architecture and focuses on the hardware requirements developers should know. Read it now!
  3. Operating System Support for Persistent Memory - Provides information relating to operating system changes and features and how persistent memory is seen by the OS.  Read it now!
  4. Fundamental Concepts of Persistent Memory Programming - Builds on the first three chapters and describes the fundamental concepts of persistent memory programming. Read it now!
  5. Introducing the Persistent Memory Development Kit (PMDK) - Introduces the Persistent Memory Development Kit (PMDK), a suite of libraries to assist software developers. Read it now!
  6. libpmem: Low-Level Persistent Memory Support - Decribes and shows how to use libpmem from the PMDK, a low-level library providing persistent memory support. Read it now!
  7. libpmemobj: A Native Transactional Object Store - Provides information and examples using libpmemobj, a C native object store library from the PMDK. Read it now!
  8. libpmemobj++: The Adaptable Language - C++ and Persistent memory - Shows the C++ libpmemobj++ store from the PMDK, similar to libpmemobj. Read it now!
  9. pmemkv: A Persistent In-Memory Key-Value Store - Expands upon the introduction to libpmemkv from Chapter 1 with a more in-depth discussion using examples. Read it now!
  10. Volatile Use of Persistent Memory - Is for those who want to take advantage of persistent memory, but do not require data to be stored persistently. libmemkind is a user extensible heap manager built on top of jemalloc which enables control of memory characteristics and a partitioning of the heap between kinds of memory, including persistent memory. libvmemcache is an embeddable and lightweight in-memory caching solution. It's designed to fully take advantage of large capacity memory, such as Persistent Memory with DAX, through memory mapping in an efficient and scalable way. Read it now!
  11. Designing Data Structures for Persistent Memory - Provides a wealth of information for designing data structures for persistent memory. Read it now!
  12. Debugging Persistent Memory Applications - Introduces tools and walks through several examples for how software developers can debug persistent memory enabled applications. Read it now!
  13. Enabling Persistence in a Real World Application - Discusses how a real world application was modified to enable persistent memory features. Read it now!
  14. Concurrency and Persistent Memory - Describes how concurrency in applications should be implemented for use with persistent memory. Read it now!
  15. Profiling and Performance - Teaches performance concepts and demonstrates how to use the Intel® VTune suite of tools to profile systems and applications before and after code changes are made. Read it now!
  16. PMDK Internals: Algorithms and Data Structures Underpinning PMDK - Takes us on a deep dive through some of the PMDK internals. Read it now!
  17. Reliability, Availability, and Serviceability (RAS) - Describes the implementation of Reliability, Availability, and Serviceability (RAS) with the hardware and operating system layers. Read it now!
  18. Remote Persistent Memory - Discusses how applications can scale-out across multiple systems using local and remote persistent memory. Read it now!
  19. Advanced Topics - Describes things such as NUMA considerations, using volume managers, and more on CPU machine instructions. Read it now!

The book describes a set of development libraries and tools designed to standardize and streamline work for developers looking to create or adapt an application to use persistent memory


When will the book be available?

We are expecting the book will be available before the end of 2019. Leave your name and email address and we will let you know when the book is available in digital and print form. We'll also inform you when new chapters are available for preview.

Is the book really FREE?

Yes!  Programming Persistent Memory: A Guide for Developers is published through Apress Open using a Creative Commons Attribution license. The eBook will be freely available online and accessible to everyone. In addition to the FREE digital version, a print edition is offered for those readers who want a physical copy.  The printed copy will not be free.

Why are your releasing chapters before the book is published?

We want to provide developers with the information as early as possible, so we decided to release some of the chapters prior to publication so you can begin learning and developing now.

We also want your feedback! Please read the early preview chapters and let us know what you think. We've created a Google Forum thread to discuss the book and chapter content. For source code problems, please create a new issue on our GitHub project repository

I found an issue with the source code or chapter content

Thank you! We've created a Google Forum thread to discuss the book and chapter content and to report issues. For source code bugs, please create a new issue on our GitHub project repository and we'll take care of it.

I have a persistent memory question

We are here to help.  You can find a lot of good information in these locations:
- Intel Persistent Memory Developer Zone -
- Persistent Memory Programming Home -
- Persistent Memory Documentation -

If you can't find an answer, please ask in the Persistent Memory Google Forum

Spread the persistent word!

© Copyright 2019 - All Rights Reserved