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_atc2022
You 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.py
If 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.04
orDebain-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
ssh
and share the same username which means you can connect to any other machines on any machine throughssh ip
directly without username required - we also required each server has an extra mounted disk called
/dev/sdc
for 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 scp
We 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.sh
Once 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