PMem Repositories

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

Discontinuation of the projects

Some projects will be discontinued, they are crossed out below (in the table). You will find more information here.

    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 NameDescriptionMicrosite
    pmdkPMDK Core C libraries and tools:
    • libpmem
    • libpmem2
    • libpmemobj
    • libpmemblk
    • libpmemlog
    • libpmempool
    • libpmemset
    • librpmem
    • pmempool utility
    • Core PMDK C examples
    • Web content for (in gh-pages branch)
    valgrindEnhanced Valgrind containing the pmemcheck
    rpmaC library to simplify accessing persistent memory (PMem) on remote hosts over Remote Direct Memory Access (RDMA)
    libpmemobj-cppC++ bindings & containers for libpmemobj
    llplLow-Level Persistence Library for
    libpmemobj-jsJavaScript bindings for libpmemobj-
    miniasyncC low-level concurrency library for asynchronous
    pmemstreamLogging data structure (with stream-like access to data)
    pmemkvTransactional Key-Value Store: Top-Level C & C++ API
    pmemkv-benchBenchmarks for pmemkv-
    pmemkv-pythonPython bindings for
    pmemkv-javaJava bindings for
    pmemkv-nodejsNodeJS bindings for
    pmemkv-rubyRuby bindings for
    pmdk-convertConversion tool for PMDK poolspmdk-convert

    Components Focused on Volatile Usages of pmem:

    Repo NameDescriptionMicrosite
    memkindGeneral-purpose malloc/free-style library
    (Actually lives outside the pmem GitHub org since it has a life outside of pmem as well)
    vmemcacheA buffer based LRU
    vmemlibvmem, the predecessor to libmemkind.
    Maintenance-only -- use libmemkind for all new development.

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

    Repo NameDescriptionMicrosite
    pcjPersistent Collections for Java-
    pmemfileUserspace implementation of file APIs using pmem-
    syscall_interceptSyscall intercepting library used by libpmemfile-
    vltraceTool for tracing syscalls-
    pynvmExperimental prototype Python bindings for libpmemobj-


    Repo NameDescriptionMicrosite
    dev-utils-kitTools used for development of projects under pmem organization-
    autoflushtestBasic data integrity test for platforms with flush-on-fail CPU caches-

    ndctl is the Linux utility for managing persistent memory.

    Repo NameDescriptionMicrosite
    ndctlndctl, daxctl, and related
    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 NameDescriptionMicrosite
    docsPersistent Memory Docbook-
    pmem.github.ioRepo containing the website (including blogs)-
    pmdk-examplesPMDK examples and tutorials-
    bookExamples used in the pmem Programming Book-
    knowledge-baseKnowledge 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 NameDescriptionMicrosite
    pelikanWorking tree for development of pmem-related features for Twitter's Pelikan-
    pmem-rocksdbRocksDB modified to use pmem-
    pmem-redisRedis, enhanced to use pmem-
    pmseMongoDB pmem Storage Engine Prototype-
    kvdkReference 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 NameDescriptionMicrosite
    linux-examplesOriginal ideas-
    redisInitial pmem enhancements to Redis-
    rocksdbInitial pmem enhancements to RocksDB-
    libcxxExperimental pmem-aware libcxx-
    mpi-pmem-extMPI Extensions for pmem-
    issuesArchive of some old issues. No longer in-use.-
    pmemkv-jniJava bindings via JNI for pmemkv-
    pmdk-testsExtended PMDK tests-

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