4 This project contains the prototype of the database system described in
6 Speedy Transactions in Multicore In-Memory Databases
7 Stephen Tu, Wenting Zheng, Eddie Kohler, Barbara Liskov, Samuel Madden
9 http://people.csail.mit.edu/stephentu/papers/silo.pdf
11 This code is an ongoing work in progress.
16 There are several options to build. `MODE` is an important variable
17 governing the type of build. The default is `MODE=perf`, see the
18 Makefile for more options. `DEBUG=1` triggers a debug build (off by
19 default). `CHECK_INVARIANTS=1` enables invariant checking. There are
20 two targets: the default target which builds the test suite, and
21 `dbtest` which builds the benchmark suite. Examples:
23 MODE=perf DEBUG=1 CHECK_INVARIANTS=1 make -j
24 MODE=perf make -j dbtest
26 Each different combination of `MODE`, `DEBUG`, and `CHECK_INVARIANTS` triggers
27 a unique output directory; for example, the first command above builds to
28 `out-perf.debug.check.masstree`.
30 Silo now uses [Masstree](https://github.com/kohler/masstree-beta) by default as
31 the default index tree. To use the old tree, set `MASSTREE=0`.
36 To run the tests, simply invoke `<outdir>/test` with no arguments. To run the
37 benchmark suite, invoke `<outdir>/benchmarks/dbtest`. For now, look in
38 `benchmarks/dbtest.cc` for documentation on the command line arguments. An
39 example invocation for TPC-C is:
41 <outdir>/benchmarks/dbtest \
52 To reproduce the graphs from the paper:
55 $ python runner.py /unused-dir <results-file-prefix>
57 If you set `DRYRUN=True` in `runner.py`, then you get to see all the
58 commands that would be issued by the benchmark script.