Skip to content

Commit 6896e97

Browse files
committed
docs(benchmarks): publish validated AWS baseline
1 parent d848f11 commit 6896e97

5 files changed

Lines changed: 203 additions & 321 deletions

File tree

ROADMAP.md

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -163,12 +163,17 @@ StreamForge aims to be the **fastest, most reliable, and easiest-to-use Kafka se
163163
- [x] Add single-destination produced accounting and focused regression tests
164164
- [x] Pass the loopback-only local Podman sustained validation with exact
165165
consumed, produced, delivered, output, and error counts
166+
- [x] Replace ad hoc AWS host provisioning with a cost-bounded private
167+
Terraform and ECS-on-EC2 benchmark environment
168+
- Keep the task and host in a private subnet with no public IP, internet
169+
gateway, NAT gateway, load balancer, SSH access, or public ingress
170+
- Gate billable runtime behind an explicit flag and hard expiry
171+
- Validate a publication-eligible three-repetition sustained baseline and
172+
destroy all provisioned resources
166173
- [ ] Run the corrected legacy/partition-ordered and
167174
acknowledged/queued live Kafka comparison matrix
168175
- [ ] Produce a clean-worktree, matched Java/Rust comparison before publishing
169-
a public throughput claim
170-
- [ ] Replace ad hoc AWS host provisioning with cost-bounded Terraform and
171-
ECS-on-EC2 benchmark jobs after the local comparison matrix passes
176+
a comparative throughput claim
172177
- [ ] Implement rebalance-aware completed-offset coordination before supporting
173178
partition-ordered manual commits
174179
- [ ] Profile transform-heavy and aggregation-heavy workloads

docs/IMPLEMENTATION_STATUS.md

Lines changed: 31 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -95,8 +95,8 @@ Implemented in the current source:
9595
rebalance-aware completed-offset coordination is implemented.
9696

9797
These modes are implemented and unit-tested. The partition-ordered/queued
98-
combination has completed a valid sustained local Kafka run; the remaining
99-
mode comparison matrix and a new AWS run are still pending.
98+
combination has completed valid sustained local and private AWS Kafka runs; the
99+
remaining mode comparison matrix is still pending.
100100

101101
Default compatibility values remain:
102102

@@ -169,8 +169,32 @@ Verified for the current source on 2026-07-25 UTC:
169169
- Kafka was published only on `127.0.0.1:9092`; the benchmark network was
170170
internal; ingress and output runners exposed no ports. Final topic and disk
171171
reclamation checks passed.
172-
- No AWS rerun has been attempted after the valid local result. All resources
173-
from the previous AWS attempt remain verified deleted.
172+
- The corrected private AWS harness passed three 120-second
173+
partition-ordered/queued repetitions after a one-million-record untimed
174+
warm-up per repetition. Each repetition reconciled exactly 16,200,000
175+
records across ingress, input offsets, consumed, produced, broker-delivered,
176+
output offsets, and the independent output validator, with zero errors.
177+
- Publication-eligible AWS aggregate at commit
178+
`d848f118e62b41c7605250c69c9da087af688d0c`: median
179+
`106,692.649362 msg/s`, minimum `106,651.683407`, maximum
180+
`106,798.575491`, coefficient of variation `0.0580%`, median `1.124`
181+
StreamForge mean cores, and median peak RSS `137.1 MiB`.
182+
- Environment: AWS `c7i.2xlarge`, Intel Xeon Platinum 8488C, 8 partitions,
183+
8 threads, and target ingress of 135,000 messages/second. All repetitions
184+
were classified as engine-saturated rather than ingress-limited.
185+
- The workload ran in a private subnet with no public IP, internet gateway,
186+
NAT gateway, load balancer, SSH access, or public security-group rule.
187+
PrivateLink endpoint ingress used security-group references only.
188+
- The ECR image scan completed with zero critical findings. The environment was
189+
intentionally isolated and ephemeral; inherited high and medium base-image
190+
findings remain a reason not to treat this benchmark image as a production
191+
runtime image.
192+
- `terraform destroy` reported 45 resources destroyed. Direct AWS service
193+
inventories then found zero live benchmark EC2 instances, volumes, ENIs,
194+
VPCs, endpoints, S3 buckets, ECR repositories, CodeBuild projects, IAM roles,
195+
active task definitions, or Auto Scaling groups. ECS retains only an
196+
`INACTIVE` deleted-cluster record with zero registered, running, or pending
197+
tasks.
174198

175199
Previously verified on 2026-07-24:
176200

@@ -214,9 +238,9 @@ from a blanket SIMD rewrite:
214238
partition-ordered/acknowledged, and partition-ordered/queued.
215239
2. Run a clean-worktree, matched Java/Rust comparison with identical payloads,
216240
partitions, acknowledgement semantics, warm-up, duration, and validation.
217-
3. Provision the later AWS benchmark with cost-bounded Terraform and
218-
ECS-on-EC2 jobs only after the local matrix passes; keep all endpoints
219-
private or restricted to the user's IP.
241+
3. Reuse the validated cost-bounded private Terraform/ECS environment for
242+
matched reruns; keep the billable runtime disabled except during a bounded
243+
measurement window.
220244
4. Keep raw/lazy envelope work behind the existing 30% parse/serialization
221245
threshold; the AWS passthrough profile measured about 16.5% parsing and 3.2%
222246
serialization on overlapping inclusive stacks.

docs/PERFORMANCE.md

Lines changed: 31 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,37 @@ StreamForge performance depends on payload size, partition count, broker and
1010
network latency, filter and transform complexity, destination fan-out, delivery
1111
semantics, and available CPU and memory.
1212

13-
No headline throughput result is published here. A result belongs in public
14-
documentation only when it comes from a reproducible end-to-end comparison,
15-
uses the same workload and delivery guarantees as the comparison target, and
16-
improves the approved baseline without correctness regressions.
13+
A throughput result belongs in public documentation only when it comes from a
14+
reproducible end-to-end run and passes the count, error, warm-up, duration, and
15+
variance gates below. Comparisons with another implementation additionally
16+
require the same workload and delivery guarantees.
17+
18+
## Validated sustained baseline
19+
20+
On 2026-07-25, the private AWS harness measured a median output-delivery rate of
21+
**106,693 messages/second** across three 120-second repetitions. The range was
22+
106,652–106,799 messages/second with 0.058% coefficient of variation.
23+
24+
| Workload property | Value |
25+
|---|---|
26+
| Mode | `partition_ordered` processing with queued delivery |
27+
| Host | AWS `c7i.2xlarge`, Intel Xeon Platinum 8488C |
28+
| Parallelism | 8 Kafka partitions, 8 StreamForge threads |
29+
| Ingress target | 135,000 messages/second |
30+
| Warm-up | 1,000,000 untimed records per repetition |
31+
| Timed validation | 16,200,000 records per repetition |
32+
| Correctness | Exact input, consumed, produced, delivered, and output counts; zero errors |
33+
| Resource use | 1.124 median mean CPU cores; 137.1 MiB median peak RSS |
34+
35+
The workload was a deterministic passthrough test on commit
36+
`d848f118e62b41c7605250c69c9da087af688d0c`. It ran in a private subnet with no
37+
public IP, internet gateway, NAT gateway, load balancer, SSH access, or public
38+
security-group rule. Terraform destroyed all 45 resources after collection.
39+
40+
This is a StreamForge baseline, not a Java comparison. A matched Java/Rust run
41+
remains required before making a relative implementation claim. The
42+
[full result and validation contract](https://github.com/rahulbsw/streamforge/blob/main/docs/benchmarks/results/BENCHMARK_RESULTS.md)
43+
are retained with the repository evidence.
1744

1845
## Runtime controls
1946

docs/benchmarks/README.md

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@ scripts/benchmarks/run_throughput_test.sh
1616
Criterion microbenchmarks remain under `benches/`.
1717

1818
[`results/phase2-baseline-20260724.md`](results/phase2-baseline-20260724.md) is
19-
a historical coupled-harness record. No schema-version-3 sustained result is a
20-
public baseline yet; the first validated local run was intentionally withheld
21-
because its worktree and saturation gates were not publication-eligible.
19+
a historical coupled-harness record. The current publication-eligible
20+
schema-version-3 AWS sustained baseline is
21+
[`results/BENCHMARK_RESULTS.md`](results/BENCHMARK_RESULTS.md). The first
22+
corrected local run remains diagnostic because its worktree and saturation
23+
gates were not publication-eligible.

0 commit comments

Comments
 (0)