- 3 server machines
- 1 client machine
- Make sure Rabia is properly installed. Follow the instructions in the repo. This step is critical as it provides the go binary and python3.8 needed for testing.
- SSH into each of the VMs and do the following:
cd ~/go/srcgit clone https://github.com/zhouaea/epaxos.git && cd epaxosgit checkout paxos-no-batching. compile.sh- After compiling, you should see
Built Master
Built Server
Built Client
For your convenience, we have created branches preloaded with the configurations we used for each experiment mentioned in the paper.
In each machine, git checkout into your desired branch. Compile go binaries on each machine with . compile.sh. Then, follow the instructions below, starting from Configure Machines.
git checkout paxos-no-batching
git checkout epaxos-no-batching
git checkout paxos-batching
git checkout epaxos-batching
git checkout paxos-batching-data-size-256B
git checkout epaxos-batching-data-size-256B
- First, find the description of your machine by looking for a
<node>tag with the attributeclient_id=<your_machine_name>. - Inside the node tag, look for
<interface>, and inside it you should see an<ip/>tag. The attributeaddresswill give you the machine's experiment network ip. - The address likely has the format
10.10.1.x.
Inside base-profile.sh in each machine, configure the experimental network IP address of all server machines in the ServerIps array, client machines in the ClientIps array, and the server machine that will be the leader in the MasterIP variable.
- Finally, run
. runPaxos.shor. runEPaxos.sh(depending on the branch) on your master machine only. You should see a relatively constant flow of messages in your terminal.- Some of our results, namely those done for Figure 4 or Varying Data Size, require multiple experiments to be run with a varying number of clients. For these experiments, we provide 9 profiles, where
profile0.shruns 20 clients, whileprofile8.shruns 500 clients. To change which profile is being executed, change the second line of eitherrunPaxos.shorrunEPaxos.shon each machine to execute your desired profile. By default,profile0.shwill be executed.
- Some of our results, namely those done for Figure 4 or Varying Data Size, require multiple experiments to be run with a varying number of clients. For these experiments, we provide 9 profiles, where
- If all works correctly, there will be n client logs inside the /logs directory in your master machine.
- For throughput/latency analysis, run:
python3.8 analysis.py ./logs- If you get the error below, you didn't supply
./logsas an argumentTraceback (most recent call last): File "analysis.py", line 164, in <module> infos, disconnects = analysis_epaxos_logs() File "analysis.py", line 100, in analysis_epaxos_logs params = get_experiments(argv[1]) IndexError: list index out of range - If successful, this will output a variety of different statistics. You can find the relevant statistics as
clientp50Latency: x,clientp99Latency: x,throughput: x.