Performance
On a Hetzner Cloud ccx33 (8 dedicated vCPUs, 32 GB RAM), with telemetrygen
on a separate ccx33 (8 dedicated vCPUs, 32 GB RAM) in the same location over
a private network, Fanout v2026.10.7-alpha accepted 422,408 mixed
OpenTelemetry items/s for five minutes. The composition was 51,358 spans,
184,883 log records and 186,178 metric points per second. Every generator
exited successfully, there were zero dropped rows and no restarts, and
fanout repair verify validated the Parquet store. The run measured ingest only.
Setup and measurement
Section titled “Setup and measurement”Fanout ran alone on its ccx33 with dedicated AMD EPYC-Milan vCPUs. Both VMs ran Ubuntu 24.04 in Hetzner’s fsn1 location. telemetrygen v0.157.0 sent plaintext OTLP/gRPC over the private network, using 1,000-item batches and 8 workers per process.
The publish preset swept 1, 2, 4, 8, 16, 32 and 64 processes per signal
for traces, logs, metrics and mixed ingest, with three repetitions at each
process count. It then ran one five-minute mixed phase at 32 processes per
signal. Accepted throughput is the change in Fanout’s
fanout_ingest_rows_total counter over each measured phase.
The suite accepted 584.1 million items in total: 131,484,819 spans, 217,735,381 log records and 234,835,485 metric points.
Sustained mixed ingest
Section titled “Sustained mixed ingest”The sustained phase ran once for 302.9 seconds. Fanout averaged 7.33 CPU cores and reached 13.5 GiB peak RSS. The generator host averaged 7.01 of 8 CPU cores.
| Signal | Accepted items/s |
|---|---|
| Spans | 51,358 |
| Log records | 184,883 |
| Metric points | 186,178 |
| Mixed total | 422,408 |
telemetrygen keeps one trace export in flight per process, while log and metric processes keep eight, producing the measured composition.
The run measured ingest only, using synthetic, highly compressible telemetrygen payloads. Results describe this hardware.
Median peaks
Section titled “Median peaks”Each peak is the highest median accepted rate in that workload’s sweep. Ranges cover all three repetitions at the listed process count. CPU columns are median average cores at that count; each host has 8 cores.
| Workload | Median peak items/s | Processes per signal | Range items/s | Fanout CPU cores | Generator CPU cores |
|---|---|---|---|---|---|
| Mixed | 429,749 | 32 | 429,504–471,506 | 6.95 | 7.02 |
| Traces | 243,696 | 64 | 225,110–267,916 | 6.03 | 6.83 |
| Logs | 342,494 | 64 | 299,902–347,721 | 6.82 | 3.46 |
| Metrics | 540,102 | 64 | 293,700–543,941 | 5.83 | 4.64 |
Mixed sweep
Section titled “Mixed sweep”All rates below are accepted items/s across the three repetitions. CPU columns are median average cores per host.
| Processes per signal | Median items/s | Min items/s | Max items/s | Fanout CPU cores | Generator CPU cores |
|---|---|---|---|---|---|
| 1 | 41,300 | 40,269 | 41,362 | 4.92 | 0.31 |
| 2 | 81,075 | 80,661 | 81,651 | 4.44 | 0.65 |
| 4 | 148,972 | 130,086 | 154,626 | 5.09 | 1.33 |
| 8 | 244,888 | 219,064 | 273,901 | 6.06 | 2.56 |
| 16 | 330,232 | 325,618 | 364,301 | 6.39 | 4.29 |
| 32 | 429,749 | 429,504 | 471,506 | 6.95 | 7.02 |
| 64 | 422,667 | 384,338 | 441,460 | 6.79 | 7.49 |
Signal sweeps
Section titled “Signal sweeps”The charts use a shared vertical scale and an evenly spaced log2 process axis. Lines and points show the median; bands show the minimum and maximum across three repetitions. The diamond marks the sustained phase at 32 processes per signal. The shaded region marks generator CPU of at least 7 cores.
Evidence
Section titled “Evidence”The published evidence directory contains the raw artifacts, and its README summarises the run. It records all gates passing: successful generator exits, zero dropped rows, no restarts and a verified Parquet store.
The harness was clean at commit
8a2a28aafa828fc7967ba82a481c7cdb5c7e921e.
The Fanout release artifact
has SHA-256:
d1b602130463b38a03f7575c52c1c2178213839dbf276294abd57ce662c8756bReproduce
Section titled “Reproduce”From the fanout-bench repository, run the Hetzner provisioner with the same release, preset and repetition count:
scripts/hetzner.sh \ --fanout-version v2026.10.7-alpha \ --preset publish \ --repeat 3Both VMs default to ccx33. The publishing guide documents credentials, provisioning, the private network and artifact collection.