PMem Repositories

Here is a list of all the repositories in the pmem organization in GitHub under https://github.com/pmem.

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 pmem.io/pmdk (in gh-pages branch)
pmem.io/pmdk
libpmemobj-cpp C++ bindings & containers for libpmemobj pmem.io/libpmemobj-cpp
llpl Low-Level Persistence Library for Java pmem.io/java/llpl
libpmemobj-js JavaScript bindings for libpmemobj -
miniasync C low-level concurrency library for asynchronous functions pmem.io/miniasync
pmemstream Logging data structure (with stream-like access to data) pmem.io/pmemstream
pmemkv Transactional Key-Value Store: Top-Level C & C++ API pmem.io/pmemkv
pmemkv-bench Benchmarks for pmemkv -
pmemkv-python Python bindings for pmemkv pmem.io/pmemkv-python
pmemkv-java Java bindings for pmemkv pmem.io/pmemkv-java
pmemkv-nodejs NodeJS bindings for pmemkv pmem.io/pmemkv-nodejs
pmemkv-ruby Ruby bindings for pmemkv pmem.io/pmemkv-ruby
pmdk-convert Conversion tool for PMDK pools pmdk-convert
valgrind Enhanced Valgrind containing the pmemcheck plugin pmem.io/valgrind
rpma C library to simplify accessing persistent memory (PMem) on remote hosts over Remote Direct Memory Access (RDMA) pmem.io/rpma

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 pmem.io/vmemcache
vmem libvmem, the predecessor to libmemkind.
Maintenance-only -- use libmemkind for all new development.
pmem.io/vmem/libvmem

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 -

Other:

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

ndctl is the Linux utility for managing persistent memory.

Repo Name Description Microsite
ndctl ndctl, daxctl, and related libraries pmem.io/ndctl
Web Content

The pmem.io 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 -
pmem.github.io Repo containing the pmem.io website (including blogs) -
pmdk-examples PMDK examples and tutorials -
book Examples used in the pmem Programming Book -
knowledge-base Knowledge Base for pmem.io pmem.io/knowledgebase
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 -
Inactive

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.