Contour / Envoy Resource Limits
Performance Testing Contour / Envoy
- Cluster Specs
- Kubernetes
- Version: v1.12.6
- Nodes:
- 5 Worker Nodes
- 2 CPUs Per Node
- 8 GB RAM Per Node
- 10 GB Network
- 5 Worker Nodes
- Contour
- Single Instance
- 4 Instances of Envoy running in a Daemonset
- Each instance of Envoy is running with HostNetwork
- Cluster Network Bandwidth
- Single Instance
- Kubernetes
Having a good understanding of the available bandwidth is key when it comes to analyzing performance. It will give you a sense of how many requests per second you can expect to push through the network you are working with.
Use iperf3 to figure out the bandwidth available between two of the kubernetes nodes. The following will deploy an iperf3 server on one node, and an iperf3 client on another node:
[ ID] Interval Transfer Bandwidth Retr
[ 4] 0.00-60.00 sec 34.7 GBytes 4.96 Gbits/sec 479 sender
[ 4] 0.00-60.00 sec 34.7 GBytes 4.96 Gbits/sec receiver
Memory / CPU usage
Verify the Memory & CPU usage with varying numbers of services, IngressRoute resources, and traffic load into the cluster.
Test Criteria | Contour | Envoy | |||||
#Svc | #Ing | RPS | CC | Memory (MB) | CPU% / Core | Memory (MB) | CPU% / Core |
0 | 0 | 0 | 0 | 10 | 0 | 15 | 0 |
5k | 0 | 0 | 0 | 46 | 2% | 15 | 0% |
10k | 0 | 0 | 0 | 77 | 3% | 205 | 2% |
0 | 5k | 0 | 0 | 36 | 1% | 230 | 2% |
0 | 10k | 0 | 0 | 63 | 1% | 10 | 1% |
5k | 5k | 0 | 0 | 244 | 1% | 221 | 1% |
10k | 10k | 0 | 0 | 2600 | 6% | 430 | 4% |
0 | 0 | 30k | 600 | 8 | 1% | 17 | 3% |
0 | 0 | 100k | 10k | 10 | 1% | 118 | 14% |
0 | 0 | 200k | 20k | 9 | 1% | 191 | 31% |
0 | 0 | 300k | 30k | 10 | 1% | 225 | 40% |