docs: the frozen-world memory delta, measured - 12x quieter, not silent

A frozen guest still changes ~30000 words a second (180952-235973 in 6 s, 0.2% of
the data) against 1863296 in 4 s (2.08%) while running. By region the frozen
activity concentrates in 0xbf900000/0xbfa00000, in 0xbe0-0xbe3 00000, and in the
0x704/0x705 pages that the boot log shows are guest thread STACKS - frame churn,
which is what a spinning thread looks like.

Stated plainly as not-yet-interpretable: there is no matched region breakdown for
the RUNNING case, because the control predates the summary. Those regions may
simply be the busiest ones at all times, and one run fixes that.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PMRJjbxLqZtsb5Vb7KunPE
This commit is contained in:
Sylpheed RE agent
2026-08-23 21:27:53 +00:00
parent 813ae8c681
commit 9c94a16d5a

View File

@@ -175,3 +175,41 @@ thread's guest PC on demand (or after N seconds without a frame) would name the
loop, and `xenia-rs/sylpheed.db` can then say what function it is in. That is a
`build-canary` run plus a reproduction — the cost is worth stating up front, and
it is the only avenue that does not involve guessing.
---
## The frozen world is quieter, not silent — the delta measured at last
The measurement [`live_delta.py`](../../tools/re-capture/live_delta.py) was
written for, taken on a run that froze mid-probe (2026-08-23):
| state | words changed | window | share of the 357.7 MB of data |
|---|---|---|---|
| **running** | 1 863 296 | 4 s | 2.08 % |
| **frozen** | 180 952 235 973 | 6 s | 0.20 0.26 % |
So a frozen guest is about **12× quieter per second** than a live one, and still
changing ~30 000 words a second. Whatever is spinning is doing real work.
Where, by 1 MB region, while frozen:
```
0xbf900000 83 246 words 0xbe000000 5 902
0xbfa00000 55 515 0xbe300000 3 978
0xbe100000 15 914 0x70400000 2 371
0xbe200000 9 882 0x70500000 2 366
```
The `0x704…`/`0x705…` pages are **guest thread stacks** — every `XThread…Stack:`
line in the boot log is in `0x70xxxxxx` — which is what a spinning thread's frame
churn looks like. The two big blocks at `0xbf900000`/`0xbfa00000` are the bulk of
it, and one visible cluster there is a long run of identical floats stepping
together (`0x39174083 → 0x39174079` across hundreds of consecutive words), which
reads like a buffer being refilled rather than a lock being polled.
🔴 **Not yet interpretable**, and the reason is stated rather than glossed: there
is **no matched region breakdown for the running case** — the control was taken
before the region summary existed, so "these regions are busy while frozen" has
nothing to be compared against. The regions may simply be the busiest regions in
the game at all times. That comparison is one run away and is the obvious next
measurement.