acdream/docs/research/2026-07-24-slice-a-rdp-baselines.md
Erik 2421d09f5d docs(perf): commit physical Slice A baselines
Capture the authoritative capped, uncapped, and dense-Arwic routes on the physical AMD display path. Preserve the portal allocation, exception-storm, and repeated-Caul memory failures as MP1c's before-state while unblocking the prepared-asset cutover.
2026-07-24 14:41:50 +02:00

72 lines
3.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Slice A corrected RDP baselines
**Date:** 2026-07-24
**Authority:** diagnostic only; these captures do not satisfy the physical-local
Slice A exit gate.
The corrected tooling was exercised over capped and uncapped nine-stop routes,
plus a pinned uncapped dense-Arwic sample. All runs reached the world, completed
their route, and disconnected gracefully. The final dense run was made after
binary provenance became part of every soak report: source and measured binary
were both commit `24f898c54d7c6547555a4402543b6a3cd7ced7f6`, the tracked source
tree was clean, and the report recorded an exact match.
The machine/display contract is defined in
[`2026-07-24-performance-reference-configuration.md`](2026-07-24-performance-reference-configuration.md).
The full sanitized figures and portal windows are in
[`2026-07-24-slice-a-rdp-baselines.json`](2026-07-24-slice-a-rdp-baselines.json).
Raw CSV, EventPipe, screenshot, and process logs are intentionally local,
untracked diagnostic artifacts.
## Headline measurements
| Capture | Frames | CPU p50 / p95 / p99 | GPU p50 / p95 / p99 | Frame-thread allocation p50 / max |
|---|---:|---:|---:|---:|
| Capped nine-stop | 17,400 | 31.240 / 31.868 / 33.032 ms | 3.626 / 5.826 / 6.807 ms | 31.6 KiB / 202.8 MiB |
| Uncapped nine-stop | 229,412 | 1.537 / 6.077 / 8.938 ms | 0.935 / 3.288 / 3.470 ms | 28.3 KiB / 206.3 MiB |
| Uncapped dense Arwic | 16,350 | 3.487 / 7.351 / 12.690 ms | 2.299 / 3.236 / 3.653 ms | 50.8 KiB / 31.7 MiB |
| Dense Arwic, stable 5 s | 925 | 4.802 / 7.422 / 8.281 ms | 2.711 / — / 3.242 ms | 36.8 KiB / 13.0 MiB |
The capped CPU distribution is the expected 32 ms RDP/pacing envelope, while
the GL timestamps show only 3.66.8 ms of ordinary GPU work. The corrected GPU
timer therefore no longer measures frame pacing as GPU submission time.
Portal materialization remains the dominant transient cost. The uncapped
Sawato materializations reached 206.3 MiB and 203.2 MiB of frame-thread
allocation in a single frame. Process-wide allocation averaged 48.5 MB/s over
the uncapped route, with 80 Gen-2 collections and a longest GC pause of
260 ms. This evidence keeps prepared-content work as the next architectural
priority.
## Observer effect
The dense-Arwic stationary sample was repeated without the process counter
observer. Enabling it changed CPU p50 by -1.4%, p95 by +2.9%, p99 by +2.5%,
GPU p50 by -0.6%, and frame-thread allocation p50 by -2.4%. Those differences
are within natural route variance, so the observer is suitable for directional
process-wide allocation and GC attribution.
## Contention attribution
The capped route recorded 5,994 contentions with stacks:
| Site | Count | Share |
|---|---:|---:|
| `DatDatabaseWrapper.TryGet` | 4,516 | 75.3% |
| `ObjectMeshManager.ProcessQueue` | 976 | 16.3% |
| `DecodedTextureCache.GetOrCreate` | 254 | 4.2% |
| `LandblockBuildFactory.Build` | 90 | 1.5% |
| `LiveEntityHydrationController.OnCreate` | 74 | 1.2% |
| `DatDatabaseWrapper.TryGetFileBytes` | 27 | 0.5% |
| Other | 57 | 1.0% |
This replaces speculation with a concrete ranking. It does not authorize
lock-shape changes yet; the prepared-content slices should first remove demand
from these paths and then the same capture must be repeated.
## Gate state
Slice As instrumentation and RDP validation are complete. The remaining exit
gate is a capped nine-stop, uncapped nine-stop, and pinned dense-Arwic capture
on the physical local AMD display path. Slice B is baseline-independent and may
proceed. Slice C remains blocked until the physical-local evidence is committed.