Skip to content

docs(perf): flop subgame OOM measurement — 4-config wall+RSS sweep#186

Merged
amaster97 merged 1 commit into
mainfrom
flop-perf-measurement
May 28, 2026
Merged

docs(perf): flop subgame OOM measurement — 4-config wall+RSS sweep#186
amaster97 merged 1 commit into
mainfrom
flop-perf-measurement

Conversation

@amaster97

Copy link
Copy Markdown
Owner

Summary

Results

Config top_k iters Wall to terminal Peak RSS Outcome
0 (floor) 2 2 20:00 (timeout) 2.62 GB TIMEOUT
1 (minimal) 4 5 ~5:00 2.31 GB OOM (sig 9)
2 (moderate) 8 20 ~2:00-2:30 2.93 GB OOM (sig 9)
3 (light-prod) 15 50 ~10-20 s (sub-30s sample) OOM (sig 9)

Verdict: realtime flop subgame is NOT feasible at any tested configuration on the current implementation. Even the floor (3×2 classes, 2 iters) cannot complete in 20 minutes, ruling out "shrink top_k further" as a v1.9.0 fix.

Recommendation: v1.9.0 ships with flop = blueprint-only (PR #183's framing — already in v1.9.0 release-notes draft #185). Live flop deferred to v1.10 per docs/v1_10_postflop_optimization_plan.md Candidate A (arena) + Candidate C (vector-form flop forward walk).

Files

Engine and blueprint_subgame.py untouched. Uses PR #182's b/r token fix from main.

Test plan

  • Config 0 (top_k=2, iters=2) — TIMEOUT at 20:00, peak 2.62 GB
  • Config 1 (top_k=4, iters=5) — OOM at ~5:00, peak 2.31 GB
  • Config 2 (top_k=8, iters=20) — OOM at ~2:00-2:30, peak 2.93 GB
  • Config 3 (top_k=15, iters=50) — OOM at ~10-20s, peak unmeasured
  • Docs reference v1.10 plan (da38888) for authoritative root cause
  • Branch rebased onto current origin/main (HEAD f9dfd1d v1.9.0 release-notes draft)

Auto-merge OK — docs-only, doesn't touch engine.

🤖 Generated with Claude Code

Quantifies PR #183's "5+ min, killed" deferral via an empirical 4-config
sweep at the J7o A♦8♥9♦ flop after SB-opens-3bb → BB-calls:

| Config | top_k | iters | Wall to terminal | Peak RSS | Outcome |
|---|---|---|---|---|---|
| 0 (floor)        |  2 |  2 | 20:00 (timeout)  | 2.62 GB | TIMEOUT |
| 1 (minimal)      |  4 |  5 | ~5:00            | 2.31 GB | OOM (sig 9) |
| 2 (moderate)     |  8 | 20 | ~2:00-2:30       | 2.93 GB | OOM (sig 9) |
| 3 (light-prod)   | 15 | 50 | ~10-20 s         | (sub-sample) | OOM (sig 9) |

Validates: realtime flop subgame is NOT feasible at any tested config on
the current implementation. Even the floor (3×2 classes, 2 iters) cannot
complete in 20 minutes, ruling out "shrink top_k further" as a fix —
decision-node count dominates regardless of class count.

Defers to docs/v1_10_postflop_optimization_plan.md (da38888) for
authoritative root-cause analysis (dcfr_vector.rs:591-835 allocator
pressure) and 4-PR remediation roadmap. Confirms v1.9.0 ship
recommendation: flop = blueprint-only (PR #183's framing), live flop
deferred to v1.10.

Ships:
- docs/flop_subgame_perf_measurement_2026-05-28.md (this measurement)
- scripts/measure_flop_subgame_perf.py (reproducible single-flop driver)
- scripts/run_flop_perf_measurements.sh (RSS watcher + 20-min hard kill)

Engine and blueprint_subgame.py untouched.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@amaster97 amaster97 merged commit 629b5b2 into main May 28, 2026
5 of 8 checks passed
amaster97 added a commit that referenced this pull request May 28, 2026
Updates README + USAGE to reflect v1.10.0 ship state (combined v1.9.0
Premium-A + v1.10 postflop optimization MINOR bump) per the v1.9.0
audit (task #69) findings. v1.9.0 was drafted but never tagged; both
docs were stuck at v1.8.x prose.

README.md (+150/-80 net):
- Status: bump v1.8.0 -> v1.10.0; strike v1.6.0 fork-bomb warning
  (resolved in v1.8.0 PR #42 727206e; left a historical mention of
  what was fixed)
- Preflop blueprint mode: expand from 3 sentences to a full section
  covering the four-API surface (BlueprintLoader/interp/subgame/
  SolverRouter), Phase 6 UI wiring (PR #178 chart widget source
  badges + chained tab + live-solve confirmation modal), B10
  per-combo editor (PRs #149/#154/#158/#160), Phase 7+8 docs
  (PRs #175/#176), and v1.10 flop unblock (task #70)
- "What's new in v1.10.0" replaces "Recent changes (since v1.8.0)";
  cites per-PR for Premium-A train + v1.10 postflop optimization
- UI section: chart widget + chained tab now consume real solver
  (PR #178); standalone ad-hoc tab still mock (PR 10b pending)
- Known issues: strike v1.6.0 fork-bomb (resolved), replace with
  ad-hoc-signing + arm64-only framing

USAGE.md (+185/-100 net):
- Header: v1.8.x -> v1.10.0; rewrite document baseline + v1.10.0
  section pointer paragraph
- Path A (.dmg): remove "DO NOT LAUNCH" warning, document Gatekeeper
  override flow for ad-hoc-signed bundle
- New §5.10 "CLI BB-normalization (v1.9.0; canonical in v1.10.0)"
  covering --pot N --stack M canonical flags + --pot-bb/--stack-bb
  deprecation warning (PR #152)
- §5.9 Preflop blueprint: extend with chained postflop subgame
  example (solve_postflop_from_blueprint, PR #177) + top-level
  SolverRouter example (PR #181) + honest perf framing (flop
  unblocked but benchmark numbers TBD)
- §7b Known perf cliffs: bump from v1.7.x to v1.10.0; document flop
  unblock from v1.9.0 OOM-killed; preserve aggregator-recommended
  framing for production-scale chart generation
- §7 Known limitations: bump from v1.0.0 to v1.10.0; UI partial-real
  framing (chart widget + chained tab real; standalone tab still mock)
- §8 What's coming: drop completed items; flag v1.10 perf benchmark
  publication as next-up + PR 10b standalone-tab swap
- --version output: bump 1.8.0 -> 1.10.0

Ship date: 2026-MM-DD placeholder; honest framing throughout that
flop top_k=169 wall numbers are TBD by combined-stack benchmark
(task #70 PRs #186-#190 + PR-1 arena + PR-3 vector flop).

Co-authored-by: Claude Opus 4.7 (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.

1 participant