Repository navigation
[Docs] File the performance inventory and close the PLE read-path knobs - #14
Merged
Merged
Conversation
Two things from one session: a page that records what has been tried (so the next session stops re-deriving it), and the first result from it. docs/PERF-NEXT.md: - kept levers, each with the number that earned it; - closed levers, each with the number that killed it (batch/slots, kv-grow, suffix-draft, prefill 16k/32k, 4-bit KV, PLE in RAM, expert-cache size, spec_min_p 0.7, spec_window, DFlash2 on SYCL); - the remaining cost shape: prefill 336 ms fixed + 0.67 ms/token over 18 fresh legs; - the untried list, ranked, each with evidence, cost and a first test — batch_after 1-2 first (already measured, not shipped), then attributing the 330 ms, then the SYCL residency router, prefill-chunk CIs, pool affinity, dispatch overhead, DFlash2. The PLE sweep, six card windows on the 0.2.13 tree, closes two knobs: - row cache 4 M rows and --ple-inflight 1024 are flat against a drift band of 0.2-3.6 %; - row cache 16 M rows (1.44 GB) costs 8-17 % prefill (fresh 4.2k, 8.8k, a 4.4k follow-up, 30k). So the 94 MB default and inflight 256 stand, and the fixed per-request cost is not PLE row-read starvation. Artifacts, configs, per-leg JSON, log and script are in dirigo-results/0.2.13-port/ple-sweep/. Production stayed on 0.1.58 throughout: each window's restore line shows :8095 http=200 with the engine 0.1.58, and the service was verified after the last one.
This was referenced Nov 14, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem and result
A month of performance work lives in 55 notes, a history table and a dozen scripts, and nothing in the repository says
which levers are already closed. This adds
docs/PERF-NEXT.mdwith that record, and reports the first experiment itproposed.
Result of that experiment: both PLE read-path knobs are closed. A 4 M-row cache and
--ple-inflight 1024are flat;a 16 M-row cache (1.44 GB) costs 8–17 % prefill. The 94 MB default and inflight 256 stand, and the ~330 ms fixed
per-request cost is not PLE row-read starvation.
Related discussion
none — documentation and evidence.
Approach
thinking suppression −58 % wall, parking off −25…−30 %, NVMe move, calibration 394→276 s, plus upstream's).
--batch2/4,--kv-grow,--suffix-draft/--lookup-chain,prefill 16k/32k,
--prompt-cache-tail,--conversation-cache-mib,spec-min-p 0.7,--mtp-max-t, 4-bit KV,PLE in RAM, expert-cache size,
spec_window, DFlash2 on SYCL, and now the PLE row cache and inflight.the engine is at parity with stock, so what is left is upstream's or in that fixed term.
attribution, the SYCL residency router (
route_prior.cuis CUDA-only; 12,288 of 24,576 experts are resident here),prefill-chunk intervals, pool affinity on the 7700X, SYCL dispatch overhead, DFlash2 on SYCL.
bench_prefill+longprobeon the 0.2.13 tree, one knob per window plus aclosing default repeat for drift, production restored between windows.
Validation
Passed:
two default arms: 0.2 % on fresh 4.2k, 3.6 % on 8.8k, ≤1.2 % elsewhere.
−17 % (4.4k follow-up), −10 % (30k), −9 % needle gain at most.
strata-b70restored after every window with:8095 http=200and engine0.1.58in the log, andchecked after the last one — the sweep never left the box down.
renders its four tables.
Failed:
none observed.
Not run:
the next experiment (item 2 in the new page), at 8–256-token prompts.
the page says so.
Limits
~/bin/strata-card-window.sh, copied into the folder as the script that produced the run.