Performance

Sidecar performance depends on many factors, for example:

  • Number of client connections

  • Target request rate

  • Request size and response size

  • Number of proxy worker threads

  • Protocol

  • CPU cores

Number and types of proxy filters, specifically telemetry v2 related filters. The latency, throughput, and the proxies' CPU and memory consumption are measured as a function of these factors.

CPU and memory consumption

Since the sidecar proxy performs additional work on the data path, it consumes CPU and memory. As of Istio 1.12.3, a proxy consumes about 0.5 vCPU per 1000 requests per second.

The memory consumption of the proxy depends on the total configuration state the proxy holds. A large number of listeners, clusters, and routes can increase memory usage.

Since the proxy normally doesn’t buffer the data passing through, request rate doesn’t affect the memory consumption.

Additional latency

Since Istio injects a sidecar proxy on the data path, latency is an important consideration. Istio adds an authentication filter, a telemetry filter, and a metadata exchange filter to the proxy. Every additional filter adds to the path length inside the proxy and affects latency.

The Envoy proxy collects raw telemetry data after a response is sent to the client. The time spent collecting raw telemetry for a request does not contribute to the total time taken to complete that request. However, since the worker is busy handling the request, the worker won’t start handling the next request immediately. This process adds to the queue wait time of the next request and affects average and tail latencies. The actual tail latency depends on the traffic pattern.

Inside the mesh, a request traverses the client-side proxy and then the server-side proxy. In the default configuration of Istio 1.12.3 (that is, Istio with telemetry v2), the two proxies add about 1.7 ms and 2.7 ms to the 90th and 99th percentile latency, respectively, over the baseline data plane latency.

Adjusting sidecar resource quotas (CPU and memory)

Cluster Dimension

At the cluster level configuration of the service mesh, you can set the default Sidecar resource quotas (CPU and memory) for the cluster. When users add services, this configuration will be used as the Sidecar's resource quota by default.

Users with platform management permissions can navigate to the service mesh details page and, under the Configuration tab, adjust the default Sidecar resource quotas by updating the Cluster Dimension Configuration.

Specifying services

  • When adding a new service, set specific Sidecar resource quotas (CPU and memory).

  • After accessing the details page of an already added service, navigate to the Details tab and update the Sidecar configuration in the Sidecar