Bug#913889: ITP: pmdk -- persistent memory development kit
- Date: Fri, 16 Nov 2018 15:36:53 +0100
- From: Adam Borowski <kilobyte@xxxxxxxxxx>
- Subject: Bug#913889: ITP: pmdk -- persistent memory development kit
Owner: Adam Borowski <kilobyte@xxxxxxxxxx>
* Package name : pmdk
Version : 1.5
Upstream Author : Intel and contributors
* URL : https://pmem.io/pmdk/
* License : BSD-3
Programming Lang: C, C++
Description : persistent memory development kit
The Persistent Memory Development Kit is a collection of libraries and
tools to manage and access non-volatile memory. Via the DAX feature,
most operations don't require a call to the kernel, allowing operating
directly on such memory with only minimal latencies.
While basic access would require nothing but a mmap() call, it is
non-trivial for a programmer to achieve consistency when facing
unexpected power loss -- individual cachelines often don't get committed
to actual memory for a prolonged time, become persistent in an unexpected
order; etc. PMDK hides all this complexity, and provides tools to check
for errors that would make stores non-durable, fail crash consistency,
persistently leak space, etc.
* libpmem: provides low level persistent memory support
* libpmemobj: provides a transactional object store, providing memory
allocation, transactions, and general facilities for persistent memory
* libpmemblk: supports arrays of pmem-resident blocks, all the same
size, that are atomically updated.
* libpmemlog: provides a pmem-resident log file.
* libvmem: turns a pool of persistent memory into a volatile memory
pool, similar to the system heap but kept separate and with its own
* libvmmalloc: transparently converts all dynamic memory allocations
into persistent memory allocations.
* libpmempool: provides support for off-line pool management and
* librpmem: provides low-level support for remote access over RDMA.
* pmempool: manages and analyzes persistent memory pools.
* pmemcheck: pmem-specific instrumentation for Valgrind.
There's existing packaging in Ubuntu (for 1.4) and upstream (current and
well-tested, but not very debianish), I intend to take pieces from both.