You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
We can only benchmark ingestion/query against real captured ledgers today. We want a controllable dataset whose transaction profile we set deliberately (tx mix, Soroban load, etc.), so we can characterize how ingestion and queries behave under specific load shapes rather than only whatever pubnet happened to produce.
The bench (cmd/stellar-rpc/scripts/bench-fullhistory) already abstracts ingest input behind --source (sources.go: pack, bsb) as a ledgerbackend.LedgerStream. cold-ingest/hot-ingest consume it; the resulting cold packfiles + hot RocksDB feed the cold-*/hot-* query benches.
Chunk size is fixed at LedgersPerChunk = 10_000 (pkg/chunk/chunk.go).
Proposed work
Synthetic generator — a command/tool that runs loadtest.ApplyLoad with a given apply-load config and writes a chunk-aligned dump of K × 10_000 ledgers. Reproducible (config + seed) so runs are comparable.
New bench source — --source=synthetic (synthStream) yielding the dump's raw ledgers per chunk, so cold-ingest/hot-ingest run unchanged on it. (alt: reuse --source=bsb against a local datastore)
Query benches — confirm the cold packs + hot store produced by ingesting the synthetic source feed cold-*/hot-* with no further changes (point --cold-dir/hot store at the synthetic-derived outputs).
Acceptance criteria
Generate an N-chunk synthetic dataset from an apply-load config.
cold-ingest/hot-ingest --source=synthetic --types=... ingest it and report per-stage timings.
Motivation
We can only benchmark ingestion/query against real captured ledgers today. We want a controllable dataset whose transaction profile we set deliberately (tx mix, Soroban load, etc.), so we can characterize how ingestion and queries behave under specific load shapes rather than only whatever pubnet happened to produce.
Background
go-stellar-sdkPR ingest/loadtest: add stellar-core apply-load tooling go-stellar-sdk#5940 (merged) addsingest/loadtest.ApplyLoad, which drives stellar-core's apply-load to emit synthetic ledgers from a.cfgprofile (default-apply-load.cfg).cmd/stellar-rpc/scripts/bench-fullhistory) already abstracts ingest input behind--source(sources.go:pack,bsb) as aledgerbackend.LedgerStream.cold-ingest/hot-ingestconsume it; the resulting cold packfiles + hot RocksDB feed thecold-*/hot-*query benches.LedgersPerChunk = 10_000(pkg/chunk/chunk.go).Proposed work
loadtest.ApplyLoadwith a given apply-load config and writes a chunk-aligned dump ofK × 10_000ledgers. Reproducible (config + seed) so runs are comparable.--source=synthetic(synthStream) yielding the dump's raw ledgers per chunk, socold-ingest/hot-ingestrun unchanged on it. (alt: reuse--source=bsbagainst a local datastore)cold-*/hot-*with no further changes (point--cold-dir/hot store at the synthetic-derived outputs).Acceptance criteria
cold-ingest/hot-ingest --source=synthetic --types=...ingest it and report per-stage timings.cold-*/hot-*query benches.Dependencies
go-stellar-sdkdep bumped to a revision includingingest/loadtest(ingest/loadtest: add stellar-core apply-load tooling go-stellar-sdk#5940).stellar-corebinary with apply-load support available to the generator.Open question
Source wiring — dedicated
--source=synthetic(A) vs reuse--source=bsbover a local datastore (B).