GithubHelp home page GithubHelp logo

shenweihai1 / rolis-eurosys2022 Goto Github PK

View Code? Open in Web Editor NEW
3.0 2.0 4.0 8.17 MB

Rolis: a software approach to efficiently replicating multi-core transactions; eurosys2022

License: MIT License

Starlark 0.01% CMake 0.01% Makefile 0.35% C++ 72.51% C 4.92% Python 17.06% Shell 1.65% M4 1.09% TeX 2.13% Dockerfile 0.01% Jupyter Notebook 0.26%
multi-core paxos replication fault-tolerance

rolis-eurosys2022's Introduction

Welcome to the Rolis artifact for our Eurosys'22 submission.

Rolis: a software approach to efficiently replicating multi-core transactions

Project organization

  • benchmarks
    • benchmarks/sto: Transaction control, serialization (in Transactions.cc) and replay interface implementation (in ReplayDB.cc)
    • benchmarks/tpcc.cc: TPC-C benchmark implementation
    • benchmarks/micro_bench.cc: YCSB++ benchmark implementation
  • docker: the docker container
  • scripts: several experimental scripts and scripts to plot figures in the paper
  • third-party: the dependencies on MultiPaxos ported from Janus with the leader election
  • dbtest.cc: the main() portal to start the program, including replay logic

You can find a more detailed document in modules.

Run the experiment locally

In this section, you can set up Rolis locally for testing and verification, which is mainly for badges Artifacts Available and Artifacts Evaluated - Functional.

Obtain a Docker container

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

Minimal working examples locally

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 alter

Run the expriment in actual distributed environment

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

case 1: run chosen experiments

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 alt

case 2: run the experiment with chosen worker threads

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. alt

alt

You can find a more detailed experiment instructions in experiments.

The results should be as below alt

  1. batch-latency.log: the 50th, 90th and 95th latency results of Rolis with different batch-sizes
  2. batch-throughput.log: the throughput results of Rolis with different batch-sizes
  3. failover-16-throughput.log: the throughput over time in the failover scenario
  4. scalability-tpcc.log: the throughput of Rolis with different worker threads under tpcc workload
  5. scalability-ycsb.log: the throughput of Rolis with different worker threaders under ycsb++ workload
  6. silo-only-tpcc.log: the throughput of Silo under tpcc workload
  7. silo-only-ycsb.log: the throughput of Silo under ycsb++ workload

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.