Predicted passage-overlap tiles are scheduled earlier (FI worst tile rank 116 -> 69, dispatch 0.95 -> 0.82 s); LOD0-1 publish from the base shape before far parents, which are built before LOD2 is queued. Every tile hash identical to L83 (all four whole views). Fast tier PASS. Cold LOD0-2 W8 / W12: SW 1.02 / 0.99, FI 2.26 / 2.18, TN 2.27 / 2.15, VS 1.13 / 1.09 s. Heaviest tiles (FI/TN junction band, z=-93) still take 0.5-0.7 s each, mostly full-grid fill; idealized floor ~0.92 s. Unreal scheduler not yet updated. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016dhxM43dnWvUu2B5Ph1iG1
70 lines
5.8 KiB
Markdown
70 lines
5.8 KiB
Markdown
# Linux 84 — lower the serial floor
|
||
|
||
## Verdict
|
||
|
||
Passage-overlap scheduling moves predicted heavy tiles earlier without changing density or mesh output. In the W16 profiles, the repeated FI tile `(0,1,-93,lod0)` moved from priority rank 116 to 69 and its median dispatch time fell from 0.945 s to 0.822 s. The same TN tile moved from rank 366 to 91 and dispatch fell from 1.294 s to 0.959 s. Its intrinsic service time did not fall: the heaviest full-grid tiles still take 0.5–0.7 s in the noisy W16 profiles.
|
||
|
||
LOD0–1 now publish from the base shape before far parents are built. The first attempt also released LOD2 early, but changed its pinned hash. The final schedule builds far parents before queuing LOD2, which preserves the exact owner hashes. This trims total shape work by about 11 ms for FI and 20 ms for TN; it does not remove the far-parent work.
|
||
|
||
## Slow LOD0 tiles
|
||
|
||
The repeat outliers sit in the FI/TN junction band: LOD0 tile `z=-93` spans `-744..-736 m`. The L83 FI maximum `(2,-2,-93)` is 4.1 m from the `passage/1-2/0` route, inside its 4.5 m radius; the L83 TN maximum `(1,-2,-93)` is 3.7 m away. The new maximum `(0,1,-93)` intersects that route. Each listed tile materialized all 42,875 density samples (a 35³ grid, 32,768 candidate cells); their MC grid-fill stage took 341–510 ms. By comparison, FI LOD0 p50 service was 0.8–2.8 ms across the three profiles, and TN p50 was 0.02–0.024 ms. Uniform sign proofs let most tiles skip the full grid; passage and mouth tiles remain unknown or mixed and cannot use that shortcut.
|
||
|
||
Slowest observed tile per view across three interleaved W16 profiles:
|
||
|
||
| View | L83 before | L84 after |
|
||
|---|---|---|
|
||
| FI | `(2,-2,-93)` 561 ms / 399 ms grid; `(1,-2,-93)` 497 / 419; `(1,1,-93)` 475 / 341 | `(0,1,-93)` 709 / 475; `(2,0,-92)` 587 / 499; `(2,-1,-92)` 585 / 502 |
|
||
| TN | `(1,-2,-93)` 556 ms / 443 ms grid; `(2,0,-93)` 463 / 348; `(3,-2,-93)` 448 / 407 | `(0,1,-93)` 605 / 510; `(1,1,-93)` 600 / 444; `(2,-1,-92)` 527 / 436 |
|
||
|
||
Entries show `service ms / MC grid-fill ms`; all are LOD0 with 42,875 samples. The observed maximum rose in this small W16 sample, so the scheduler is a queue-position fix, not a demonstrated reduction in per-tile compute. W8/W12 readiness improved, and whole-view hashes remained exact.
|
||
|
||
## Shape compile
|
||
|
||
Interleaved W16 medians (milliseconds):
|
||
|
||
| View/version | Local shapes | Intervals/signs | Surface band | Far parents | Total shape work |
|
||
|---|---:|---:|---:|---:|---:|
|
||
| FI L83 | 52 | 65 | 65 | 112 | 344 |
|
||
| FI L84 | 48 | 64 | 69 | 114 | 333 |
|
||
| TN L83 | 49 | 70 | 87 | 114 | 372 |
|
||
| TN L84 | 51 | 69 | 88 | 111 | 352 |
|
||
|
||
For L84, far parents are reported separately from the base compile. Tiles LOD0–1 run after the base compile; far parents are built after those tiles finish and before LOD2 is queued. The shape object adds far primitives and rebuilds spatial bins in place, so building it concurrently with density reads is unsafe. The controlled L83 shape totals were stable at 338–347 ms FI and 365–378 ms TN; the earlier ~1 s noisy outlier was not reproduced, and these runs do not identify its cause.
|
||
|
||
## Cold readiness
|
||
|
||
Each W8/W12 cell is the median of three measured interleaved pairs per stratum after one warmup per worker count. Values are seconds, `LOD0–2 / whole view`.
|
||
|
||
| Stratum | L83 W8 | L83 W12 | L84 W8 | L84 W12 |
|
||
|---|---:|---:|---:|---:|
|
||
| SW | 1.455 / 3.023 | 1.210 / 2.427 | 1.021 / 2.209 | 0.990 / 2.081 |
|
||
| FI | 2.478 / 3.791 | 2.328 / 3.566 | 2.264 / 3.429 | 2.180 / 3.341 |
|
||
| TN | 2.475 / 3.631 | 2.327 / 3.384 | 2.269 / 3.377 | 2.146 / 3.153 |
|
||
| VS | 1.205 / 2.242 | 1.274 / 2.254 | 1.127 / 2.080 | 1.086 / 2.023 |
|
||
|
||
FI/TN improve by 0.15–0.21 s at W8 and 0.15–0.18 s at W12, but still miss the approximately 1 s target. W12 helps over W8. L83 W12-to-W16 medians were flat: FI near/whole changed 2.328/3.566 to 2.342/3.608 s; TN changed 2.327/3.384 to 2.295/3.368 s.
|
||
|
||
CPUs 0–11 map to six physical cores with two logical threads each. The W16 traces reached 15 active workers while the queue remained over 1,500 tiles deep, so queue starvation is not the limit and W16 oversubscribes the pinned logical CPUs. No bandwidth counters were collected; these results cannot separate SMT contention from memory bandwidth.
|
||
|
||
## Updated floor and hashes
|
||
|
||
Adding total shape work to the median per-run slowest-tile service gives an idealized floor of about **0.92 s FI / 0.91 s TN**, with W16 noisy-run maxima near 1.04 s / 0.96 s. This is essentially the L83 ~1 s floor: far-parent deferral trims a few milliseconds of total work, while full-grid tile service remains the larger serial term.
|
||
|
||
Every L84 tile hash and whole-view aggregate matched L83 (zero mismatches):
|
||
|
||
| Stratum | Tiles | Density | Mesh | Payload | Topology |
|
||
|---|---:|---|---|---|---|
|
||
| SW | 2,850 | `40b76d0072a2adcd` | `8559df0850d4d7f1` | `7700965ff31ac702` | `0e7f2a16b4cc71a9` |
|
||
| FI | 2,249 | `99ca213b21ce86e4` | `2977525405b79fff` | `3d7d2efb581710bd` | `af1916c949224871` |
|
||
| TN | 2,233 | `8d23c26f5c092be1` | `15c3aad2e29d9ea0` | `3d48f68d511c21df` | `5b1584676884edd8` |
|
||
| VS | 2,329 | `876b44981d106be3` | `aaef57cb08bd6845` | `b19617df9f4acbb1` | `e8eee991260adff4` |
|
||
|
||
Fast tier passed all 274 checks. No Unreal `Source/` or Unreal-compiled Core files changed, so no Linux UE build was required.
|
||
|
||
## Failed runs
|
||
|
||
- Initial fast-tier launch at `Saved/Linux/l84/verify/runner.log` stopped before running gates because its round-specific binary was missing. The final fast run passed.
|
||
- The first W16 profile runner rejected a valid L83 FI run because its parser expected the new `far_shape` summary field. The parser was fixed and all 12 final interleaved profiles completed.
|
||
- Broad far-parent deferral failed the pinned owner LOD2 and whole-view hash gate. Deferring only until LOD0–1 finish, then publishing far parents before LOD2, passed the final fast and full-view hash checks.
|