Repository navigation
Benchmarking infra: stellar-rpc-bench S3 bucket + benchmarking devbox #866
Copy link
Copy link
Closed
Labels
Description
TL;DR
Stand up the infrastructure the benchmark CI runs on: the stellar-rpc-bench S3 bucket, its IAM roles, and the compute pattern for benchmark runs. Automated campaigns run on per-run EC2 instances; the instance terminates when the run ends.
Compute model
- Automated campaigns (e2e benchmark campaigns workflow — dispatch, run on EC2, publish results #868) run on a per-run EC2 instance. The existing
ec2-leg.ymlreusable workflow launches it: m6id-class (currently m6id.2xlarge), 360-minute budget, terminated at run end. No state survives a run. Datasets come frominputs/; results land inresults/. - Hard requirement: local NVMe instance store. Hot-ingest fsync numbers are only meaningful on a real local block device. Network volumes absorb fsync and make ingestion look faster than it is. The run script probes fsync latency at boot and aborts the run on GB/s-class numbers.
S3 bucket + IAM
s3://stellar-rpc-benchwith two prefixes:inputs/(synthetic ledger datasets) andresults/(campaign output, hive-partitionedbench=/source=/profile=/date=/sha=/run=).- Bucket config: versioning, SSE (AES256), public-access block, bucket-owner-enforced object ownership.
- Roles:
- CI agent (instance) role: read
inputs/*, writeresults/*, listresults/*. - Admin/launcher roles: list
inputs/*andresults/*, readresults/*. rpc-bench-ingest: read-only OIDC role for the results-site repo (stellar-experimental/stellar-rpc-benchmarks). GetObject/ListBucket onresults/*only. No write path.
- CI agent (instance) role: read
- The terraform is drafted. It needs a PR and an Atlantis apply.
Chain configuration (secrets and variables)
- Results-site repo variable
RPC_BENCH_INGEST_ROLE_ARN= the applied role's ARN. - Dispatch credential for the publish step: a GitHub App with
actions: writeon the results-site repo, installed on both orgs →RPC_BENCH_APP_ID(variable) +RPC_BENCH_APP_PRIVATE_KEY(secret). A PAT (RPC_BENCH_VIEWER_DISPATCH_PAT) works as a stopgap. SLACK_BENCH_WEBHOOK_URLfor run notifications. A missing webhook warns; it never fails a green run.
Done when
- Bucket live. Both IAM probes pass: the read-only role reads but cannot write
results/; the instance role writesresults/and readsinputs/. - One end-to-end read test passes: hand-upload a past campaign under
results/…, dispatch the results site'singest.ymlat it, confirm the page renders. - Chain secrets and variables set.
- Synthetic datasets mirrored from their interim GCS location into
inputs/(Synthetic ledger datasets for Phases 1–3 ("golden packs") #867). Not blocking: pack-sourced runs are staged behind the first campaigns. - Standing devbox retired, after the first fully published automated campaign.
Related
- e2e benchmark campaigns workflow — dispatch, run on EC2, publish results #868 — the campaign workflow that runs on this infra
- Synthetic ledger datasets for Phases 1–3 ("golden packs") #867 — the datasets that land in
inputs/ - Run the Phase 1 benchmark campaign — ingest and reads at 2 s blocks #872 / Run the Phase 2 benchmark campaign — ingest and reads at 1 s blocks #873 / Run the Phase 3 benchmark campaign — ingest and reads at 600 ms blocks #874 — the phase campaigns that consume both
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
Type
Projects
- StatusShow more project fieldsDone
Activity
marwen-abid commentedon Aug 7, 2026
Shipped:
stellar-rpc-benchwith the agent role and lifecycle rules, applied.s3://stellar-rpc-bench/inputs/, byte totals verified.Remaining scope moves to #868, which this bucket serves:
SLACK_BENCH_WEBHOOK_URLfor campaign notificationsAuto-ingest (viewer role + dispatch secrets) is deferred until the benchmarks repo moves to the stellar org.