OpenMessaging Benchmark
Broker benchmarks
Compare throughput, tail latency and CPU use across published OpenMessaging Benchmark runs. Inspect release changes and the limits of each comparison.
These are our measurements using OMB, with source and configuration linked below.
Explore the charts Explore every captured sample Methodology and reproductionLatest full OMB run · krabka 1.0.5
What the measurements show
Shared page cache
krabka and Kafka use the Linux page cache in this suite. Compare all max-rate workloads, then inspect the differences.
14 workload / replication-factor pairs. 1 measured round per workload. 1 omitted trial across the full suite.
CPU efficiency index = publish rate ÷ total broker CPU time, relative to Kafka. CPU capture includes startup, warm-up and shutdown. This is a proxy, not CPU cost per delivered message.
Across published releases
See where the gap changed
The replicated 1 KiB workloads improved relative to Kafka across these runs. Check the full set alongside this group.
Disk preparation can change between runs; each row records SSD trim. These results do not isolate the effect of code changes.
Direct I/O: within 3% of Redpanda’s rate in 2 reported rounds
This separate experiment used main with #1373 and #1376 with preallocate=true, against Redpanda 26.2.2.
One RF1, 16-partition, 1 KiB max-rate workload. Trials ran interleaved after SSD trim on ext4 and mirrored NVMe drives. Figures are rounded in the source.
Redpanda had lower tail latency and disk utilization. CPU efficiency was not established for this experiment.
Read the direct I/O investigation| Round | krabka | Redpanda |
|---|---|---|
| 1 | 931k/s81 ms E2E p99 | 926k/s53 ms E2E p99 |
| 2 | 818k/s95 ms E2E p99 | 838k/s75 ms E2E p99 |
Results apply to this host and these workloads. Similar throughput does not establish equal latency or crash durability.
Workload by workload
Read the pattern across releases
Each cell compares krabka with a broker in the same run. Select a cell to inspect the captured intervals.
100% is the comparison broker. Favorable by more than 5% · within 5% · unfavorable by more than 5%. These bands are visual guides, not statistical significance.
Rates on fixed-load workloads can be capped by offered load. Max-rate workloads give a clearer view of throughput limits.
| Workload | 1.0.11 round · trim uncontrolled | 1.0.31 round · trim uncontrolled | 1.0.51 round · SSD trimmed |
|---|---|---|---|
| simple-workload | 100% | 100% | 100% |
| 1-topic-1-partition-1kb | 100% | 100% | 100% |
| 1-topic-1-partition-100b | 100% | 100% | 100% |
| 1-topic-16-partitions-1kb | 100% | 100% | 100% |
| backlog-1-topic-1-partition-1kb | 100% | 100% | 100% |
| backlog-1-topic-16-partitions-1kb | 100% | 100% | 100% |
| max-rate-1-topic-1-partition-1p-1c-1kb | 74% | 116% | 112% |
| max-rate-1-topic-1-partition-1p-1c-100b | 100% | 105% | 103% |
| 1-topic-3-partition-100b-3producers | 99% | 100% | 93% |
| max-rate-1-topic-16-partitions-1kb | 97% | 123% | 106% |
| max-rate-1-topic-16-partitions-100b | 113% | 92% | 53% |
| max-rate-1-topic-100-partitions-1kb | 95% | 110% | 112% |
| max-rate-1-topic-100-partitions-100b | 118% | 71% | 165% |
| simple-workload | 100% | 100% | 100% |
| 1-topic-1-partition-1kb | 100% | 100% | 100% |
| 1-topic-1-partition-100b | 100% | 100% | 100% |
| 1-topic-16-partitions-1kb | 100% | 100% | 100% |
| backlog-1-topic-1-partition-1kb | 100% | 100% | 100% |
| backlog-1-topic-16-partitions-1kb | 100% | 100% | 100% |
| max-rate-1-topic-1-partition-1p-1c-1kb | 75% | 72% | 101% |
| max-rate-1-topic-1-partition-1p-1c-100b | 92% | 92% | 96% |
| 1-topic-3-partition-100b-3producers | 81% | 69% | 94% |
| max-rate-1-topic-16-partitions-1kb | 72% | 98% | 104% |
| max-rate-1-topic-16-partitions-100b | 105% | 104% | 115% |
| max-rate-1-topic-100-partitions-1kb | 100% | 97% | 103% |
| max-rate-1-topic-100-partitions-100b | 108% | 101% | 87% |
Bars share a 0–200% scale; longer values stop at the edge and keep their numeric label. Every workload has equal weight in the median. Missing comparisons are excluded and counted.
Disk preparation changed in the latest run. Cross-release differences include test conditions. The full suite uses krabka’s shared page cache, not its direct I/O mode.
OpenMessaging Benchmark
The upstream OpenMessaging Benchmark workloads, run by its Kafka driver and Kafka 3.6.1 client against every broker: krabka-broker 1.0.5 (ac9deff, signed release), Apache Kafka 4.3.1, and Redpanda 26.2.2. The driver carries one patch, applied identically to every broker, that keeps at most one offset commit in flight, as Redpanda's fork of the benchmark does. All trials ran on one AMD EPYC 4344P 8-Core Processor host with 16 logical CPUs, the brokers one at a time, with fresh storage per trial, four CPUs and 10 GiB per broker, and a separate client. The run merges 3 invocations; RF1 and RF3 (9 workloads) came from invocations that did not finish cleanly, keeping only workloads whose trials had all completed and passed; anything left out was rerun for all three brokers, except the trials listed as not measured below. Each shard's source run and reason are in the provenance. Redpanda was not measured on 1-topic-3-partition-100b-3producers at RF3: Redpanda's trial reached the runner's 20 GiB disk reserve before its 15 minutes ended: with unlimited retention at RF3, its three brokers filled the about 670 GiB that was free above the reserve. The trial was not run again. 9 offset commits failed with a retriable error after a leader or coordinator move and were superseded by the next commit; these are counted, not failed. Run omb-local-2026-10-14, completed ; one round per workload.
Writes are buffered: Kafka and krabka acknowledge in-sync replication with acks=all; Redpanda acknowledges a Raft majority with write.caching=true. This does not establish equal crash durability.
OMB reports rates and latency, not exact delivery or duplicate checks. Backlog workloads fill a 100 GB backlog before consumers drain it, so their end-to-end latency includes that wait.
CPU and memory windows include client startup, warm-up, rate probing, measurement and shutdown. Results apply only to this runner, these images and these workloads.
Compare the results
Each chart compares the three brokers on one OMB workload. Bars start at zero and use a separate linear scale for each metric. Values are from one measured round.
1 topic · 10 partitions per topic · 1,024-byte messages · 10,000 messages/s offered · 5-minute measurement
- krabka
- 10,002 messages/s
- Apache Kafka
- 10,002 messages/s
- Redpanda
- 10,003 messages/s
- krabka
- 1.25 ms
- Apache Kafka
- 1.22 ms
- Redpanda
- 1.26 ms
- krabka
- 2.00 ms
- Apache Kafka
- 2.00 ms
- Redpanda
- 2.00 ms
1 topic · 1 partitions per topic · 1,024-byte messages · 50,000 messages/s offered · 15-minute measurement
- krabka
- 50,004 messages/s
- Apache Kafka
- 50,004 messages/s
- Redpanda
- 50,005 messages/s
- krabka
- 1.30 ms
- Apache Kafka
- 1.32 ms
- Redpanda
- 1.33 ms
- krabka
- 2.00 ms
- Apache Kafka
- 2.00 ms
- Redpanda
- 2.00 ms
1 topic · 1 partitions per topic · 100-byte messages · 50,000 messages/s offered · 15-minute measurement
- krabka
- 50,006 messages/s
- Apache Kafka
- 50,003 messages/s
- Redpanda
- 50,004 messages/s
- krabka
- 1.25 ms
- Apache Kafka
- 1.23 ms
- Redpanda
- 1.24 ms
- krabka
- 2.00 ms
- Apache Kafka
- 2.00 ms
- Redpanda
- 2.00 ms
1 topic · 16 partitions per topic · 1,024-byte messages · 50,000 messages/s offered · 15-minute measurement
- krabka
- 50,003 messages/s
- Apache Kafka
- 50,004 messages/s
- Redpanda
- 50,004 messages/s
- krabka
- 1.31 ms
- Apache Kafka
- 1.35 ms
- Redpanda
- 1.30 ms
- krabka
- 2.00 ms
- Apache Kafka
- 2.00 ms
- Redpanda
- 2.00 ms
1 topic · 1 partitions per topic · 1,024-byte messages · 100,000 messages/s offered · 5-minute measurement
100 GB backlog: end-to-end latency includes the wait before consumers drain it.
- krabka
- 100,005 messages/s
- Apache Kafka
- 100,004 messages/s
- Redpanda
- 100,006 messages/s
- krabka
- 10.26 ms
- Apache Kafka
- 45.39 ms
- Redpanda
- 1.40 ms
- krabka
- 1,037,762.56 ms
- Apache Kafka
- 1,038,172.16 ms
- Redpanda
- 1,037,959.17 ms
1 topic · 16 partitions per topic · 1,024-byte messages · 100,000 messages/s offered · 5-minute measurement
100 GB backlog: end-to-end latency includes the wait before consumers drain it.
- krabka
- 100,007 messages/s
- Apache Kafka
- 100,004 messages/s
- Redpanda
- 100,005 messages/s
- krabka
- 5.07 ms
- Apache Kafka
- 9.26 ms
- Redpanda
- 1.48 ms
- krabka
- 1,076,977.66 ms
- Apache Kafka
- 1,038,213.12 ms
- Redpanda
- 1,038,163.97 ms
1 topic · 1 partitions per topic · 1,024-byte messages · 10,000,000 messages/s offered · 5-minute measurement
- krabka
- 1,139,780 messages/s
- Apache Kafka
- 1,016,551 messages/s
- Redpanda
- 1,054,932 messages/s
- krabka
- 103.50 ms
- Apache Kafka
- 93.53 ms
- Redpanda
- 39.35 ms
- krabka
- 104.00 ms
- Apache Kafka
- 96.00 ms
- Redpanda
- 43.00 ms
1 topic · 1 partitions per topic · 100-byte messages · 10,000,000 messages/s offered · 5-minute measurement
- krabka
- 3,593,900 messages/s
- Apache Kafka
- 3,497,974 messages/s
- Redpanda
- 3,973,941 messages/s
- krabka
- 110.75 ms
- Apache Kafka
- 77.21 ms
- Redpanda
- 43.81 ms
- krabka
- 111.00 ms
- Apache Kafka
- 79.00 ms
- Redpanda
- 45.00 ms
1 topic · 3 partitions per topic · 100-byte messages · Maximum sustainable rate (probed) · 15-minute measurement
- krabka
- 1,620,371 messages/s
- Apache Kafka
- 1,748,596 messages/s
- Redpanda
- 2,057,763 messages/s
- krabka
- 131.28 ms
- Apache Kafka
- 172.75 ms
- Redpanda
- 2.62 ms
- krabka
- 197.00 ms
- Apache Kafka
- 273.00 ms
- Redpanda
- 50.00 ms
1 topic · 16 partitions per topic · 1,024-byte messages · Maximum sustainable rate (probed) · 5-minute measurement
- krabka
- 741,306 messages/s
- Apache Kafka
- 697,199 messages/s
- Redpanda
- 908,991 messages/s
- krabka
- 175.35 ms
- Apache Kafka
- 174.07 ms
- Redpanda
- 47.90 ms
- krabka
- 177.00 ms
- Apache Kafka
- 177.00 ms
- Redpanda
- 52.00 ms
1 topic · 16 partitions per topic · 100-byte messages · Maximum sustainable rate (probed) · 5-minute measurement
- krabka
- 628,123 messages/s
- Apache Kafka
- 1,178,434 messages/s
- Redpanda
- 594,485 messages/s
- krabka
- 1.72 ms
- Apache Kafka
- 79.01 ms
- Redpanda
- 1.47 ms
- krabka
- 41.00 ms
- Apache Kafka
- 89.00 ms
- Redpanda
- 33.00 ms
1 topic · 100 partitions per topic · 1,024-byte messages · Maximum sustainable rate (probed) · 5-minute measurement
- krabka
- 818,326 messages/s
- Apache Kafka
- 729,900 messages/s
- Redpanda
- 897,697 messages/s
- krabka
- 144.21 ms
- Apache Kafka
- 150.29 ms
- Redpanda
- 48.05 ms
- krabka
- 146.00 ms
- Apache Kafka
- 153.00 ms
- Redpanda
- 53.00 ms
1 topic · 100 partitions per topic · 100-byte messages · Maximum sustainable rate (probed) · 5-minute measurement
- krabka
- 2,229,882 messages/s
- Apache Kafka
- 1,353,444 messages/s
- Redpanda
- 625,489 messages/s
- krabka
- 137.03 ms
- Apache Kafka
- 66.79 ms
- Redpanda
- 1.61 ms
- krabka
- 141.00 ms
- Apache Kafka
- 72.00 ms
- Redpanda
- 17.00 ms
1 topic · 10 partitions per topic · 1,024-byte messages · 10,000 messages/s offered · 5-minute measurement
- krabka
- 10,003 messages/s
- Apache Kafka
- 10,003 messages/s
- Redpanda
- 10,002 messages/s
- krabka
- 1.76 ms
- Apache Kafka
- 1.60 ms
- Redpanda
- 1.42 ms
- krabka
- 2.00 ms
- Apache Kafka
- 2.00 ms
- Redpanda
- 2.00 ms
1 topic · 1 partitions per topic · 1,024-byte messages · 50,000 messages/s offered · 15-minute measurement
- krabka
- 50,004 messages/s
- Apache Kafka
- 50,004 messages/s
- Redpanda
- 50,004 messages/s
- krabka
- 457.44 ms
- Apache Kafka
- 475.20 ms
- Redpanda
- 1.54 ms
- krabka
- 476.00 ms
- Apache Kafka
- 508.00 ms
- Redpanda
- 2.00 ms
1 topic · 1 partitions per topic · 100-byte messages · 50,000 messages/s offered · 15-minute measurement
- krabka
- 50,004 messages/s
- Apache Kafka
- 50,004 messages/s
- Redpanda
- 50,007 messages/s
- krabka
- 1.72 ms
- Apache Kafka
- 1.56 ms
- Redpanda
- 1.36 ms
- krabka
- 2.00 ms
- Apache Kafka
- 2.00 ms
- Redpanda
- 2.00 ms
1 topic · 16 partitions per topic · 1,024-byte messages · 50,000 messages/s offered · 15-minute measurement
- krabka
- 50,004 messages/s
- Apache Kafka
- 50,004 messages/s
- Redpanda
- 50,004 messages/s
- krabka
- 36.30 ms
- Apache Kafka
- 47.88 ms
- Redpanda
- 1.59 ms
- krabka
- 60.00 ms
- Apache Kafka
- 76.00 ms
- Redpanda
- 2.00 ms
1 topic · 1 partitions per topic · 1,024-byte messages · 100,000 messages/s offered · 5-minute measurement
100 GB backlog: end-to-end latency includes the wait before consumers drain it.
- krabka
- 100,009 messages/s
- Apache Kafka
- 100,008 messages/s
- Redpanda
- 100,004 messages/s
- krabka
- 700.51 ms
- Apache Kafka
- 871.62 ms
- Redpanda
- 1.69 ms
- krabka
- 1,037,574.14 ms
- Apache Kafka
- 1,038,852.10 ms
- Redpanda
- 1,037,684.74 ms
1 topic · 16 partitions per topic · 1,024-byte messages · 100,000 messages/s offered · 5-minute measurement
100 GB backlog: end-to-end latency includes the wait before consumers drain it.
- krabka
- 100,006 messages/s
- Apache Kafka
- 100,007 messages/s
- Redpanda
- 100,006 messages/s
- krabka
- 215.14 ms
- Apache Kafka
- 146.45 ms
- Redpanda
- 2.07 ms
- krabka
- 1,037,156.35 ms
- Apache Kafka
- 1,037,017.09 ms
- Redpanda
- 1,037,332.48 ms
1 topic · 1 partitions per topic · 1,024-byte messages · 10,000,000 messages/s offered · 5-minute measurement
- krabka
- 377,487 messages/s
- Apache Kafka
- 374,241 messages/s
- Redpanda
- 387,738 messages/s
- krabka
- 693.15 ms
- Apache Kafka
- 712.27 ms
- Redpanda
- 103.79 ms
- krabka
- 694.00 ms
- Apache Kafka
- 713.00 ms
- Redpanda
- 105.00 ms
1 topic · 1 partitions per topic · 100-byte messages · 10,000,000 messages/s offered · 5-minute measurement
- krabka
- 2,108,784 messages/s
- Apache Kafka
- 2,203,941 messages/s
- Redpanda
- 2,859,077 messages/s
- krabka
- 672.90 ms
- Apache Kafka
- 490.41 ms
- Redpanda
- 133.66 ms
- krabka
- 674.00 ms
- Apache Kafka
- 491.00 ms
- Redpanda
- 134.00 ms
1 topic · 3 partitions per topic · 100-byte messages · Maximum sustainable rate (probed) · 15-minute measurement
- krabka
- 1,531,034 messages/s
- Apache Kafka
- 1,622,371 messages/s
- Redpanda
- Not measured
- krabka
- 845.76 ms
- Apache Kafka
- 819.50 ms
- Redpanda
- Not measured
- krabka
- 1,702.01 ms
- Apache Kafka
- 1,488.01 ms
- Redpanda
- Not measured
Redpanda was not measured: Redpanda's trial reached the runner's 20 GiB disk reserve before its 15 minutes ended: with unlimited retention at RF3, its three brokers filled the about 670 GiB that was free above the reserve. The trial was not run again.
1 topic · 16 partitions per topic · 1,024-byte messages · Maximum sustainable rate (probed) · 5-minute measurement
- krabka
- 292,399 messages/s
- Apache Kafka
- 281,411 messages/s
- Redpanda
- 371,910 messages/s
- krabka
- 302.75 ms
- Apache Kafka
- 316.36 ms
- Redpanda
- 60.58 ms
- krabka
- 315.00 ms
- Apache Kafka
- 333.00 ms
- Redpanda
- 102.00 ms
1 topic · 16 partitions per topic · 100-byte messages · Maximum sustainable rate (probed) · 5-minute measurement
- krabka
- 313,798 messages/s
- Apache Kafka
- 271,813 messages/s
- Redpanda
- 350,888 messages/s
- krabka
- 3.10 ms
- Apache Kafka
- 20.22 ms
- Redpanda
- 2.02 ms
- krabka
- 439.00 ms
- Apache Kafka
- 468.00 ms
- Redpanda
- 385.00 ms
1 topic · 100 partitions per topic · 1,024-byte messages · Maximum sustainable rate (probed) · 5-minute measurement
- krabka
- 336,115 messages/s
- Apache Kafka
- 325,701 messages/s
- Redpanda
- 380,969 messages/s
- krabka
- 363.80 ms
- Apache Kafka
- 318.50 ms
- Redpanda
- 173.82 ms
- krabka
- 368.00 ms
- Apache Kafka
- 325.00 ms
- Redpanda
- 184.00 ms
1 topic · 100 partitions per topic · 100-byte messages · Maximum sustainable rate (probed) · 5-minute measurement
- krabka
- 287,511 messages/s
- Apache Kafka
- 331,275 messages/s
- Redpanda
- 364,312 messages/s
- krabka
- 3.00 ms
- Apache Kafka
- 50.53 ms
- Redpanda
- 2.12 ms
- krabka
- 303.00 ms
- Apache Kafka
- 297.00 ms
- Redpanda
- 262.00 ms
Read the source report or the full tables below. These charts compare aggregate results. Explore interval charts, resources, and trial data. Raw OMB interval data is also retained for this run.
Replication factor 1
| Workload | Offered | krabka | Apache Kafka | Redpanda | |||
|---|---|---|---|---|---|---|---|
| msg/s | E2E p99 | msg/s | E2E p99 | msg/s | E2E p99 | ||
| 10,000/s | 10,002 | 2.0 ms | 10,002 | 2.0 ms | 10,003 | 2.0 ms | |
| 50,000/s | 50,004 | 2.0 ms | 50,004 | 2.0 ms | 50,005 | 2.0 ms | |
| 50,000/s | 50,006 | 2.0 ms | 50,003 | 2.0 ms | 50,004 | 2.0 ms | |
| 50,000/s | 50,003 | 2.0 ms | 50,004 | 2.0 ms | 50,004 | 2.0 ms | |
| 100,000/s | 100,005 | 1,037.8 s | 100,004 | 1,038.2 s | 100,006 | 1,038.0 s | |
| 100,000/s | 100,007 | 1,077.0 s | 100,004 | 1,038.2 s | 100,005 | 1,038.2 s | |
| 10,000,000/s | 1,139,780 | 104 ms | 1,016,551 | 96 ms | 1,054,932 | 43 ms | |
| 10,000,000/s | 3,593,900 | 111 ms | 3,497,974 | 79 ms | 3,973,941 | 45 ms | |
| max (probed) | 1,620,371 | 197 ms | 1,748,596 | 273 ms | 2,057,763 | 50 ms | |
| max (probed) | 741,306 | 177 ms | 697,199 | 177 ms | 908,991 | 52 ms | |
| max (probed) | 628,123 | 41 ms | 1,178,434 | 89 ms | 594,485 | 33 ms | |
| max (probed) | 818,326 | 146 ms | 729,900 | 153 ms | 897,697 | 53 ms | |
| max (probed) | 2,229,882 | 141 ms | 1,353,444 | 72 ms | 625,489 | 17 ms | |
Replication factor 3
| Workload | Offered | krabka | Apache Kafka | Redpanda | |||
|---|---|---|---|---|---|---|---|
| msg/s | E2E p99 | msg/s | E2E p99 | msg/s | E2E p99 | ||
| 10,000/s | 10,003 | 2.0 ms | 10,003 | 2.0 ms | 10,002 | 2.0 ms | |
| 50,000/s | 50,004 | 476 ms | 50,004 | 508 ms | 50,004 | 2.0 ms | |
| 50,000/s | 50,004 | 2.0 ms | 50,004 | 2.0 ms | 50,007 | 2.0 ms | |
| 50,000/s | 50,004 | 60 ms | 50,004 | 76 ms | 50,004 | 2.0 ms | |
| 100,000/s | 100,009 | 1,037.6 s | 100,008 | 1,038.9 s | 100,004 | 1,037.7 s | |
| 100,000/s | 100,006 | 1,037.2 s | 100,007 | 1,037.0 s | 100,006 | 1,037.3 s | |
| 10,000,000/s | 377,487 | 694 ms | 374,241 | 713 ms | 387,738 | 105 ms | |
| 10,000,000/s | 2,108,784 | 674 ms | 2,203,941 | 491 ms | 2,859,077 | 134 ms | |
| max (probed) | 1,531,034 | 1.7 s | 1,622,371 | 1.5 s | not measured | — | |
| max (probed) | 292,399 | 315 ms | 281,411 | 333 ms | 371,910 | 102 ms | |
| max (probed) | 313,798 | 439 ms | 271,813 | 468 ms | 350,888 | 385 ms | |
| max (probed) | 336,115 | 368 ms | 325,701 | 325 ms | 380,969 | 184 ms | |
| max (probed) | 287,511 | 303 ms | 331,275 | 297 ms | 364,312 | 262 ms | |
Publish p99 and pinned images
| Workload | krabka | Apache Kafka | Redpanda |
|---|---|---|---|
| 1.3 ms | 1.2 ms | 1.3 ms | |
| 1.3 ms | 1.3 ms | 1.3 ms | |
| 1.2 ms | 1.2 ms | 1.2 ms | |
| 1.3 ms | 1.3 ms | 1.3 ms | |
| 10 ms | 45 ms | 1.4 ms | |
| 5.1 ms | 9.3 ms | 1.5 ms | |
| 104 ms | 94 ms | 39 ms | |
| 111 ms | 77 ms | 44 ms | |
| 131 ms | 173 ms | 2.6 ms | |
| 175 ms | 174 ms | 48 ms | |
| 1.7 ms | 79 ms | 1.5 ms | |
| 144 ms | 150 ms | 48 ms | |
| 137 ms | 67 ms | 1.6 ms |
| Workload | krabka | Apache Kafka | Redpanda |
|---|---|---|---|
| 1.8 ms | 1.6 ms | 1.4 ms | |
| 457 ms | 475 ms | 1.5 ms | |
| 1.7 ms | 1.6 ms | 1.4 ms | |
| 36 ms | 48 ms | 1.6 ms | |
| 701 ms | 872 ms | 1.7 ms | |
| 215 ms | 146 ms | 2.1 ms | |
| 693 ms | 712 ms | 104 ms | |
| 673 ms | 490 ms | 134 ms | |
| 846 ms | 819 ms | — | |
| 303 ms | 316 ms | 61 ms | |
| 3.1 ms | 20 ms | 2.0 ms | |
| 364 ms | 319 ms | 174 ms | |
| 3.0 ms | 51 ms | 2.1 ms |
- krabka-broker 1.0.5 (ac9deff, signed release)
- ghcr.io/krabka-io/krabka-broker:v1.0.5
- ghcr.io/krabka-io/krabka-broker@sha256:2a81d1ba38de4e8ffb032fedf67952845185158a7607ac76ba38fa162dc37e50
- Apache Kafka 4.3.1
- apache/kafka:4.3.1
- apache/kafka@sha256:77e3df9054047a88b520d0cc46e16696d3b22022e1d580aeccd2632df6532837
- Redpanda 26.2.2
- docker.redpanda.com/redpandadata/redpanda:v26.2.2
- docker.redpanda.com/redpandadata/redpanda@sha256:468bd13a9f2bd24794cb7fddc867c767fb1008b9a07b297b89fde48c564d7d96
The run summary lists every trial, and the provenance records the host, CPU sets, OMB commit, client jar hashes and effective driver settings.
Methodology and resource settings
Full runs preserve the upstream workload payloads, partition counts, offered rates, backlog sizes, and durations. The pinned OMB commit, driver patch, immutable broker images, host resources, and effective configurations are recorded in each run’s provenance. Smoke runs are wiring checks and cannot supply website figures.
Publish rates are means of OMB’s measurement intervals; p99 latency comes from OMB’s aggregate latency results. When a run has multiple rounds, the tables show medians across those rounds.
Proposed release gate · not yet automated
Qualify direct I/O before a release
The two reported rounds do not qualify a release. This plan tests each candidate against the previous release and the comparison brokers.
- Pin the comparison. Use immutable images for the candidate, previous release, Kafka and Redpanda. Record the OMB commit, hardware, kernel, filesystem and driver settings.
- Run both write modes. Run the full OMB catalog at RF1 and RF3, with krabka’s default settings and with
preallocate=true. VerifyO_DIRECTon open segment descriptors. Record fallback as a failed direct-mode qualification. - Control disk state and repeat. Trim before every trial, confirm free space and use fresh clusters. Run at least five measured rounds per configuration. Rotate broker order across rounds. Keep ext4 and XFS results separate.
- Review the distributions. Publish every round, median and range for throughput, publish and end-to-end p99 and p99.9. Align CPU and device telemetry with measurement intervals. Keep full-capture totals separate.
- Check correctness and recovery. Check acknowledged records after process termination, leader failover, restart and disk-full errors. Include retention, segment roll, compaction and catch-up reads. Test host power loss separately before a power-loss durability claim.
- Make a recorded release decision. Set workload budgets before the run. Proposed review triggers are a throughput drop above 5% or a p99 or CPU-cost increase above 10% against the previous release in the same mode. Repeat flagged pairs; do not claim statistical significance from these thresholds. Block qualification for correctness failures, missing required trials or unresolved regressions.
Publish direct-mode results separately from the default-mode suite. Archive raw OMB files, measurement timestamps, resource samples and all failed trials. A release note must state any qualification gap.
Read the qualification protocolRepeat the comparison
From this website repository, use Node 22.12 or later, JDK 17 or later, and native Linux/amd64 with local Docker. Check the benchmark instructions for resource requirements and deadlines.
# Resolve and check the pinned images and local prerequisites
npm run benchmark -- --suite openmessaging --dry-run
# Run the upstream OMB workload catalog on a Linux host with Docker
npm run benchmark -- --suite openmessaging
See the benchmark instructions for the upstream catalog, resource requirements, and publication checks.