Kinvolk service mesh benchmark suite
For an introduction to the purpose of this repository please see our blog post.
This repository contains following subfolders:
scripts- Contains scripts to set up clusters and service meshes, and to run benchmarks
terraform- Contains Terraform code required for setting up cluster. See terraform/README.md for more details.
wrk2- Contains Dockerfile and kubernetes manifest templates for wrk2, which we use for generating load during benchmarks.
In order to run benchmark, following things needs to be set up:
- configure AWS credentials locally with
- make sure BGP is enabled in your packet project. Local BGP is sufficient.
- follow terraform/README.md for setting up Terraform requirements
- have an up-to-date installation of
kubectlfor your respective environment.
Set up a cluster and install a service mesh
You can now run either
The script will detect whether you already have a cluster working (by checking
kubectl) and either install the service mesh right away, or use
terraform to provision a new cluster first, then install the respective service
mesh. This level of automation lets you call setup-cluster.sh from other scripts.
Please note that you do not commit a cluster to a specific service mesh by running the setup script in either directory. You may, for example, remove a linkerd installation and switch to istio by running:
Run a benchmark
Before continuing, make sure the
KUBECONFIG environment variable points to
the kubernetes configuration of the correct cluster.
You're now set up to start a benchmark. You may specify the number of apps in the cluster, the benchmark run time, the requests per second, and the number of parallel connections / threads used by the benchmark load generator via the command line.
The following example starts a linkerd benchmark running 5 minutes, with 10 apps a constant request rate of 100RPS, using 8 load generator threads:
scripts/linkerd/benchmark.sh 10 5m 100 8
If you want to run a full series of benchmarks for linkerd, istio stock, istio tuned, and bare, simply issue:
scripts/linkerd/benchark-multi.sh 10 5m 100 8
Please note that you must always use scripts from the directory of your
respective cluster service mesh. If your cluster currently has istio installed,
please only use scripts from
After you finish running benchmarks, you can tear down infrastructure by going to
terraform directory and running
Once it's complete, it should be fine to remove