2c0ad4fbf5
Four sketches, queued by impact, each grounded in current code paths and observed benchmark numbers: - event-ingestion-batching: SQLite group commit + EVENT pipelining + off-thread Schnorr verify. Targets 5–10× EPS on a fast SSD. - live-broadcast-fanout-index: indexed filter matching to replace the O(N_subs × N_filters) per-event walk in LiveEventStore. Targets flat fanout p99 up to high subscriber counts. - connection-scaling: shrink the per-session outQueue footprint (currently the dominant per-conn cost), tune Ktor CIO group sizes, reduce JSON parse allocations. Targets 10 000+ concurrent conns. - negentropy-large-corpus: id-and-time-only snapshot path so NEG-OPEN on a 5M-event store doesn't materialise full Event objects, plus bounded-window defaults and concurrent-session caps. Each plan names the verification benchmark to add. Plans are queued, not committed work — README orders them by expected impact.
20 lines
1.0 KiB
Markdown
20 lines
1.0 KiB
Markdown
# geode plans
|
||
|
||
Performance-focused design docs for future work. Each file is a
|
||
self-contained sketch — problem statement, observed numbers, proposed
|
||
fix, how to verify, risks. None of these are committed work; they're
|
||
the queue.
|
||
|
||
Ordered roughly by expected impact:
|
||
|
||
| Plan | Headline gain |
|
||
| ---- | ------------- |
|
||
| [2026-05-07-event-ingestion-batching.md](2026-05-07-event-ingestion-batching.md) | 5–10× write EPS via SQLite group commit + ingest pipelining |
|
||
| [2026-05-07-live-broadcast-fanout-index.md](2026-05-07-live-broadcast-fanout-index.md) | >10× fanout speedup at >2 000 subscribers |
|
||
| [2026-05-07-connection-scaling.md](2026-05-07-connection-scaling.md) | 2 000 → 10 000+ concurrent connections |
|
||
| [2026-05-07-negentropy-large-corpus.md](2026-05-07-negentropy-large-corpus.md) | 25× lower memory + faster NEG-OPEN on M-event corpora |
|
||
|
||
Verification target for each plan is a new method on
|
||
`geode.perf.LoadBenchmark` (gated by `-DrunLoadBenchmark=true`) so
|
||
regressions show up in the regular CI matrix once they're enabled.
|