silo
1.0.0
이 프로젝트에는 다음에 설명된 데이터베이스 시스템의 프로토타입이 포함되어 있습니다.
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
불변 검사를 활성화합니다. 테스트 스위트를 빌드하는 기본 타겟과 벤치마크 스위트를 빌드하는 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
설정하면 벤치마크 스크립트에서 실행되는 모든 명령을 볼 수 있습니다.