We measure the throughput of NGINX 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 also compare MirageOS on Solo5, however, it does support running NGINX as it is a Domain-Specific Language unikernel library Operating System. Instead, we use their template TCP HTTP server capable of serving static content over HTTP and measure this with the same tools and payload.
We evaluate the performance with wrk
for 1 minute
using 14 threads, 30 connections, and a static 612B HTML page.
./genimages.sh
downloads and builds the tested images and takes about 4 minutes on average;./benchmark.sh
runs the experiment and takes about 40-45 minutes on average; and,./plot.py
is used to generate the figure.