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
pmdk PMDK Core C libraries and tools:
  • libpmem
  • libpmemobj
  • libpmemblk
  • libpmemlog
  • librpmem
  • libpmempool
  • libvmem (move to its own vmem repo is in progress)
  • pmempool utility
  • Core PMDK C examples
  • Web content for pmem.io/pmdk (in gh-pages branch)
libpmemobj-cpp C++ bindings & containers for libpmemobj
libpmemobj-js JavaScript bindings for libpmemobj
pmemkv Transactional Key-Value Store: Top-Level C API
pmemkv-tools Benchmarks and tools for pmemkv
pmemkv-python Python bindings for pmemkv
pmemkv-nodejs NodeJS bindings for pmemkv
pmemkv-ruby Ruby bindings for pmemkv
pmemkv-java Java bindings for pmemkv
pmemkv-jni Java bindings via JNI for pmemkv
pmdk-convert Conversion tool for PMDK pools
valgrind Enhanced valgrind containg the pmemcheck plugin
pmdk-tests Extended PMDK tests


Components Focused on Volatile Usages of pmem:
Repo Name Description
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.
Move from the pmdk repo is in progress.


Experimental PMDK components (not yet ready for production use):
Repo Name Description
pcj Persistent Collections for Java
llpl Low-Level Persistence Library 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
dev-utils-kit Tools used for development of projects under pmem organization (WIP)
ndctl

ndctl is the Linux utility for managing persistent memory.

Repo Name Description
ndctl ndctl, daxctl, and related libraries
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
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-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
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
Inactive

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

Repo Name Description
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.