Skip to main content

Introducing new learning courses and educational videos from Apress. Start watching

  • Book
  • Open Access
  • © 2020

Programming Persistent Memory

A Comprehensive Guide for Developers



  • The first book to fully explain the revolutionary new technology of persistent memory programming

  • Offers vendor-neutral coverage of persistent memory technologies, including reference to existing real-world products and services

  • 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

Buying options

Softcover Book USD 49.99
Price excludes VAT (USA)

Table of contents (19 chapters)

  1. Front Matter

    Pages i-xxxi
  2. Introduction to Persistent Memory Programming

    • Steve Scargall
    Pages 1-10Open Access
  3. Persistent Memory Architecture

    • Steve Scargall
    Pages 11-30Open Access
  4. Operating System Support for Persistent Memory

    • Steve Scargall
    Pages 31-54Open Access
  5. Fundamental Concepts of Persistent Memory Programming

    • Steve Scargall
    Pages 55-61Open Access
  6. Introducing the Persistent Memory Development Kit

    • Steve Scargall
    Pages 63-72Open Access
  7. libpmem: Low-Level Persistent Memory Support

    • Steve Scargall
    Pages 73-79Open Access
  8. libpmemobj: A Native Transactional Object Store

    • Steve Scargall
    Pages 81-109Open Access
  9. pmemkv: A Persistent In-Memory Key-Value Store

    • Steve Scargall
    Pages 141-153Open Access
  10. Volatile Use of Persistent Memory

    • Steve Scargall
    Pages 155-186Open Access
  11. Designing Data Structures for Persistent Memory

    • Steve Scargall
    Pages 187-206Open Access
  12. Debugging Persistent Memory Applications

    • Steve Scargall
    Pages 207-260Open Access
  13. Enabling Persistence Using a Real-World Application

    • Steve Scargall
    Pages 261-276Open Access
  14. Concurrency and Persistent Memory

    • Steve Scargall
    Pages 277-294Open Access
  15. Profiling and Performance

    • Steve Scargall
    Pages 295-312Open Access
  16. PMDK Internals: Important Algorithms and Data Structures

    • Steve Scargall
    Pages 313-331Open Access
  17. Reliability, Availability, and Serviceability (RAS)

    • Steve Scargall
    Pages 333-346Open Access
  18. Remote Persistent Memory

    • Steve Scargall
    Pages 347-371Open Access
  19. Advanced Topics

    • Steve Scargall
    Pages 373-387Open Access

About this book

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.   

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’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

Who This Book Is For

C, C++, Java, and Python developers, but will also be useful to software, cloud, and hardware architects across a broad spectrum of sectors, including cloud service providers, independent software vendors, high performance compute, artificial intelligence, data analytics, big data, etc. 



  • Persistent Memory
  • Persistent data
  • Intel
  • Persistent Memory Developer Kit
  • PMDK
  • Intel Optane DC Persistent Memory
  • RDMA
  • Storage hierarchy
  • Low latency
  • Memory
  • DRAM
  • Non-volatile random-access memory
  • PMEM programming

Authors and Affiliations

  • Santa Clara, USA

    Steve Scargall

About the author

Steve Scargall is a persistent memory software/cloud architect within Intel’s Data Center Group (DCG). He contributes to the SNIA NVM Programming Technical Work Group, PMDK, NDCTL, and other open sources projects. With more than 18 years of enterprise application and filesystem IO performance analysis, Steve now works on the exciting and disruptive bleeding edge of persistent memory application design solutions. He works with ISVs and CSPs to enable and deliver persistent memory solutions.  

Bibliographic Information

Buying options

Softcover Book USD 49.99
Price excludes VAT (USA)