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
Evaluation of a better object container

Evaluation of a better object container

During performance evaluation of our library, I asked myself a following question: Which data structure has computational complexity of “insert at end” and “remove given element” operations no worse than a doubly-linked list, but with a smaller constant? The point of that …

Read More
pmemobjfs - The simple FUSE based on libpmemobj

pmemobjfs - The simple FUSE based on libpmemobj

How to use it The sources of the pmemobjfs file system are available here. Please refer to README file for instructions on how to create a file system layout and mount it. NOTE: This is just an example implementation of file system in user space using the libpmemobj library and it is not considered …

Read More
Challenges of multi-threaded transactions

Challenges of multi-threaded transactions

Our library currently does not support threads cooperating (writing) within a single transaction. It does shift a lot of work from the library onto the user who now has to think about different parallelization solutions. This was a conscious decision with iterative approach to creating the library …

Read More
KV-store improved & measured

KV-store improved & measured

As promised in the previous post about the kv-store implementation I’m back with new results after implementing the optimizations I devised a month ago. As a bonus I implemented a red-black tree to have a fair comparison between two data structures that allocate similar number of nodes. tl;dr: …

Read More