Skip to content

Performance

On a Hetzner Cloud ccx33 (8 dedicated vCPUs, 32 GB RAM), with telemetrygen on a separate ccx33 over a private network, Fanout v2026.10.8-alpha accepted 415,859 mixed OpenTelemetry items/s over 303.5 seconds. The composition was 57,037 spans, 179,134 log records and 179,688 metric points per second. The run measured ingest only.

Both hosts were described as Hetzner Cloud ccx33, fsn1, ubuntu-24.04. The Fanout host reported AMD EPYC-Milan Processor, 8 logical CPUs and 32,857,198,592 bytes of memory. 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 ran 1, 2, 4, 8, 16, 32 and 64 processes per signal for traces, logs, metrics and mixed ingest, with 3 repetitions per point. Accepted throughput is the change in Fanout’s fanout_ingest_rows_total counter over the measured scrape window.

The suite accepted 575.8 million items in total: 135,133,541 spans, 210,698,970 log records and 229,999,166 metric points.

The sustained phase ran for 303.5 seconds at 32 processes per signal. Fanout averaged 7.24 CPU cores and reached 11.4 GiB peak RSS. The generator host averaged 7.44 of 8 CPU cores.

SignalAccepted items/s
Spans57,037
Log records179,134
Metric points179,688
Mixed total415,859

telemetrygen keeps one trace export in flight per process, while log and metric processes keep eight. Synthetic, highly compressible telemetrygen payloads measure ingest capacity on this hardware.

Each peak is the highest median accepted rate in that workload’s recorded sweep. Ranges cover the three repetitions at the listed process count. CPU columns are median average cores at that count; each host has 8 cores.

WorkloadMedian peak items/sProcesses per signalRange items/sFanout CPU coresGenerator CPU coresRepetitions
Mixed402,06232357,956–433,3397.077.343
Traces248,90132207,920–295,5666.225.193
Logs387,57964353,862–393,9766.854.633
Metrics524,87864472,496–561,0006.065.313

All rates below are accepted items/s across three repetitions per mixed process count. CPU columns are median average cores per host.

Processes per signalMedian items/sMin items/sMax items/sFanout CPU coresGenerator CPU cores
139,04138,29639,1494.720.80
277,78475,22178,5734.301.77
4146,792146,445155,9624.861.87
8223,985216,861238,9936.063.03
16359,086335,283379,2196.355.78
32402,062357,956433,3397.077.34
64385,274384,289414,3156.867.35

The charts share a vertical scale and an evenly spaced log2 process axis. Lines and points show the median; bands show the recorded minimum and maximum. The diamond marks the sustained phase at 32 processes per signal. The shaded region marks generator CPU of at least 7 cores.

Traces sweepaccepted items/s
Traces accepted throughput by processes per signalMedian line and minimum-to-maximum band across the recorded repetitions at each process count; the suite requests 3 repetitions. The horizontal axis is evenly spaced on a log2 scale; the vertical axis runs from zero to 600,000 accepted items per second. At 1 processes: 13,620 items/s, range 13,619 to 13,699, 3 repetitions. At 2 processes: 27,131 items/s, range 26,662 to 27,318, 3 repetitions. At 4 processes: 54,472 items/s, range 52,886 to 54,500, 3 repetitions. At 8 processes: 107,347 items/s, range 105,220 to 109,337, 3 repetitions. At 16 processes: 187,925 items/s, range 149,404 to 209,724, 3 repetitions. At 32 processes: 248,901 items/s, range 207,920 to 295,566, 3 repetitions. At 64 processes: 221,096 items/s, range 213,246 to 231,153, 3 repetitions.
medianmin–max
Logs sweepaccepted items/s
Logs accepted throughput by processes per signalMedian line and minimum-to-maximum band across the recorded repetitions at each process count; the suite requests 3 repetitions. The horizontal axis is evenly spaced on a log2 scale; the vertical axis runs from zero to 600,000 accepted items per second. At 1 processes: 12,634 items/s, range 12,628 to 12,829, 3 repetitions. At 2 processes: 25,759 items/s, range 24,687 to 25,771, 3 repetitions. At 4 processes: 49,485 items/s, range 49,365 to 49,973, 3 repetitions. At 8 processes: 101,384 items/s, range 101,109 to 103,201, 3 repetitions. At 16 processes: 151,645 items/s, range 144,120 to 184,552, 3 repetitions. At 32 processes: 282,251 items/s, range 234,547 to 300,455, 3 repetitions. At 64 processes: 387,579 items/s, range 353,862 to 393,976, 3 repetitions.
medianmin–max
Metrics sweepaccepted items/s
Metrics accepted throughput by processes per signalMedian line and minimum-to-maximum band across the recorded repetitions at each process count; the suite requests 3 repetitions. The horizontal axis is evenly spaced on a log2 scale; the vertical axis runs from zero to 600,000 accepted items per second. At 1 processes: 12,983 items/s, range 12,979 to 13,064, 3 repetitions. At 2 processes: 25,338 items/s, range 25,334 to 26,069, 3 repetitions. At 4 processes: 47,784 items/s, range 47,331 to 48,182, 3 repetitions. At 8 processes: 86,388 items/s, range 84,021 to 105,921, 3 repetitions. At 16 processes: 190,894 items/s, range 189,639 to 200,063, 3 repetitions. At 32 processes: 301,283 items/s, range 257,260 to 351,972, 3 repetitions. At 64 processes: 524,878 items/s, range 472,496 to 561,000, 3 repetitions.
medianmin–max
Mixed sweepaccepted items/s
Mixed accepted throughput by processes per signalMedian line and minimum-to-maximum band across the recorded repetitions at each process count; the suite requests 3 repetitions. The horizontal axis is evenly spaced on a log2 scale; the vertical axis runs from zero to 600,000 accepted items per second. At 1 processes: 39,041 items/s, range 38,296 to 39,149, 3 repetitions. At 2 processes: 77,784 items/s, range 75,221 to 78,573, 3 repetitions. At 4 processes: 146,792 items/s, range 146,445 to 155,962, 3 repetitions. At 8 processes: 223,985 items/s, range 216,861 to 238,993, 3 repetitions. At 16 processes: 359,086 items/s, range 335,283 to 379,219, 3 repetitions. At 32 processes: 402,062 items/s, range 357,956 to 433,339, 3 repetitions. At 64 processes: 385,274 items/s, range 384,289 to 414,315, 3 repetitions. The diamond marks the sustained phase: 415,859 items/s at 32 processes per signal over 303.5 seconds. Shading marks generator CPU of at least 7 cores.
medianmin–max415,859/s sustained at 32

The published evidence contains report.json and samples.jsonl, produced by Fanout Bench on 16 October 2026 at 17:36 UTC. All quality gates passed: successful generator exits, zero dropped rows, no restarts, authoritative accepted-row counters in every phase and verified Parquet storage.

The harness commit was 8f5864ba488d9802f68250d85f67b6658ab13af5. The Fanout release artifact has SHA-256:

b314920221693683b7d6ff42787a37e82bee1fbdd7ddcc8647d1905f7629ac6b

From the fanout-bench repository:

Terminal window
scripts/hetzner.sh \
--fanout-version v2026.10.8-alpha \
--preset publish \
--repeat 3

Both VMs default to ccx33. The publishing guide documents provisioning, the private network and artifact collection.

Regenerate the website’s data from the completed run:

Terminal window
node site/scripts/benchmark-data.mjs report.json samples.jsonl EVIDENCE_URL

Update authored headline figures with the report; the site build checks them against the data.