Este proyecto contiene el prototipo del sistema de base de datos descrito en
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
Este código es un trabajo continuo en progreso.
Hay varias opciones para construir. MODE
es una variable importante que rige el tipo de construcción. El valor predeterminado es MODE=perf
, consulte el Makefile para obtener más opciones. DEBUG=1
desencadena una compilación de depuración (desactivada de forma predeterminada). CHECK_INVARIANTS=1
habilita la verificación invariante. Hay dos objetivos: el objetivo predeterminado que crea el conjunto de pruebas y dbtest
que crea el conjunto de pruebas comparativas. Ejemplos:
MODE=perf DEBUG=1 CHECK_INVARIANTS=1 make -j MODE=perf make -j dbtest
Cada combinación diferente de MODE
, DEBUG
y CHECK_INVARIANTS
activa un directorio de salida único; por ejemplo, el primer comando anterior se basa en out-perf.debug.check.masstree
.
Silo ahora usa Masstree de forma predeterminada como árbol de índice predeterminado. Para utilizar el árbol antiguo, establezca MASSTREE=0
.
Para ejecutar las pruebas, simplemente invoque <outdir>/test
sin argumentos. Para ejecutar el conjunto de pruebas, invoque <outdir>/benchmarks/dbtest
. Por ahora, busque en benchmarks/dbtest.cc
documentación sobre los argumentos de la línea de comando. Un ejemplo de invocación para TPC-C es:
<outdir>/benchmarks/dbtest --verbose --bench tpcc --num-threads 28 --scale-factor 28 --runtime 30 --numa-memory 112G
Para reproducir los gráficos del artículo:
$ cd benchmarks $ python runner.py /unused-dir <results-file-prefix>
Si configura DRYRUN=True
en runner.py
, podrá ver todos los comandos que emitiría el script de referencia.