Canonical benchmark suites + ideal-configuration guardrails#6
Conversation
…oint-fix suites + findings
- gke/durable-streams-splitlane{,-guaranteed}.yaml: stream data on its own NVMe
lane, WAL shards on dedicated lanes; guaranteed variant = requests==limits
everywhere + integer server CPU for exclusive cores under static CPU manager.
Recreate strategy + hostPath base volume (emptyDir teardown recursed through
stale lane mounts and wiped the next server's dirs).
- cluster-up.sh: STATIC_CPU=1 -> kubelet cpuManagerPolicy=static on server pool.
- lib-bench.sh: SPLITLANE=1 / GUARANTEED=1 manifest selection.
- suites + results: wal-decomp-lane0, wal-splitlane, wal-sizetrigger, wal-cpubind
(cliff eliminated: 10.4k -> 328k @100k streams; see reports + AGENTS.md).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Y3x7bcT9vLGiT4tXZeQpnk
…-X, fail-hard create) Stacked ideal config (split-lane + syncfs + 1GiB size-trigger + pinned cores): 383k @100k (37x campaign total), 244k @500k, 56k @1m — a NEW mechanism appears near 1M streams (fd count / dir scale / working set), next investigation. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Y3x7bcT9vLGiT4tXZeQpnk
…-diag telemetry harness wal-1m-diag: root cause = checkpoint syncfs writeback of ~200k dirty files on ONE data device (60-74s per barrier, ~40x metadata amplification of small appends); fds peaked at 1,005,724 (96% of ceiling — adjacent risk, not the cause). wal-streamlanes-1m: 3 stream lanes + 3 WAL shards -> 374k/285k/212k @100k/500k/1M, syncfs 5.7-11.2s. New: splitlane3x3-guaranteed manifest, SERVER_MANIFEST override, DS_BENCH_BARRIER_TIMEOUT_SECS=3600 for 1M setups. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Y3x7bcT9vLGiT4tXZeQpnk
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Y3x7bcT9vLGiT4tXZeQpnk
…d §0)
Six canonical suites replace the ad-hoc set as the maintained benchmarks:
canonical-write (durable-streams wal-ideal per WAL_TUNING.md + memory),
canonical-write-ursula (upstream v0.2.0), canonical-sustained,
canonical-reads-{catchup,live,sse}. Each _doc states reference numbers and the
regression gate (wal-ideal@100k < 250k / memory@100k < 400k / >30% cardinality
drop = the cliff is back). AGENTS.md §0 documents the do-not-break invariants:
stream data never on the boot PD, WAL lanes != data lanes, Guaranteed+static
CPU, size-triggered checkpoints, memory arms need --tier off (server refuses
memory+tier), removed-flag list, persisted layout knobs.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Y3x7bcT9vLGiT4tXZeQpnk
…REPORT_TEMPLATE.md
- suites/: only the 7 canonical suites remain (write, write-ursula,
reads-catchup, reads-sse, mixed-{cal,writes,delivery}), matching exactly the
workloads we report (template: the 2026-07-02 report structure). Long-poll and
sustained are not in the reported set and were dropped.
- results/ + results-2026-07-02/: deleted (git history keeps them). The
2026-07-02 write numbers were later found inflated (physics-impossible
2.05M @500k on 4 CPUs, wal > memory) — superseded by canonical references.
- REPORT_TEMPLATE.md: the report skeleton + a pre-publication caveat checklist
encoding every past numbers-inflation failure (storage layout, window
alignment, ladder-vs-plateau, digest provenance, physics sanity, cardinality
shape, client-bound cells).
- AGENTS.md: §0/§1 aligned to the canonical set.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Y3x7bcT9vLGiT4tXZeQpnk
A shared cluster_name override made the wal and ursula modes (which the harness runs in PARALLEL, one cluster per mode by design) race to create the same cluster; the loser had no kube context. Reverting to the derived per-mode names/zones. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Y3x7bcT9vLGiT4tXZeQpnk
…ENANCE.md Write: wal-ideal 417k/382k @10k/100k, memory 680k/632k (gates passed, no cliff); ursula v0.2.0 baselines. Reads: wal cardinality-flat (2.3-2.7 GiB/s catchup; SSE p99 2-3ms @2048 conns). Mixed: 100k readers cost writes nothing; 2026-07-02 memory delivery collapse is gone (126.7k del/s @ 127k writes). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Y3x7bcT9vLGiT4tXZeQpnk
Canonical campaign complete (2026-07-14) — all gates passed ✅Full Write (electric#4697 build, ideal config): wal-ideal 417k @10k / 382k @100k, memory 680k / 632k — no cardinality cliff (−8%/−7%), both regression gates passed with wide margin, physics-sane (memory > wal, unlike the retracted 2026-07-02 numbers). ursula v0.2.0: mem ~49–55k flat, disk 4.5–8.3k. Reads: wal cardinality-flat — catch-up 2.3–2.7 GiB/s at 10 AND 100 streams; SSE tail p99 2–3 ms up to 2048 conns. ursula degrades at 100 streams in both (catch-up errors out — its historic ceiling). Mixed interference: 100k concurrent catch-up readers cost the pinned 50k write path nothing (303 MiB/s of replay served alongside). And the 2026-07-02 memory-mode delivery collapse is gone: delivery tracks writes 1:1 to 127k/s. Ops notes: every suite self-tore-down; zero clusters at campaign end. Two orchestration restarts happened (reads suites' cluster-name race — fixed in Ready for review/merge. |
9f7e2b8 to
2e9783b
Compare
Makes the cardinality-cliff campaign's findings operational — and carries the first full canonical campaign run (2026-07-14).
What's here
suites/canonical-*.json, 7 suites) — the maintained benchmarks covering the reported workloads: write saturation (durable-streams wal-ideal + memory; ursula v0.2.0), catch-up reads, SSE tail, mixed interference (cal / paced-readers / delivery). Each suite's_doccarries its reference numbers and regression gate. Legacy suites (80) and all previous results deleted — git history keeps them; the 2026-07-02 write numbers were found physics-inflated and are superseded.--tier offon memory arms, removed-flag list) so the 37× write recovery doesn't get silently broken again.REPORT_TEMPLATE.md— campaign report skeleton + a pre-publication caveat checklist encoding every past numbers-inflation failure (storage layout, window alignment, ladder-vs-plateau, digest provenance, physics sanity, cardinality shape, client-bound cells).STATIC_CPU=1node pools,SPLITLANE/GUARANTEED/SERVER_MANIFESTselectors, cluster-up hardening (fail-hard create, mktemp fix), 1M-stream barrier timeouts, plus all cliff-campaign suites/results/findings.Canonical campaign results (2026-07-14, electric#4697 head —
results/REPORT.md)All suites self-tore-down; zero clusters at campaign end (verified).
🤖 Generated with Claude Code
https://claude.ai/code/session_01Y3x7bcT9vLGiT4tXZeQpnk