> ## Documentation Index
> Fetch the complete documentation index at: https://docs.odigos.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Pipeline Benchmarks

> Choose the right ResourceSizePreset for your cluster based on telemetry volume and scale.

export const BenchmarksChart = ({flavor = "enterprise"}) => <Frame caption="Certified stable capacity by ResourceSizePreset">
    <img className="block dark:hidden" src={`/images/shared/pipeline/benchmarks-${flavor}-light.png`} alt="Benchmark throughput by ResourceSizePreset" />
    <img className="hidden dark:block" src={`/images/shared/pipeline/benchmarks-${flavor}-dark.png`} alt="Benchmark throughput by ResourceSizePreset" />
  </Frame>;

export const flavor = "enterprise";

The [ResourceSizePreset](./configuration#1-using-sizing-configuration) profiles (`size_s`, `size_m`, `size_l`, and `size_xl`) map collector resources and scaling headroom to telemetry volume. Use this page to assist you in picking a preset.

## Total span throughput

You should calculate your system's current span throughput in bytes/second. This will affect the size of cluster you'll need to choose.

To measure throughput in the Odigos UI and get collector-level health metrics, enable the own metrics store on the [Odigos Own Metrics](./odigos-own-metrics) page, then compare your observed bytes/sec against the preset tables below.

Do note that while span throughput is a measurable metric, there are additional components which contribute variably to the maximal span throughput your Odigos can handle:

* **Number of instrumented workloads** — more services and pods mean more spans and metrics flowing through the pipeline.
* **Telemetry volume per workload** — high-throughput APIs, verbose instrumentation, or payload collection increase per-node load.
* **Destinations** — additional exporters, batching, and tail sampling add gateway CPU and memory pressure.

## Cluster preset vs. total span throughput

### Cluster gateway collector, per single collector:

| Size      | Span throughput (MB/second) | Spans/second | Request CPU (m) | Limit CPU (m) | Request Memory (Mi) | Limit Memory (Mi) |
| --------- | --------------------------- | ------------ | --------------- | ------------- | ------------------- | ----------------- |
| `size_s`  | **10**                      | **5,400**    | **300m**        | **300m**      | **300Mi**           | **300Mi**         |
| `size_m`  | **35**                      | **19,200**   | **1,000m**      | **1,000m**    | **600Mi**           | **600Mi**         |
| `size_l`  | **42**                      | **23,400**   | **1,250m**      | **1,250m**    | **850Mi**           | **850Mi**         |
| `size_xl` | **59**                      | **32,400**   | **1,500m**      | **1,500m**    | **2,000Mi**         | **2,000Mi**       |

<BenchmarksChart flavor={flavor} />

### Maximum scaled cluster gateway capacity, for the entire cluster:

| Size      | HPA Maximum Replicas | Span throughput (MB/second) | Spans/second |
| --------- | -------------------- | --------------------------- | ------------ |
| `size_s`  | **5**                | **50**                      | **27,000**   |
| `size_m`  | **8**                | **280**                     | **153,600**  |
| `size_l`  | **12**               | **504**                     | **280,800**  |
| `size_xl` | **15**               | **885**                     | **486,000**  |

<Note>
  These throughput numbers come from the benchmark cluster described below. Actual limits vary with workload shape, destinations, and cluster size.
</Note>

## How did we test this?

We've modeled our benchmark tests against a "typical" cluster, which has:

* 120 nodes
* 500 sources (=span emitters)
* 2 different service
* Span is \~1,918B, contains:
  * 9 HTTP semconv attributes
  * 24 random attributes
* Each trace has a server span and a client span
* 100 spans per request
* A mock destination with a 200ms response time

## Troubleshooting

If you experience any of the following symptoms consistently:

* Memory limit hits or OOMKills
* CPU throttling under steady load
* Gateway HPA scaling to max replicas frequently
* Export backlogs or dropped spans at destinations

Try to bump the preset or tune individual `collectorGateway` / `collectorNode` values on the [Configuration](./configuration) page.

## Getting Help

If you have any issues, or require our assistance, please open an issue in [GitHub](https://github.com/odigos-io/odigos), or reach out to us in [Odigos Slack](https://join.slack.com/t/odigos/shared_invite/zt-24u91yknm-0fLXu6qnqYfNHS_GSUgTJw)
