thustorage / nvm-datastructure

47 stars 13 forks source link

uTree: a Persistent B+Tree with Low Tail Latency (VLDB 2020)

uTree

Tutorial

Dependencies

Prepare

  1. Set Optane DCPMM to App-Direct mode
    $ ipmctl create -f -goal persistentmemorytype=appdirect
  1. Create namespace
    $ ndctl create-namespace --mode=devdax -f
  1. If use PMDK, set mode of namespace to fsdax, assume step 2 created a namespace named "namespace1.0"
    $ ndctl create-namespace -e namespace1.0 --mode=fsdax -f
  1. Format current AEP device and mount it to the corresponding location (i.e. ./mount/pmem0), assume step 3 create an AEP device /dev/pmem0
    $ mkfs.ext4 /dev/pmem0
    $ mount -o dax /dev/pmem0 ./mount/pmem0

Single Thread Evaluation

    $ ./build.sh
    $ ./run.sh
    $ mkdir build
    $ cd build
    $ cmake ..
    $ make 
    $ ../run.sh

Multiple Thread Evaluation

    -t: Number of threads
    -i: Number of elements to insert before test
    -d: Test duration in milliseconds
    -u: Percentage of update transactions
    $ ./build.sh
    $ ./run.sh

Key-Value Store Evaluation

    $ cd vire
    $ autoreconf -fvi
    $ ./configure --enable-debug=full
    $ cd src/
    $ ./build_funcForC.sh
    $ cd ../
    $ make
    $ ./run.sh

Contact

For more NVM-related research, please check out our publication list at Storage Research Group @Tsinghua University .

Cite

If you are using uTree for your work, please cite:

Youmin Chen, Youyou Lu, Kedong Fang, Qing Wang, Jiwu Shu. uTree: a Persistent B+-Tree with Low Tail Latency. 
PVLDB, 13(11): 2634-2648, 2020. DOI: https://doi.org/10.14778/3407790.3407850