echo <number-of-1GB-hugepages> | sudo tee /sys/kernel/mm/hugepages/hugepages-1048576kB/nr_hugepages
- gcc
- cmake
- python
- cpplint
- glog
- gtest
- tbb
- jemalloc
mkdir build && cd build
cmake .. -DCMAKE_BUILD_TYPE=Release # RelWithDebInfo, Debug
make -j`nproc`
Hand-crafted:
btree_olc_bench_256
hashtable_olc_bench_256
art_olc_bench
Tabular:
btree_inline_tabular_bench_256
hashtable_inline_tabular_bench_256
art_tabular_bench
Naive-OCC:
btree_inline_tabular_materialized_bench_256
hashtable_inline_tabular_materialized_bench_256
art_tabular_materialized_bench
Naive-MVCC:
btree_tabular_bench_256
hashtable_mvcc_tabular_bench_256
Pessimistic Locking:
btree_lc_stdrw_bench_256
btree_lc_tbbrw_bench_256
hashtable_lc_stdrw_bench_256
hashtable_lc_tbbrw_bench_256
art_lc_stdrw_bench
art_lc_tbbrw_bench
Other indexes:
bptree_bench_1K_16_16
masstree_bench
C
: Lookup-onlyG
: Lookup-mostlyA
: BalancedH
: Update-mostlyF
: Update-only
# Volatile
$BUILD_DIR/benchmarks/ycsb/ycsb_<variant> --workload <workload> --threads <number of threads> --records <number of keys> --duration <seconds>
# Persistent (only works for Tabular indexes)
$BUILD_DIR/benchmarks/ycsb/ycsb_<variant> --workload <workload> --threads <number of threads> --records <number of keys> --duration <seconds> --persistent --log-dir=<logging directory>
$BUILD_DIR/benchmarks/tpcc/tpcc_masstree_bench --duration <seconds> --threads <number of threads> --scale-factor <scale factor>
$BUILD_DIR/benchmarks/tpcc/tpcc_tabular_btree_bench --duration <seconds> --threads <number of threads> --scale-factor <scale factor>
To minimize NUMA effect, run benchmarks with numactl --membind 0
or numactl --interleave 0,1,..,<N>
when threads are within one socket or across N
sockets.
Every benchmark binary accepts --help
to print complete available options.