wip(assembler): round L7 -- shared column cache across workers: whole view 16-19% faster, world unchanged
SharedColumnCache.h: a world-owned, bounded 4-way second-tier cache of exact column values (heightfield and floating islands), keyed by recipe/plan identity plus content hash, XY and island id. Lock-free seqlock reads; set-local spin lock on misses. The FLazy thread-local tier stays first. 83.6% of repeated column work was cross-worker; formula evaluations -60.9%. W12 L1 view: Luna 2.165 -> 1.754 s; reviewer interleaved 2.059 -> 1.722 s. 8 m crossing new tiles 82 -> 52 ms. +66 MiB peak RSS. All hashes (whole view, per-LOD, exact queries, islands seed 0) identical at W1/W8/W12, Clang off and GCC default. MSVC/UBT not compiled here. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CSFYgsdW8ejZSyiMf4qRSX
This commit is contained in:
1 parent
9898e057fd
commit
4b1108bf86
12 files changed
+751
-92
No files matched your search
@@ -732,6 +732,15 @@ driven by `EditorBrush*` props.
|
||||
its default member initialization was never observable; removing that generated TLS leaf avoids
|
||||
constructor work without changing a height or density. Integer queries still read the cached
|
||||
payload, and fractional queries still use the same direct locals.
|
||||
- **Core shared column cache (L7)**: `Heightfield2D` and FloatingIslands keep their `FLazy`
|
||||
worker-local caches as the first tier. A world-owned, fixed-size four-way table is the second
|
||||
tier, keyed by recipe and plan identity plus content hash, exact XY, and an optional exact
|
||||
sub-domain identity (FloatingIslands uses the island stable ID). Hits read versioned atomic
|
||||
entries without taking a lock; misses take only their set's spin lock, recheck, compute once, and
|
||||
publish. The tables are bounded and die with the world after its tile work has drained. This
|
||||
deliberately adds shared reads on column-cache hits while preserving the no-lock hot-path rule;
|
||||
S14's purely worker-local cache remains the first lookup. Keep large worker-local storage behind
|
||||
`FLazy`, and do not make cache values or keys depend on engine objects.
|
||||
- **Sampler unknown-source audit**: the earlier plugin-side `FSurfaceColumn` constructor PCs no longer
|
||||
occur after the trivial-payload change. The largest remaining LOD0 unknown cluster in the final
|
||||
sampler raw CSV is `UnrealEditor-Core.dll + RVA 0xC080` (runtime PCs around
|
||||
@@ -1797,6 +1806,23 @@ page was added: cross-worker repeats alone do not establish a net page-cache win
|
||||
immutable-page lifetime rules would add ownership and memory cost. Round 18 changed no output or
|
||||
recipe version. See [`Standalone/Research/WorldAssemblerM3/Round18/REPORT.md`](Standalone/Research/WorldAssemblerM3/Round18/REPORT.md).
|
||||
|
||||
### 8.35 Shared Core column cache — World Assembler L7
|
||||
|
||||
L7 measured 1.34 million repeated formula evaluations on the W12 L1 view before sharing: 83.6%
|
||||
were another worker's XY, 4.0% were same-worker repeats after eviction, and 12.0% were halo/normal
|
||||
repeats. The world-owned shared second tier cut measured formula executions by 60.9% and improved
|
||||
median whole-view-ready time by 19.0%; moving 8 m and generating 144 entering tiles improved median
|
||||
wall time by 36.1%. Peak RSS rose by about 66 MiB. The cache is a bounded exact-value table rather
|
||||
than published pages; no scheduling affinity or page prefetch was needed to clear the measured
|
||||
whole-view threshold.
|
||||
|
||||
The thread-local first tier remains because it avoids shared atomics for local hits. The shared
|
||||
table has no lock on hits; only a miss takes a set-local spin lock. FloatingIslands' cache identity
|
||||
includes its island stable ID because distinct anchors can request the same XY with different
|
||||
column metrics. All W1/W12 L1 hashes, exact queries, and the seed-0 FloatingIslands fixture match
|
||||
the pre-L7 binary with Clang FP contraction off and GCC defaults. See
|
||||
[`Standalone/Research/WorldAssemblerM3/Linux7/REPORT.md`](Standalone/Research/WorldAssemblerM3/Linux7/REPORT.md).
|
||||
|
||||
## 9. Multiplayer model (listen-server first, dedicated-friendly)
|
||||
|
||||
> **Status: transport is DESIGN ONLY — nothing is networked in-tree yet** (no `Replicated`/`HasAuthority`/RPCs; a
|
||||
|
||||
Reference in new issue
Block a user