Skip to content

Commit b2ea96a

Browse files
kmbandyclaude
andcommitted
docs(wp): QD>4 hang fixed+validated (depth-8 no hang, 0.99 t/s); QD not the bottleneck
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014ZRfPpL8XFzk1hep9MMg9P
1 parent 945f907 commit b2ea96a

1 file changed

Lines changed: 23 additions & 0 deletions

File tree

docs/dev/weight-paging-batch-eval-continuation.md

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -511,3 +511,26 @@ still ahead.
511511
hits (routing locality low at this cache size). Levers to go higher: (1) fix the depth>4 hang → QD>4;
512512
(2) Phase 2 (dense on 6900XT eGPU frees full 32GB R9700 for expert cache); (3) Phase 3 frequency-biased
513513
retention + prefetch coverage. Slot-count alone is a weak lever. Phase 1 gate: PASSED (coherent, >>0.4).
514+
515+
---
516+
517+
## 2026-07-07 — QD>4 HANG FIXED (Codex, validated) + parallel Codex work
518+
519+
**QD>4 hang FIXED** (commit 945f9074a, merged): io_uring backends counted `pending_` when SQEs
520+
were PREPARED but ignored `io_uring_submit()`'s return. At depth 8/16 under resident-dense churn the
521+
CQ ring fills → `io_uring_submit` returns -EBUSY (SQEs NOT submitted) → a blocking wait_cqe waits for
522+
a req_id never kernel-owned → hang. Fix: track prepared-but-unsubmitted req_ids (pending_submit_
523+
deque), drain the CQ into the demux ready_ buffer on -EBUSY and retry; synthesize ErrorNoSubmit if
524+
truly stuck so waiters never hang. Applied to host + P2P io_uring. Regression test
525+
test_file_io_submit_batch_depth_one_targeted_waits. GPU-VALIDATED: depth-8 P2P resident-dense (was
526+
hanging) now health@40s, decode 0.9872 t/s, coherent ("...Rome in 753 BC."), sync_fallbacks=0.
527+
528+
**KEY FINDING: QD is NOT the bottleneck.** depth-8 (0.99) ≈ depth-4 (1.04). page_ins 11348,
529+
evictions 9359, prefetch_hit_rate 0% — the expert cache thrashes (2000 slots ≪ working set, low
530+
cross-token routing locality). The path to 1-3 t/s is Phase 2 (dense on 6900XT eGPU → full 32GB
531+
R9700 for expert cache) + Phase 3 (frequency-biased retention + prefetch coverage), NOT queue depth.
532+
533+
**Phase 2 committed on feat/wp-phase2 (Codex, d8196031a) — NOT yet GPU-validated.**
534+
--weight-paging-resident-device flag, dense→resident/expert→paging tensor_buft_overrides, per-device
535+
pager pools + relaxed >1-device guard, two-pool unit test. 38/38 unit tests. Needs multi-device
536+
forward validation on the R9700+6900XT(TB3) rig (cross-device activation copies are code-trace-only).

0 commit comments

Comments
 (0)