This repository contains the source code for TIPS library and seven volatile indexes that are converted using TIPS. All the TIPS-indexes are integrated with YCSB and the performance results presented in the ATC 2021 paper can be reproduced from this repository. Please find the link to the paper, ATC video presentation, and NVMW video presentations below.
- Clone TIPS repo
git clone git@github.com:cosmoss-vt/tips.git
cd tips/index-microbench
- Download and setup YCSB
curl -O --location https://github.com/brianfrankcooper/YCSB/releases/download/0.11.0/ycsb-0.11.0.tar.gz
tar xfvz ycsb-0.11.0.tar.gz
mv ycsb-0.11.0 YCSB
mkdir workloads
sh generate_all_workloads.sh
- Compile the TIPS source
cd tips/tips-lib/src
make
- Prepare the build files for benchmarks
cd ../../
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release ..
make
cp ycsb ../
sh rm.sh
sudo ./ycsb tips <index-- hlist/lfhlist/bst/lfbst/art/btree/clht>
<workload type-- a/b/c/d/e> randint <uniform/zipfian> <number of threads>
- The default workload spec is set at 32M keys and uniform distribution; please modify the tips-ycsb/index-microbench/workload_spec file to change configs.
- TIPS uses PMDK failure-atomic memory allocator, for a fair comparison against TIPS porting your application to use PMDK is recommended.
- The default PMEM path is configured as /mnt/pmem0/, please change tips-ycsb/rm.sh and tips-ycsb/include/pmdk.h file if you use a different path.
Reach out to us at madhavakrishnan@vt.edu and changwoo@vt.edu
@inproceedings {krishnan:tips,
title = {{TIPS} : Making Volatile Index Structures Persistent with DRAM-NVMM Tiering},
booktitle = {2021 {USENIX} Annual Technical Conference ({USENIX} {ATC} 21)},
year = {2021},
url = {https://www.usenix.org/conference/atc21/presentation/krishnan},
publisher = {{USENIX} Association},
month = jul,
}