Silo
Multicore in-memory storage engine
Install / Use
/learn @stephentu/SiloREADME
Silo
This project contains the prototype of the database system described in
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
This code is an ongoing work in progress.
Build
There are several options to build. MODE is an important variable
governing the type of build. The default is MODE=perf, see the
Makefile for more options. DEBUG=1 triggers a debug build (off by
default). CHECK_INVARIANTS=1 enables invariant checking. There are
two targets: the default target which builds the test suite, and
dbtest which builds the benchmark suite. Examples:
MODE=perf DEBUG=1 CHECK_INVARIANTS=1 make -j
MODE=perf make -j dbtest
Each different combination of MODE, DEBUG, and CHECK_INVARIANTS triggers
a unique output directory; for example, the first command above builds to
out-perf.debug.check.masstree.
Silo now uses Masstree by default as
the default index tree. To use the old tree, set MASSTREE=0.
Running
To run the tests, simply invoke <outdir>/test with no arguments. To run the
benchmark suite, invoke <outdir>/benchmarks/dbtest. For now, look in
benchmarks/dbtest.cc for documentation on the command line arguments. An
example invocation for TPC-C is:
<outdir>/benchmarks/dbtest \
--verbose \
--bench tpcc \
--num-threads 28 \
--scale-factor 28 \
--runtime 30 \
--numa-memory 112G
Benchmarks
To reproduce the graphs from the paper:
$ cd benchmarks
$ python runner.py /unused-dir <results-file-prefix>
If you set DRYRUN=True in runner.py, then you get to see all the
commands that would be issued by the benchmark script.
Related Skills
node-connect
345.4kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
104.6kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
345.4kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
345.4kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
