Benchmarks
On this page
NOTE: We are actively compiling benchmark stats on the latest
roarversion. Contact us for more information.
This page reports performance characteristics for the parts of roar whose overhead users actually feel: the tracer backends, the S3 proxy, and the content-hashing pipeline. The point isn't a single benchmark headline, but to provide enough detail to predict overhead on your own workload and pick configurations that match your performance budget.
All benchmarks are reproducible. Setup notes per section.
Tracers
How much wall-clock overhead each tracer backend adds on top of a baseline command. See Tracers for the backend mechanics and tradeoffs that explain why the numbers differ.
| Workload | Baseline | eBPF | preload | ptrace |
|---|---|---|---|---|
cat <small file> | TODO | TODO (~?%) | TODO (~?%) | TODO (~?%) |
python -c "pass" | TODO | TODO | TODO | TODO |
python train.py (MNIST baseline) | TODO | TODO | TODO | TODO |
dd if=/dev/zero of=out bs=1M count=1024 | TODO | TODO | TODO | TODO |
Per-syscall overhead breakdown, per backend:
| Backend | Per-syscall overhead |
|---|---|
| eBPF | TODO (in-kernel filtering; cheapest) |
| preload | TODO (libc interposition; very cheap on dynamically-linked binaries) |
| ptrace | TODO (two context switches per syscall; meaningfully higher) |
Setup: TODO — hardware, kernel version, what's running, how many trials.
Proxy
How much overhead the S3 proxy adds on top of direct-to-S3 traffic. The proxy stands between an AWS SDK client and S3, re-signs each request, and forwards the result. Measurements should isolate the proxy's own work from network round-trip variability.
| Operation | Direct-to-S3 | Through proxy | Overhead |
|---|---|---|---|
GetObject (1 KB) | TODO | TODO | TODO |
GetObject (1 MB) | TODO | TODO | TODO |
GetObject (100 MB) | TODO | TODO | TODO |
PutObject (1 MB) | TODO | TODO | TODO |
| Multipart upload (1 GB, 8 MB parts) | TODO | TODO | TODO |
Sustained throughput on bulk transfers:
| Direct | Through proxy | |
|---|---|---|
Single-stream GetObject | TODO MB/s | TODO MB/s |
Multi-stream (16-way) GetObject | TODO MB/s | TODO MB/s |
Setup: TODO — bucket region vs. host region, network class, MinIO local vs. real-AWS, etc.
Hashes
Throughput of the supported hash algorithms on the same hardware, measured on disk-backed reads.
| Algorithm | Throughput (single-threaded) | Throughput (SIMD / multi-threaded) |
|---|---|---|
| blake3 | TODO GB/s | TODO GB/s |
| sha256 | TODO GB/s | sha256 doesn't parallelize across one input |
| sha512 | TODO | sha512 doesn't parallelize across one input |
| md5 | TODO | md5 doesn't parallelize across one input |
How that translates to wall-clock cost for typical artifact sizes:
| File size | blake3 | sha256 |
|---|---|---|
| 10 MB | TODO | TODO |
| 100 MB | TODO | TODO |
| 1 GB | TODO | TODO |
| 10 GB | TODO | TODO |
Setup: TODO — CPU, disk class, whether the file is page-cached or cold, hashing library versions.