Introduction to LLPL

Introduction to LLPL

There are several ways to program with persistent memory from Java. A recent pmem.io blog article described the pmemkv library, a persistent key-value store, which can be used from multiple languages. For Java, pmemkv supports three ubiquitous Java types: String, byte[], and ByteBuffer. Another PMDK …

Read More
300 nanoseconds (2 of 2)

300 nanoseconds (2 of 2)

At the end of the first part of this blog series, I posed three fundamental questions regarding the design of failure atomic data structures for persistent memory. What does it mean to allocate persistent memory? How to do fail-safe atomic updates? Are all data structures suitable for persistent …

Read More
Language bindings for pmemkv

Language bindings for pmemkv

pmemkv is a local/embedded key-value datastore optimized for persistent memory. It is written in C and C++, but to satisfy a wider audience it comes with several bindings for high-level languages. Currently: Java (with JNI), Node.js, Python and Ruby. The picture below illustrates architecture and …

Read More
Introduction to libmemkind

Introduction to libmemkind

Introduction Memkind is the library that simplify usage of persistent memory in a volatile mode. There are NVDIMMs technologies, such as Intel Optane DCPMM, that provides persistency, byte-addressability, and also a high capacity when compared with DRAM modules. They can be used as an expansion of …

Read More
Memkind support for KMEM DAX option

Memkind support for KMEM DAX option

Introduction Linux kernel version 5.1 brings in support for the volatile-use of persistent memory as a hotplugged memory region (KMEM DAX). When this feature is enabled, persistent memory is seen as a separate memory-only NUMA node(s). libmemkind API was extended to include new kinds that allow for …

Read More