NRHI is a hash index structure for persistent memory, which leverages layered structure of hash tables to perform resizing without rehashing and performs lock-free concurrency control over hashing operations to improve scalability. And this repo is the implementation of “NRHI - Non-Rehashing Hash Index for Persistent Memory”, in Proceedings of the 38th IEEE International Conference on Computer Design, (ICCD 2021).
NRHI is a header-only library, and is implemented based on libpmemobj-cpp.
Basically,git clone https://github.com/lionelee/NRHI.git --recursive
is all you need to get started. NRHI provides test files with YCSB benchmarks under tests/.
Preliminaries
- Configure Intel Persistent Memory under App Direct Mode. This document can be helpful.
- Build
libpmemobj-cpp
: get into that directory and follow the instructions.
Build test binaries
$ mkdir build
$ cd build
$ cmake ..
$ make -j
Generate the workloads by running YCSB:
$ ./scripts/gen_workloads.sh
Then run the benchmarks:
$ ./scripts/run.sh
NRHI is licensed under SATA-License (The Star And Thank Author License, original link). The basic idea is, whenever using a project using SATA license, people should star/like/+1 that project and thank the author.