Persistent Memory Programming Tools

The Persistent Memory Development Kit (PMDK), which is formerly known as NVML, is a growing collection of libraries which have been developed for various use cases, tuned, validated to production quality, and thoroughly documented.

Persistent memory programming is fairly new. And currently, there are not many persistent memory aware tools available for developers. In this video, I'll tell you about some open source persistent memory tools that will help you manage the persistent memory in the system, check for programming errors related to persistent memory, and benchmark the performance of programs built using the Persistent Memory Development Kit (PMDK) libraries. I am Usha Upadhyayla from Intel. Let's get started

The PMDK, provides developers with easier and less error-prone ways to do persistent memory programming. PMDK exposes persistent memory regions as memory pools. And the first tool I'll be talking about is called pmempool.

Pmempool is a utility for management and offline analysis of persistent memory pools, including adding or removing replicas. Potential users for this tool include system administrators for offline creation, analysis, manipulation of the pools, and recovery from data corruption of these pools. Application developers may use this tool in debugging and testing applications built using PMDK.

The second tool is ndctl. It's a Linux* command line utility for managing nonvolatile memory device subsystem. ndctl is used to manage persistent memory in the system, and the operations supported by the tool include capacity provisioning, enumerating, enabling, and disabling of these devices.

Daxctl is another utility that provides commands to enumerate and provision device dax namespaces. Device dax allows memory ranges to be allocated and mapped without need for a file system. This tool allows backup or copying content of persistent memory region to another dax device.

Persistent memory programming is all about ensuring data persistence and data consistency. Pmemcheck is a tool built on Valgrind* framework that helps validate the correctness of the stores made to persist in memory. This tool also supports several options to detect the stores that were not flushed to persistence as well as the modifications made outside of transactions and redundant or unnecessary cache flushes.

The PMDK libraries have built-in instrumentation for pmemcheck, but the tool can also be used with applications that are not built on PMDK. There are also benchmarking tools like pmembench and fio. Pmembench helps developers contributing to PMDK to evaluate performance improvements or to catch potential regressions. Fio has been extended with a couple of persistent memory-oriented engines to evaluate performance of the applications re-architected to work with byte addressable persistent memory.

Also, Intel is developing both performance analysis tools and error checking tools for persistent DIMMs based on 3D XPoint™ Memory Media. You could start now with Intel® VTune™ Amplifier's Memory Analysis feature to identify data structures that can benefit from larger memory.

Thank you for watching this introduction to persistent memory tools. We hope that you get a chance to explore the tools on GitHub* and provide us feedback. Please don't forget to like this video and subscribe.