This project contains the prototype of the database system described in
Speedy Transactions in Multicore In-Memory Databases
Stephen Tu, Wenting Zheng, Eddie Kohler, Barbara Liskov, Samuel Madden
To appear in SOSP 2013.
This code is an ongoing work in progress. Please refer to:
Fast Transactions for Multicore In-Memory Databases
Stephen Tu
Masters Thesis
http://people.csail.mit.edu/stephentu/papers/masters-thesis.pdf
for a preliminary version of this paper.
There are several options to build. MODE is an important variable governing
the type of build. The default is MODE=perf, see the Makefile for more options.
DEBUG=1 triggers a debug build (off by default). CHECK_INVARIANTS=1 enables
invariant checking. There are two targets: the default target which builds the
test suite, and dbtest which builds the benchmark suite. Examples:
MODE=perf DEBUG=1 CHECK_INVARIANTS=1 make -j
MODE=perf make -j dbtest
Each different combination of MODE, DEBUG, and CHECK_INVARIANTS triggers
a unique output directory; for example, the first command above builds to
out-perf.debug.check.
To run the tests, simply invoke <outdir>/test with no arguments. To run the
benchmark suite, invoke <outdir>/benchmarks/dbtest. For now, look in
benchmarks/dbtest.cc for documentation on the command line arguments. An
example invocation for TPC-C is:
<outdir>/benchmarks/dbtest \
--verbose \
--bench tpcc \
--num-threads 28 \
--scale-factor 28 \
--runtime 30 \
--numa-memory 112G
To reproduce the graphs from the paper:
$ cd benchmarks
$ python runner.py /unused-dir <results-file-prefix>
If you set DRYRUN=True in runner.py, then you get to see all the
commands that would be issued by the benchmark script.