ci: measure the control-plane throughput ceiling on kind#931
Conversation
The sustained claims/sec harness (bench/claim --mode sustained, aggregated by the unit-tested internal/benchstat.AggregateThroughput) existed but produced no recorded number. Wire it into the kind-e2e job so every run drives claims at a fixed rate against the mock dev-default pool and records the achieved control-plane claims/sec plus per-node density as an artifact. This is the etcd / apiserver / reconciler ceiling on one kind node with the mock engine: NOT hardware density and NOT the warm-husk activation path, stated so in bench/results/control-plane-throughput-method.md. The gate is correctness only (completed > 0, achieved/sec > 0), never an absolute rate, so it cannot flake on shared runners. Closes the "measure it" half of issue #15 item 2; the hardware density curve stays open pending the #16 reference node. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Signed-off-by: Jannes Stubbemann <jannes@openclaw.rocks>
|
Warning Review limit reached
Next review available in: 58 minutes Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: Organization UI Review profile: ASSERTIVE Plan: Pro Plus Run ID: 📒 Files selected for processing (3)
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
First recorded datapoint from this jobs kind-e2e run (artifact Target arrival was 5/s; achieved was ~2/s. That gap (achieved below target) is the saturation signature the method note describes, so even this single kind node with the mock engine already shows the control-plane knee. This number is heavily shaped by the CI environment (kind etcd on slow disk, mock forkd gRPC, shared-runner CPU) and is NOT a production or hardware-density claim, per |
Thinking Path
Linked Issues or Issue Description
Related: #15
What Changed
.github/workflows/ci.yaml: after the mock control plane is Ready and the dev-default pool has a snapshot, runbench/claim --mode sustained(rate 5/s, 20s, max-concurrent 8) against it; assert only correctness (completed > 0, achieved/sec > 0) so shared-runner variance cannot flake it; upload the result JSON as thecontrol-plane-throughput-mockartifact.bench/results/control-plane-throughput-method.md: the method and, explicitly, what the number is (the etcd/apiserver/reconciler ceiling on one kind node, mock engine) and is not (hardware density; the warm-husk activation path).BENCHMARKS.md: update the [EPIC] Benchmark program: reproducible numbers or no numbers #15 item 2 status to point at the CI datapoint and the method note.Verification
actionlint .github/workflows/ci.yaml: clean for the added steps (the only two warnings it reports are pre-existing, at lines far from this change).go build ./bench/claim/: the harness the step invokes builds.bench/sustained-claims-throughput.shper the method note.Risks
Low risk. The step runs after the existing "sandbox create reaches Ready" step on the same mock control plane and gates on correctness only, so it adds no new flake surface. Worst case is a genuine control-plane regression (claims stop reaching Ready under load), which is exactly what it should catch; on failure it dumps sandbox state and controller logs.
Model Used
Claude Opus 4.8 (1M context), model id
claude-opus-4-8, high reasoning effort.Checklist