このプロジェクトには、で説明されているデータベース システムのプロトタイプが含まれています。
Speedy Transactions in Multicore In-Memory Databases Stephen Tu, Wenting Zheng, Eddie Kohler, Barbara Liskov, Samuel Madden SOSP 2013. http://people.csail.mit.edu/stephentu/papers/silo.pdf
このコードは現在進行中の作業です。
構築にはいくつかのオプションがあります。 MODE
ビルドのタイプを制御する重要な変数です。デフォルトはMODE=perf
です。その他のオプションについては Makefile を参照してください。 DEBUG=1
デバッグ ビルドをトリガーします (デフォルトではオフ)。 CHECK_INVARIANTS=1
不変チェックを有効にします。ターゲットは 2 つあります。テスト スイートを構築するデフォルト ターゲットと、ベンチマーク スイートを構築するdbtest
です。例:
MODE=perf DEBUG=1 CHECK_INVARIANTS=1 make -j MODE=perf make -j dbtest
MODE
、 DEBUG
、 CHECK_INVARIANTS
のそれぞれの異なる組み合わせにより、固有の出力ディレクトリがトリガーされます。たとえば、上記の最初のコマンドはout-perf.debug.check.masstree
にビルドされます。
Silo は、デフォルトで Masstree をデフォルトのインデックス ツリーとして使用するようになりました。古いツリーを使用するには、 MASSTREE=0
を設定します。
テストを実行するには、引数なしで<outdir>/test
呼び出すだけです。ベンチマーク スイートを実行するには、 <outdir>/benchmarks/dbtest
呼び出します。現時点では、 benchmarks/dbtest.cc
でコマンド ライン引数に関するドキュメントを探してください。 TPC-C の呼び出し例は次のとおりです。
<outdir>/benchmarks/dbtest --verbose --bench tpcc --num-threads 28 --scale-factor 28 --runtime 30 --numa-memory 112G
論文からグラフを再現するには:
$ cd benchmarks $ python runner.py /unused-dir <results-file-prefix>
runner.py
でDRYRUN=True
を設定すると、ベンチマーク スクリプトによって発行されるすべてのコマンドが表示されます。