bench(fullhistory): interactive HTML results explorer#758
Conversation
Self-contained, offline HTML (all data embedded, vanilla JS, no deps) to filter and toggle the 2026-06-03 results: tier (hot/cold), decode path (roundtrip vs xdr-views), percentiles (p50/p90/p99/max/ops), machine, and concurrency — with a sortable table and a bar chart, plus an ingest tab (per-stage view/parsed + throughput). make_explorer.py regenerates it from a dir of per-machine run dirs. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Adds an SVG line graph (vanilla JS, no deps) above the bar chart in both tabs for straight cross-machine comparison: one line per series with a clickable legend to hide/show series. - Queries: x-axis = concurrency (1→16); series = machine·tier·workload·path. - Ingest: x-axis = pipeline stage; series = machine·tier/mode. Filter to one workload/path/tier (or tier/mode) to overlay the four machines. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 56398afd24
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
| "read_blocked": "driver.read_blocked", "fan_out_per_ledger": "driver.fan_out"}) | ||
| cw = next((r for r in rc(os.path.join(d, "cold-driver-view.csv")) if r["stage"] == "chunk_wall"), None) | ||
| if cw: | ||
| n = int(cw["n"]); secs = (int(cw["total_ns"]) / 1e9) / 8.0 # /chunk-workers |
There was a problem hiding this comment.
Avoid hard-coding cold ingest worker count
When the source runs were produced with a --chunk-workers value other than 8, this divides the summed chunk_wall time by 8 anyway, so the explorer reports cold ledgers/s scaled by the wrong worker count. Since make_explorer.py is documented as regenerating from a directory of per-machine run dirs, this should read the worker count from the input metadata or accept it as an argument instead of baking in this run's value.
Useful? React with 👍 / 👎.
Each data point gets a transparent hit-circle and an absolutely-positioned tooltip showing series, x value, and the current chart metric.
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: a99d5374da
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
| for tier in ("cold", "hot"): | ||
| queries += sweep_rows(d, f"{tier}-ledgers.csv", m, tier, "ledgers", "raw") |
There was a problem hiding this comment.
Parameterize the tx-page CSV size
When run-all-benches.sh is run with a PAGE_SIZE other than the default 20, the txpage benches write files named with that page size (for example cold-txpage-50-...-sweep.csv), but the explorer only looks for *-txpage-20-* files here. In that configuration the generated explorer silently omits all tx-page rows even though the benchmark data exists, so the page size should be detected from available CSVs or accepted as an input instead of hard-coded.
Useful? React with 👍 / 👎.
…d results (#762) Self-contained, offline-capable HTML explorer (same tool as #758) for the three synthetic datasets. The "profile" dimension (sac/token/soroswap) maps onto the explorer's per-subdir axis; UI labels relabeled machine->Profile. - adds make_explorer.py (from #758) + the generated 2026-06-09-synthetic-apply-load-explorer.html (all CSVs embedded; no deps). - fixes the cold-throughput calc: divide chunk_wall by the actual chunk-workers (= chunk count for these runs; override via COLD_CHUNK_WORKERS) instead of a hardcoded 8, so cold ledgers/s reads correctly (sac 20, token 38, soroswap 108). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Adds a self-contained, offline interactive HTML view of the 2026-06-03
bench-fullhistory results (follow-up to #750).
results/2026-06-03-explorer.html— embedded JSON + vanilla JS, no deps/server.results/make_explorer.py— regenerates the HTML from a dir of per-machine run dirs (python3 make_explorer.py <run-root> <out.html>).🤖 Generated with Claude Code