PMem Repositories

Here is a list of all the repositories in the pmem organization in GitHub under

PMDK Repositories

The Persistent Memory Development Kit is a collection of libraries and tools. The source is spread across many repositories. Components are separated like this to help with the logistics of parallel development and asynchronous delivery.

Components Focused on Persistence:

Repo Name Description Microsite
pmdk PMDK Core C libraries and tools:
  • libpmem
  • libpmem2
  • libpmemobj
  • libpmemblk
  • libpmemlog
  • libpmempool
  • libpmemset (in development)
  • librpmem
  • pmempool utility
  • Core PMDK C examples
  • Web content for (in gh-pages branch)
libpmemobj-cpp C++ bindings & containers for libpmemobj
llpl Low-Level Persistence Library for Java
libpmemobj-js JavaScript bindings for libpmemobj -
miniasync C low-level concurrency library for asynchronous functions
pmemstream Logging data structure (with stream-like access to data)
pmemkv Transactional Key-Value Store: Top-Level C & C++ API
pmemkv-bench Benchmarks for pmemkv -
pmemkv-python Python bindings for pmemkv
pmemkv-java Java bindings for pmemkv
pmemkv-nodejs NodeJS bindings for pmemkv
pmemkv-ruby Ruby bindings for pmemkv
pmdk-convert Conversion tool for PMDK pools pmdk-convert
valgrind Enhanced Valgrind containing the pmemcheck plugin
rpma C library to simplify accessing persistent memory (PMem) on remote hosts over Remote Direct Memory Access (RDMA)

Components Focused on Volatile Usages of pmem:

Repo Name Description Microsite
memkind General-purpose malloc/free-style library
(Actually lives outside the pmem GitHub org since it has a life outside of pmem as well)
vmemcache A buffer based LRU cache
vmem libvmem, the predecessor to libmemkind.
Maintenance-only -- use libmemkind for all new development.

Experimental PMDK components (not yet ready for production use):

Repo Name Description Microsite
pcj Persistent Collections for Java -
pmemfile Userspace implementation of file APIs using pmem -
syscall_intercept Syscall intercepting library used by libpmemfile -
vltrace Tool for tracing syscalls -
pynvm Experimental prototype Python bindings for libpmemobj -


Repo Name Description Microsite
dev-utils-kit Tools used for development of projects under pmem organization -
autoflushtest Basic data integrity test for platforms with flush-on-fail CPU caches -

ndctl is the Linux utility for managing persistent memory.

Repo Name Description Microsite
ndctl ndctl, daxctl, and related libraries
Web Content

The website is implemented as static content on GitHub using Jekyll, GitHub-flavored MarkDown, and some tool-generated HTML here and there. Some sub-areas of the website live in the gh-pages branch of the corresponding repo (for example, pmdk and ndctl).

Repo Name Description Microsite
docs Persistent Memory Docbook - Repo containing the website (including blogs) -
pmdk-examples PMDK examples and tutorials -
book Examples used in the pmem Programming Book -
knowledge-base Knowledge Base for
pmem-aware Software

These repos contain experimental versions of software modified to leverage persistent memory. Typically, when the features are mature and tested they become part of the upstream repo.

Repo Name Description Microsite
pelikan Working tree for development of pmem-related features for Twitter's Pelikan -
pmem-rocksdb RocksDB modified to use pmem -
pmem-redis Redis, enhanced to use pmem -
pmse MongoDB pmem Storage Engine Prototype -
kvdk Reference code of key/value store design for pmem -

These repos are no longer under active development or use. We archive them here for reference.

Repo Name Description Microsite
linux-examples Original ideas -
redis Initial pmem enhancements to Redis -
rocksdb Initial pmem enhancements to RocksDB -
libcxx Experimental pmem-aware libcxx -
mpi-pmem-ext MPI Extensions for pmem -
issues Archive of some old issues. No longer in-use. -
pmemkv-jni Java bindings via JNI for pmemkv -
pmdk-tests Extended PMDK tests -

The contents of this web site and the associated GitHub repositories are BSD-licensed open source.