Skip to content

feat(website): add /benchmarks page with netem WAN harness numbers - #53

Merged
pvg13 merged 1 commit into
mainfrom
feat/website-benchmarks-page
May 7, 2026
Merged

feat(website): add /benchmarks page with netem WAN harness numbers#53
pvg13 merged 1 commit into
mainfrom
feat/website-benchmarks-page

Conversation

@pvg13

@pvg13 pvg13 commented May 7, 2026

Copy link
Copy Markdown
Owner

Summary

Publishes the latest snapshot from the netem-driven WAN harness on the website at `/benchmarks`. New page wired into the top nav alongside Docs / Examples / Demo.

What's on the page

Methodology — how each profile is shaped (`tc netem` inside Docker containers) and what we measure: time-to-first-sync, p50/p95 steady-state propagation over 50 writes, recovery time after a 5s blackhole.

Profile matrix — 12 profiles from `ideal` to `satellite`, populated with the most recent run's numbers. Source profiles span LAN, WiFi (home / busy / distant), mobile (5G / 4G fair / 4G bad / 3G), satellite, and a lossy LAN baseline.

```

Profile First sync p50 p95 Partition recovery
ideal 16 ms 16 ms 22 ms 2266 ms
lan_fast 23 ms 69 ms 71 ms 505 ms
ethernet_gigabit 24 ms 69 ms 71 ms 1776 ms
wifi_home 104 ms 95 ms 98 ms 512 ms
wifi_busy 160 ms 172 ms 213 ms 3619 ms
wifi_distant 798 ms 616 ms 824 ms 2191 ms
mobile_5g 216 ms 167 ms 198 ms 992 ms
cellular_fair 544 ms 357 ms 519 ms 3529 ms
cellular_bad 1973 ms 1761 ms 2718 ms 4098 ms
mobile_3g 759 ms 769 ms 1497 ms 1075 ms
satellite 4607 ms 3813 ms 5046 ms >240 s †
lossy_lan 26 ms 71 ms 1111 ms ‡ 2695 ms
```

Footnotes:

Extended scenarios — long-offline, container-restart, asymmetric peer pairs. The `long_offline_30s` on cellular_bad row reflects #39 (1 of 10 writes fails to converge under heavy loss + long offline).

DCUtR section — explains the engine's hole-punching support, links to #51 for why the local Docker bench doesn't yet exercise DCUtR end-to-end.

Run-it-yourself — exact command for reproducing the numbers locally.

Implementation

Numbers are hardcoded as `&[ProfileRow]` / `&[ScenarioRow]` const arrays in `website/src/pages/benchmarks.rs` so they're type-checked and trivially diffable. To refresh: re-run the matrix locally, update the arrays, push.

Test plan

  • `cargo build -p wavesync-website` — native build passes.
  • `cargo build -p wavesync-website --target wasm32-unknown-unknown` — wasm32 build passes (this is the build that ships).
  • Page renders sensibly in the desktop server-side build (verified via cargo build of the dioxus-fullstack target).

Related

Publishes the latest snapshot from the netem-driven WAN harness
under tests-e2e/. New page at /benchmarks with three sections:

- Methodology — how each profile is shaped (tc netem inside Docker
  containers) and what we measure (time-to-first-sync, p50/p95
  steady-state propagation, partition recovery).
- Profile matrix — 12 profiles from `ideal` to `satellite`,
  populated with the most recent run's numbers (AMD Ryzen, Linux
  6.19). Footnotes flag two known signals: satellite partition
  recovery exceeding the test cap on this run, and lossy_lan's 15x
  p50→p95 ratio (filed as #38).
- Extended scenarios — long-offline, container-restart,
  asymmetric. Includes the cellular_bad write-loss finding (#39).

Numbers are hardcoded as `&[ProfileRow]` / `&[ScenarioRow]` consts
so they're type-checked and trivially diffable. Re-run the matrix
locally and update these arrays to refresh published numbers.

Wired into the top nav alongside Docs / Examples / Demo.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@pvg13
pvg13 merged commit a24017c into main May 7, 2026
1 check passed
@pvg13
pvg13 deleted the feat/website-benchmarks-page branch May 7, 2026 21:34
pvg13 added a commit that referenced this pull request May 12, 2026
Publishes the latest snapshot from the netem-driven WAN harness
under tests-e2e/. New page at /benchmarks with three sections:

- Methodology — how each profile is shaped (tc netem inside Docker
  containers) and what we measure (time-to-first-sync, p50/p95
  steady-state propagation, partition recovery).
- Profile matrix — 12 profiles from `ideal` to `satellite`,
  populated with the most recent run's numbers (AMD Ryzen, Linux
  6.19). Footnotes flag two known signals: satellite partition
  recovery exceeding the test cap on this run, and lossy_lan's 15x
  p50→p95 ratio (filed as #38).
- Extended scenarios — long-offline, container-restart,
  asymmetric. Includes the cellular_bad write-loss finding (#39).

Numbers are hardcoded as `&[ProfileRow]` / `&[ScenarioRow]` consts
so they're type-checked and trivially diffable. Re-run the matrix
locally and update these arrays to refresh published numbers.

Wired into the top nav alongside Docs / Examples / Demo.
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.

1 participant