Skip to content
No description, website, or topics provided.
Branch: master
Clone or download
Latest commit e5f4244 May 28, 2019

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/ 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 aws configure
  • make sure BGP is enabled in your packet project. Local BGP is sufficient.
  • follow terraform/ for setting up Terraform requirements
  • install isitoctl binary
  • install Terraform binary
  • install terraform-provider-ct locally
  • install linkerd binary
  • have an up-to-date installation of kubectl for your respective environment.

Set up a cluster and install a service mesh

You can now run either

  • scripts/linkerd/ or
  • scripts/istio/

The script will detect whether you already have a cluster working (by checking with 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 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:

  • scripts/linkerd/
  • scripts/istio/

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/ 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/ 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 scripts/istio/.

Cleaning up

After you finish running benchmarks, you can tear down infrastructure by going to terraform directory and running terraform destroy. Once it's complete, it should be fine to remove assets directory.

You can’t perform that action at this time.