To everyone who may help,
Question 1:
I have spent several days working on the code of libpmemobj (c version), and knew lots about types and basic usages.
However, when I want to dig deeper, such as the memory managerment, I failed. It seemed too complex. So if someone can share some materials about the internal implementation details? Thanks a lot.
I am reading the libpmemobj/heap.c, palloc.c, memblock.c.
Question 2:
Another question is that I heard many researchers say that libpmemobj works not so efficient. We have the requirements to allocate objects on PM, deallocate some of them, read objects and traverse through all the objects. The objects should be persistent.
What can we do to achieve the best performance? The object size is generally 16B ~ 1KB.
It acts as the persist object pool, which is responsible for the persist memory fragments (owing to deallocation of objects). And we do not want to use transaction for persistence. We want to persist the object as we want.
We do not know whether palloc works as well as jemalloc.
Wish someone could help me.