C++ bindings for libpmemobj (part 1) - pmem resident variables

C++ bindings for libpmemobj (part 1) - pmem resident variables

One of the biggest hurdles and error prone things about our C API is that the user has to manually keep track of modifications to the persistent memory resident variables while in a transaction. A special semi-transparent template property class has been implemented to automatically add variable …

Read More
C++ bindings for libpmemobj (part 2) - persistent smart pointer

C++ bindings for libpmemobj (part 2) - persistent smart pointer

In our C API the programmer has to deal with custom pointers represented by the PMEMoid structure. Thanks to some macro magic we made it so that those PMEMoids are somewhat usable. C++ allows us to evolve this concept. pmem::obj::persistent_ptr Almost everyone who ever touched a C++ code knows the …

Read More
C++ bindings for libpmemobj (part 3) - persistent queue example

C++ bindings for libpmemobj (part 3) - persistent queue example

The best way to learn to code is usually by implementing an example. We are going to be creating a linked-list based queue data structure using the the pmem::obj::p and pmem::obj::persistent_ptr classes and libpmemobj C API. But first, a little bit of CS 101 :) Linked-list queue Queue is a …

Read More
Performance improvements

Performance improvements

I would like to inform you about the performance improvements that have been going on in PMDK and libpmemobj in particular. We have not been standing still and we are trying out a couple of ideas on how to make our libraries even faster. Some of the improvements are smaller, some are larger. Some of …

Read More
An introduction to replication

An introduction to replication

Replication is a means for raising the reliability of your pmemobj based applications. You can basically think of it as RAID 1 within PMDK. What happens is, when you write to your pool using the pmemobj_* (memcpy, persist, and so on) primitives, it gets copied to your replicas. Yes, you can have …

Read More