Persistent Memory
Develop innovative solutions with Intel® Optane™ persistent memory to transform your applications and your data center.
Programming Persistent Memory
A Comprehensive Guide for Developers
Explore
Step 1: Learn About Persistent Memory Uses
Explore how this technology can address challenges with use case memory.
Step 2: Analyze Your Application
Use the Platform Profiler for Intel® VTune™ Profiler to learn how your application can benefit from large capacity persistent or volatile memory.
Step 3: Configure Your Platform
Provision Intel Optane persistent memory.
Step 4: Develop Software with the Persistent Memory Development Kit (PMDK)
Use this set of libraries and tools to begin developing persistent memory solutions.
Step 5: Prepare for Compute Express Link (CXL)*
CXL* is designed to be the future for memory tiering with a consortium of companies behind the initiative. These assets can help you make the transition:
Operating Modes
Intel Optane persistent memory modules support two operating modes:
- Memory Mode enables an application to operate on a large pool of volatile memory without modification.
- App Direct Mode offers a low-latency, byte-addressable pool of persistent memory.
Use the information here to help modify or develop an application with low latency and data persistence.
Key Concepts
Programming to byte-addressable persistent memory requires new ways of thinking about data persistence and consistency.
About the PMDK
The PMDK is an open source collection of libraries and tools designed to simplify development, debugging, and management of persistent memory-aware applications.
Configure Development Environments
Linux*
Options include emulation or a persistent memory-aware hypervisor, such as QEMU or VMware vSphere* virtual machine.
Windows*
Choose from several support options for Windows Server* 2019. Access guidance from Microsoft* for Windows Server 2016.
Set Up the PMDK
Download binaries or build from the latest source. The PMDK is sent to many Linux* distribution package repositories.
Evaluate
Analyze the entire system to identify configuration issues and workloads that can benefit from persistent memory or analyze individual applications to determine optimization opportunities.
Design
Plan for persistence with these step-by-step guides that illustrate programming concepts.
Get High-Level Language Support
Learn PMDK basics with introductory tutorials and code samples.
C
C++
Java*
Hello World for Persistent Collections for Java* (PCJ)
Hello World for Low Level Persistence Library (LLPL)
Debug & Troubleshooting Tools
Tools from Intel
Find persistence errors quickly with Intel® Inspector—Persistence Inspector.
Intel® VTune™ Profiler
This premier performance profiler has new capabilities to help you optimize your persistent memory programs.
Analyze systems over longer intervals. Find out which workloads can benefit from larger memory allocations and which system configuration better fits the workloads.
Locate code that is sensitive to memory bandwidth and latency issues. Identify hot, warm, or cool data to optimize memory usage and placement.
Identify opportunities to replace disk or SSD-based storage with faster persistent memory.
Intel® Inspector—Persistence Inspector
This tool finds persistence errors quickly to make software fast and reliable. It checks that all caches only flush once to persistent memory and written in the correct order.
Open Source Tools
Manage persistent memory modules, check for programming errors, and evaluate performance.
Videos
Handling Memory Errors in Persistent Memory Programming
Persistent Memory Programming Tools
Testing PMDK Using FIO Workloads
Webinars
Persistent Memory Development Kit (PMDK)
This open source kit includes a set of libraries and tools to support software development for this new technology.
Boost Your C++ Applications with Persistent Memory
This code sample demonstrates using the C++ bindings of libpmemobj to convert a simplified version of grep, the Unix* command-line utility, to use persistent memory.
Implement a Fault-Tolerant Algorithm
This code sample uses libpmemobj C++ bindings to demonstrate how to implement fault tolerance in a PMEM version of the famous MapReduce algorithm.
Introduction to Persistent Collections for Java*
Learn how to instantiate, store, and fetch persistent data after a power cycle.
Create a Persistent Memory-Aware Queue
Make queue operations transactional to prevent persistent memory corruption. Core concepts are demonstrated in sample code.
Panaconda: A Persistent Memory Version of the Game Snake
This code sample demonstrates PMDK APIs for pools, pointers, and transactions, as well as shows you how to build and run the game.
PMAN: A Persistent Memory Version of the Game Pac-Man*
The PMAN code sample highlights program design, persistent memory pools, pointers, and transactions. Like Panaconda, you can run the example.