Benchmark Results & Methodology
Empirical measurements comparing Krabka against Strimzi (Apache Kafka on OpenJDK 21) under identical Kubernetes cluster topologies.
Latest matrix: commit a53aa0a • August 26, 2026
Memory Working Set (RSS)
Resident Set Size (RSS) memory consumption measured across idle state, sustained produce workload (50k msg/s), and multi-consumer fanout.
Krabka Broker (RSS) 114.2 MiB
Strimzi Kafka JVM (Heap + Off-Heap) 4,280 MiB
Krabka operates in a fraction of the memory because it avoids JVM object header bloat, uses zero-copy byte buffers with Tokio, and avoids speculative GC buffer reservations.
Cold Start & Failover Time
Elapsed time from Kubernetes pod launch until the broker joins the KRaft quorum and acknowledges its first produce request.
Krabka Startup Time 1.2 seconds
Strimzi JVM Startup Time 8.6 seconds
Native Rust compilation and immediate KRaft log recovery allow Krabka pods to reach Ready state and serve traffic in ~1.2 seconds without JVM classloading or JIT warm-up.
Workload Scenario Matrix
Throughput saturation and latency measurements across individual benchmark scenario runs.
| Scenario | Payload | Topology | Duration | Krabka Metric | Strimzi Metric | Advantage |
|---|---|---|---|---|---|---|
| small-msg-saturate | 100 B | 6p / RF=1 | 60 s | 182.4 MB/s | 74.8 MB/s | 2.44x |
| fixed-rate-latency | 1 KiB | 6p / RF=1 | 120 s | 1.4 ms (p99) | 8.2 ms (p99) | 82.9% |
| large-msg | 100 KiB | 6p / RF=1 | 60 s | 890.2 MB/s | 512.6 MB/s | 1.74x |
| failover | 1 KiB | 12p / RF=3 | 180 s | 1.8 s (failover) | 12.4 s (failover) | 6.89x |
| high-partition-saturate | 100 B | 100p / RF=3 | 60 s | 245 MB/s | 98.2 MB/s | 2.49x |
Reproducing the Benchmarks
All benchmarking scripts and Terraform recipes are open source in the krabka-o11y-demo repository.
git clone https://github.com/krabka-io/krabka-o11y-demo
cd krabka-o11y-demo/benchmarks
./run-suite.sh --cluster-type gke --target krabka --workload omb-standard