Hotpot
libpmemobj-cpp
Hotpot | libpmemobj-cpp | |
---|---|---|
1 | 4 | |
60 | 107 | |
- | - | |
0.0 | 4.9 | |
almost 4 years ago | about 1 year ago | |
C | C++ | |
GNU General Public License v3.0 only | GNU General Public License v3.0 or later |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
Hotpot
-
Languages experimented with distributed heap support?
Predating Intel's persistent memory a.k.a. NVDIMM, I see a research product "Hotpot" on its practical application as distributed shared memory ( paper and source code ), despite the hardware adoption issue and its apparent research nature (stuck with customized 3.x Linux kernel), I find the core idea not so bound to such a whole new technology stack, covering from low level device driver to application programming toolkit, even depending on sth like 40Gbps RDMA with InfiniBand SAN connection.
libpmemobj-cpp
-
UltraRAM: 'Universal Memory' That Brings RAM-Like Speed to Non-Volatile Storage
Another comment already mentions this, but I guess a functional data structure would be easiest to maintain, even though there's stuff like this for PMEM such that any data structure would work essentially: https://pmem.io/
This[1] Open Source data store I'm maintaining is storing a huge tree of tries eventually on durable storage, but it's essentially a huge persistent index stored in an append-only file. The last layer of "indirect index pages" stores list of pointers to page fragments, which store the actual records (the list however is bound to a predefinded size). A single read-write trx per resource syncs the new page fragments, which mainly only include the updated or new records plus the paths to the root page to a durable device during a postorder traversal of the in-memory log. The last thing is an atomic update, which sets a new offset to point to the new UberPage, the root of the storage. All pages are only word aligned except for RevisionRootPages, which are aligned to a multiple of 256 bytes. All pages are compressed and might in the future optionally be encrypted.
I guess these byte addressable persistent memory devices are an ideal fit for small sized parallel random reads of potentially tiny page fragments to reconstruct a full page in-memory.
However, I hope they'll eventually achieve a better price in comparison to DRAM and SSDs than Intel Optane DC PMEM current price range.
[1] https://github.com/sirixdb/sirix
-
ELI5: what is pmem?
Yes it is persistent memory programming. https://pmem.io/
-
Languages experimented with distributed heap support?
Predating Intel's persistent memory a.k.a. NVDIMM, I see a research product "Hotpot" on its practical application as distributed shared memory ( paper and source code ), despite the hardware adoption issue and its apparent research nature (stuck with customized 3.x Linux kernel), I find the core idea not so bound to such a whole new technology stack, covering from low level device driver to application programming toolkit, even depending on sth like 40Gbps RDMA with InfiniBand SAN connection.
-
Can't figure out how to link C++ library installed with apt-get
It's more work but it looks like you can get the C++ bindings off their github and use them directly. You may have to experiment with different releases to find one compatible with whatever version of the base library you have installed.
What are some alternatives?
rdma-core - RDMA core userspace libraries and daemons
OpenMLDB - OpenMLDB is an open-source machine learning database that provides a feature platform computing consistent features for training and inference.
dattobd - kernel module for taking block-level snapshots and incremental backups of Linux block devices
pmdk - Persistent Memory Development Kit
spy - :eyes: Linux kernel mode debugfs keylogger
aniseed - Neovim configuration and plugins in Fennel (Lisp compiled to Lua)
lgproxy - Proxy for Looking Glass over local networks