Skip to content

bench(fullhistory): interactive HTML results explorer#758

Merged
chowbao merged 3 commits into
rpc-hackfrom
bench/results-html-explorer
Jun 4, 2026
Merged

bench(fullhistory): interactive HTML results explorer#758
chowbao merged 3 commits into
rpc-hackfrom
bench/results-html-explorer

Conversation

@chowbao

@chowbao chowbao commented Jun 4, 2026

Copy link
Copy Markdown
Contributor

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.
    • Queries tab: toggle machine / tier (hot·cold) / decode path (roundtrip·xdr-views) / concurrency, pick which of p50/p90/p99/max/ops to show, sortable table + bar chart.
    • Ingest tab: per-stage latencies with machine / tier / mode (view·parsed) / stage facets, plus a throughput table (hot·cold ledgers/s, build-txhash keys/s).
  • results/make_explorer.py — regenerates the HTML from a dir of per-machine run dirs (python3 make_explorer.py <run-root> <out.html>).
  • README + 2026-06-03 report link to it.

🤖 Generated with Claude Code

Simon Chow and others added 2 commits June 4, 2026 17:12
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>

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 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

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge 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.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 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".

Comment on lines +65 to +66
for tier in ("cold", "hot"):
queries += sweep_rows(d, f"{tier}-ledgers.csv", m, tier, "ledgers", "raw")

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge 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 👍 / 👎.

@chowbao chowbao merged commit b82a087 into rpc-hack Jun 4, 2026
14 of 15 checks passed
@chowbao chowbao deleted the bench/results-html-explorer branch June 4, 2026 18:53
chowbao pushed a commit that referenced this pull request Jun 9, 2026
…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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants