This experiments measures the overhead on throughput for all 8 systems, and reproduces Figure 9.
We provide a script to run systems in batch. For example, run the following command to run the 5 systems.
./run_batch.sh leveldb nginx proxy slowlog watchdogNote that MySQL require a different kernel version. To run MySQL workload, shutdown the VM, and start the VM via
r formysqlon the host, and then in the VM:
./run_batch.sh mysqlPlease also see Known issues section before running the experiments.
By default, the run_batch.sh script only repeat for 1 time. To run it for
more time (we repeated for 5 times in the paper), insert an integer argument as
the first argument:
./run_batch.sh 5 [systems...]Below shows the expected time of each system running for once. The first 7 systems (which can run using the same kernel) takes about 25min. Repeating all experiments for 5 times takes about 2.5 hours in total.
| System | Approx. time (min) |
|---|---|
| leveldb | 2.5 |
| nginx | 4 |
| proxy | 2.5 |
| rdb | 2 |
| slowlog | 4.5 |
| varnish | 4.5 |
| watchdog | 4.5 |
| mysql | 4.5 |
Generate figure by running ./plot.sh.
The VM does not contain GUI environment, so to view the figure, it needs to be copied out first. Shutdown the VM, then on the host machine, mount and copy:
m
sudo cp mount-point.dir/root/orbit/experiments/throughput/figure.pdf .As mentioned in the Known issues in the upper directory, there are some flaky bugs in Redis RDB and Varnish. See the upper directory for the buggy behaviors.
Therefore, you may want to run the 5 systems first:
./run_batch.sh [times] leveldb nginx proxy slowlog watchdogThen cd into rdb/ and varnish/ in this directory to run multiple runs
respectively and monitor the results:
# suppose we are in experiments/throughput/
cd rdb/ # or `cd varnish/`
./run.sh -n 1
./run.sh -n 2
...
./run.sh -n 5Here each line will only repeat once (running orbit version first and then
original version). When there is buggy error behavior, you can restart that
single round. The -n specifies which log file to (re)write to.
You will see result files naming similar to res-orbit-2.log when running with -n 2.
And finally shutdown the VM and start the VM again with the kernel for MySQL
with r formysql, and then cd into the mysql/ folder in this directory,
and run multiple times.
# suppose we are in experiments/throughput/
cd mysql/
./run.sh 5To cleanup all previous results, run the following command in this directory.
rm */*.{out,err,log}