Welcome to the DepFast artifact for our ATC'22 submission.
DepFast: Orchestrating Code of Quorum Systems
In this section, you can set up DepFast locally for testing and verification, which is mainly for badges 🟢 Artifacts Available and 🟢 Artifacts Evaluated - Functional.
We run all our codes on ubuntu 20.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.
# on any machine with Docker support
cd ~
git clone https://github.com/stonysystems/depfast-ae.git
cd ~/depfast-ae
git checkout atc_ae
cd ~/depfast-ae/docker
sudo docker build -t ubuntu_atc2022 .
sudo docker run --name ubuntu_atc2022 -it ubuntu_atc2022You can start DepFast instance locally (using different processes to mimic actual distributed environment) to verify the functionability of the program inside the docker container now.
# enter the docker container - outside the container
sudo docker exec -it ubuntu_atc2022 /bin/bash
# run 4 minimal experiments - inside the container:
python3 test_run.pyIf the test passed, the output should show result as OK, like this:
mode site bench concurrent result time
none_copilot 1c1s3r1p rw concurrent_1 OK 18.17s
none_copilot 1c1s3r1p rw concurrent_10 OK 18.17s
none_fpga_raft 1c1s3r1p rw concurrent_1 OK 18.12s
none_fpga_raft 1c1s3r1p rw concurrent_10 OK 18.17s
In this section, we will build a actual distributed environment to reproduce our results in the paper, which is mainly for badges 🟢 Results Reproduced.
To reproduce results in the paper, we need
- obtain 6 machines: 5 servers + 1 client running on Ubuntu
20.04orDebain-10 - obtain the IP of 6 machines:
[server-1-ip],[server-2-ip],[server-3-ip],[server-4-ip],[server-5-ip],[client-1-ip]. (each sever should have at least 4 cpu cores and client should have 16 cpu cores) - ensure that 6 machines can connect to each other via
sshand share the same username which means you can connect to any other machines on any machine throughssh ipdirectly without username required - we also required each server has an extra mounted disk called
/dev/sdcfor slowness experiments
Let's assume we have 6 machines,
[server-1-ip]->10.0.0.13[server-2-ip]->10.0.0.14[server-3-ip]->10.0.0.15[server-4-ip]->10.0.0.55[server-5-ip]->10.0.0.58[client-1-ip]->10.0.0.37.
Run all following commands on the client-1-ip.
mkdir -p ~/code
cd ~/code
git clone --recursive https://github.com/stonysystems/depfast-ae.git depfast
cd ~/code/depfast
git checkout atc_ae
# config IPs
./ip_config.sh 10.0.0.13 10.0.0.14 10.0.0.15 10.0.0.55 10.0.0.58 10.0.0.37
# sync code to all servers
bash ./batch_op.sh scp
# install dependencies on all servers
bash ./batch_op.sh dep
# compile
python3 waf configure -J build
bash ./batch_op.sh scpWe provide one-click runnable script to generate all results. We strongly recommend you run this script within the tmux in case the task is terminated unexpectedly.
# run commands on the client-1-ip machine
cd ~/code/depfast
bash one-click.shOnce everything is done, figures (figure-5: depfast_raft.pdf and figure-6: depfast_copilot.pdf) reported in the paper are generated under ./data_processing/imgs.
# ls -lh ./data_processing/imgs
total 72K
-rw-r--r-- 1 wshen24 sudo-users 29K May 18 16:30 depfast_copilot.pdf
-rw-r--r-- 1 wshen24 sudo-users 38K May 18 16:29 depfast_raft.pdf