This is the repo for our databases class project. Our report is in
We modify the concurrent B-tree with OLC from https://github.com/wangziqi2016/index-microbench.
> git clone https://github.com/mark-i-m/hot-spots > cd hot-spots > git submodule update --init --recursive > make
You need to have
g++ 7 or newer, along with GNU
To run tests for B-tree implementations:
make tst.all. To run a test
To build the report:
All benchmarks were run using the
benchmarks/run_eval.sh script in this repo.
It allows varying the number of insertion and lookup threads, the B-tree
implementation, and the number of operations per thread, the initial load of
the B-tree, and the frequency with which to output statistics. See the usage
message for more info:
> cd benchmarks > bash run_eval.sh # prints help message
To run benchmarks, you need to have passwordless
sudo access. You also need
cpupower installed. To get this tool, install
apt install linux-tools-common. Then, attempt to run
cpupower. This will fail with a
message that tells you what else to install (it is kernel-specific). Install
the first package only.
The results of the workloads are produced in the
results directory. To graph
results, use the
results/plot.py script. The figures in the
directory were generated using this script. See the usage message for more
> ./plot.py # prints the help message
This script requires
The organization of this repository is as follows:
README.md: This README.
makefile: The makefile for building and running everything.
benchmarks/: Implementation of benchmarks and utilities for running.
btrees/: Implementation of B-trees.
figures/: Figures produced from results with the
results/: Results produced from the
tests/: Correctness tests for the B-trees.
references.bib: Our report.