modify build setup
[c11concurrency-benchmarks.git] / silo / README.md
1 Silo
2 =====
3
4 This project contains the prototype of the database system described in 
5
6     Speedy Transactions in Multicore In-Memory Databases 
7     Stephen Tu, Wenting Zheng, Eddie Kohler, Barbara Liskov, Samuel Madden 
8     SOSP 2013. 
9     http://people.csail.mit.edu/stephentu/papers/silo.pdf
10
11 This code is an ongoing work in progress.
12
13 Build
14 -----
15
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:
22
23     MODE=perf DEBUG=1 CHECK_INVARIANTS=1 make -j
24     MODE=perf make -j dbtest
25
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`.
29
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`.
32
33 Running
34 -------
35
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:
40
41     <outdir>/benchmarks/dbtest \
42         --verbose \
43         --bench tpcc \
44         --num-threads 28 \
45         --scale-factor 28 \
46         --runtime 30 \
47         --numa-memory 112G 
48
49 Benchmarks
50 ----------
51
52 To reproduce the graphs from the paper:
53
54     $ cd benchmarks
55     $ python runner.py /unused-dir <results-file-prefix>
56
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.