wip(assembler): round S12 -- short ready queue keeps workers fed between ticks: full set 6.0 s -> 4.9 s

voxel.StreamingReadyQueueDepth=8 admits one extra worker-set of prioritized
tasks; voxel.StreamingBackgroundWorkerCap=1 sizes slots to the 8 TaskGraph
background workers actually running tile tasks. Full set 5.96 -> 4.91 s,
LOD0 1.40 -> 1.09 s, ring 0.49 -> 0.51 s, 40 m/s ring 75/75. Tick p95
+0.6 ms spawn / +0.26 ms walk, max flat. No geometry change.
Report: Standalone/Research/WorldAssemblerM3/Round16.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MmSoF64BbRFmk9C3p1VsBJ
This commit is contained in:
Fr0zkaandClaude Opus 5.5 committed 2026-10-19 14:29:38 +02:00
1 parent dd9bfd3217
commit 212814a75c
8 files changed
+554 -36

No files matched your search

+18
View File
@@ -1065,6 +1065,24 @@ cap and output-assembly costs, plus opt-in duplicated LOD8 XY evaluations. The S
`--far-horizon-lod8-step=128` restores S9 sampling for the negative control. See ARCHITECTURE §8.31
and [`Standalone/Research/WorldAssemblerM3/Round14/REPORT.md`](Standalone/Research/WorldAssemblerM3/Round14/REPORT.md).
### 3.18 Streaming worker supply and ready queue — World Assembler S12 / M3 Round 16
`AVoxelWorld::LoadTile` and `LoadCoreTile` retain the existing `UE::Tasks::Launch` background
priorities (`BackgroundHigh` for near work, `BackgroundNormal` for horizon work). The shared
scheduler now sizes streaming admission to the TaskGraph background worker count by default
(`voxel.StreamingBackgroundWorkerCap=1`) and admits a bounded ready queue of up to one worker-set
(`voxel.StreamingReadyQueueDepth=8` on the 8-background-worker host). This lets UE dispatch the next
already-admitted task as a worker becomes free without waiting for the next actor tick. Setting the
worker cap to `0` restores the prior logical-core cap; setting queue depth to `0` restores one-slot-per
worker admission. The moving near reserve grows with the ready queue, coarse/horizon work remains
under its separate cap, and moving LOD0 admission is limited to the actual worker slots so far work
cannot occupy reserved headroom. `bStreamingPlayerMoving` is a game-thread scheduler snapshot used
by both admission helpers. `worker_backend_config`, `streaming_worker_cap_readback`, and
`scheduler_admission` record the pool counts and effective CVar values. Per-tile trace rows record
submit/start/end times and the OS worker thread ID. No tile generation, mesh, density, collision, or
Core recipe output changes; recipe versions remain unchanged. See ARCHITECTURE §8.33 and
[`Standalone/Research/WorldAssemblerM3/Round16/REPORT.md`](Standalone/Research/WorldAssemblerM3/Round16/REPORT.md).
## 4. The density pipeline (most-edited hot path)
### 4.1 `GetDensityWithParams` (TunnelNetwork) — VoxelGenerator.cpp:3749