Welcome! Wondering where to start, or looking for just the right piece of content to answer a specific question you’ve got, this list of resources for getting started should help! Just like in Persistent Memory Learning Path for Sys Admins, we start with an introduction to what is Persistent Memory (PMem). Then in this guide we cover operating modes, the persistent memory programming model, tips for profiling your application, we introduce the PMDK, and wrap up with some Hello-World examples plus other helpful how-tos. Let's go!
Introduction
What is Persistent Memory: This three-minute high-level video covers what persistent memory is, how it works, and what makes it so great.
Introduction to PMEM on pmem.io covers the Storage Network Industry Association (SNIA) NVM programming model and introduces key concepts for application developers.
The Three-Part Learn More Series: If you have a bit of time, and a desire to know the nitty gritty, the three-part Learn More series covers in depth everything you need to know.
- Part 1 covers PMEM concepts to be aware of: architecture, programming model, memory mapping, transactions, and Reliable availability and Serviceability (RAS).
- Part 2 covers PMEM architecture in depth.
- Part 3 is Operating System Support for Persistent Memory.
Operating Modes of PMEM: This 6-minute video on Operating Modes shows the power of each mode and which situations to use each one.
Get Started Video: If you’re setting up your own system, this helpful 10-minute quick start video shows how to specify and set each mode, configure filesystems and namespaces, and manage dimms.
Programming Model
Introducing Intel PMEM Programming Model: Eduardo Berrocal introduces the Storage Network Industry Association (SNIA) NVM programming model, covers PMEM aware filesystems, and touches on the Persistent Memory Developers Kit and the other resources available at pmem.io.
Volatile Uses of Persistent Memory: is a great deep dive on volatile uses of persistent memory. For a condensed 3-minute version, see the memkind video below.
Managing Volatile Memory with Memkind: The key points of memkind are summarized in this 3 minute video by Kelly Lyon if you prefer a quick taste.
Profiling
Optimize Performance for PMEM Applications: The first 20 minutes of this presentation covers VTune Amplifier and then gives a walkthrough of how to use it. When deciding if PMEM is right for your application, or to spot opportunities for further optimization, you may want to profile your application.
Profiling with Intel VTune Amplifier: this video introduces VTune amplifier and demonstrates how to find hotspots in your application.
Programming
The Persistent Memory Development Kit (PMDK) is a collection of libraries and tools for System Administrators and Application Developers to simplify managing and accessing persistent memory devices. Tuned and validated on both Linux and Windows, the libraries build on the Direct Access (DAX) feature which allows applications to directly access persistent memory as memory-mapped files.
Introducing the PMDK is a quick introduction of each library, what it is, and when to use each one.
Persistent pointers and pools are two important concepts for developers. A few of the above resources mention these concepts at a high level, but these two articles demonstrate the specifics about how to use these in your application.
How To
“Hello World” for C, C++ and Java: PMDK offers libraries for using persistent memory with various languages. This filtered search lists the “hello world” examples for programming in C with libpmemobj, libpmem, and libpmemblk, Java with llpl and pcj, and C++ with libpmemobj++.
Use Python Bindings to Implement a Key-Value Store Using pmemkv: This code sample walks readers through exactly how to use pmemkv and implement a key-value store in your own application.
Create C++ Applications with PMDK: A comprehensive overview of how to program for persistent memory in C++ is covered in this talk by Piotr Balcer. All the basics are covered including root objects, persistent pointers and transactions and each has an associated code snippet to demonstrate its usage.
Implement a simple PMEM Cache: this example, though simple, shows the power of persistent memory when used as a cache. This can and has be scaled by large databases to provide quicker restart times upon planned and unplanned downtime.
How to Find PMEM Programming Errors Using Intel Inspector – Persistence Inspector: Intel Inspector allows you to discover issues earlier in the program life cycle. Get a copy of Intel® Parallel Studio XE and start checking your Persistent workloads today.