Welcome to the Rolis artifact for our Eurosys'22 submission.
Rolis: a software approach to efficiently replicating multi-core transactions
benchmarks
benchmarks/sto
: Transaction control, serialization (inTransactions.cc
) and replay interface implementation (inReplayDB.cc
)benchmarks/tpcc.cc
: TPC-C benchmark implementationbenchmarks/micro_bench.cc
: YCSB++ benchmark implementation
docker
: the docker containerscripts
: several experimental scripts and scripts to plot figures in the paperthird-party
: the dependencies on MultiPaxos ported from Janus with the leader electiondbtest.cc
: themain()
portal to start the program, including replay logic
You can find a more detailed document in modules.
In this section, you can set up Rolis locally for testing and verification, which is mainly for badges Artifacts Available
and Artifacts Evaluated - Functional
.
We run all our codes on ubuntu 18.04
which mainly depends on several Linux libraries (i.e., boost, gcc and libyaml-cpp-dev). We provide a docker image with all required dependencies and source code for ease so you can run on any local machine supporting Docker. You can directly build a runnable Rolis instance with all required dependencies and source code via
cd ~
git clone https://github.com/shenweihai1/rolis-eurosys2022.git
cd ~/rolis-eurosys2022
cd ./docker
bash docker.sh
You can start Rolis instance locally (using different processes to mimic actual distributed environment) to verify the functionability of the program through three minimal experiments:
- two running replicas without failure;
- Silo only;
- three replicas with failure;
# 1. enter the docker container
docker exec -it ubuntu_eurosys2022 /bin/bash
# 2. run 3 minimal experiments (inside the container):
make paxos
cd ./test && bash ./runner.sh
We should observe status "PASS" in green at the end of experiments as below
Before moving on, please make distributed environment ready in environment.
We provide one-click runnable to generate all results under folder ./results
. It would take up to 2 ~ 3 hours to run all experiments.
# on the leader replica
cd ~/rolis-eurosys2022
bash one-click.sh
The one-click script usually can complete all experiments till the end, but everything can happen. In this case, you don't have to re-run completed experiments. You can comment the completed experiments and run the incompleted ones in the one-click.sh
. For example, you can choose to run experiment-8
as below
For example, in the following experiment-4, numbers for worker threads 13-15 are missing. You can re-run the experiment with chosen worker threads by configuration in the one-click.sh
.
You can find a more detailed experiment instructions in experiments.
The results should be as below
batch-latency.log
: the 50th, 90th and 95th latency results of Rolis with different batch-sizesbatch-throughput.log
: the throughput results of Rolis with different batch-sizesfailover-16-throughput.log
: the throughput over time in the failover scenarioscalability-tpcc.log
: the throughput of Rolis with different worker threads under tpcc workloadscalability-ycsb.log
: the throughput of Rolis with different worker threaders under ycsb++ workloadsilo-only-tpcc.log
: the throughput of Silo under tpcc workloadsilo-only-ycsb.log
: the throughput of Silo under ycsb++ workload