We measure the throughput of Redis in a wide range of systems, including:
- HermiTux on uHyve;
- Lupine on Firecracker;
- Lupine on KVM;
- Linux on Firecracker;
- Linux on KVM;
- Linux as a userspace binary;
- OSv on KVM;
- Rumprun on KVM;
- Docker; and,
- Unikraft on KVM.
We vary the request type using
redis-benchmark
,
using 30 concurrent connections, 100k requests, and a pipelining level of 16.
From the paper, "we did not optimize application or kernel configurations for
performance, however we took care of removing obvious performance bottlenecks
for each system, e.g., switching on memory pools in Unikraft's networking
stack (based on lwIP), or porting Lupine
to QEMU/KVM in order to avoid Firecracker performance bottlenecks."
./genimages.sh
downloads and builds the tested images and takes about 3m on average;./benchmark.sh
runs the experiment and takes about 6m on average; and./plot.py
is used to generate the figure.