From 9c94a16d5abdbb8bd1dd7e4a2ef6c722defd11d2 Mon Sep 17 00:00:00 2001 From: Sylpheed RE agent Date: Sun, 23 Aug 2026 21:27:53 +0000 Subject: [PATCH] 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) Claude-Session: https://claude.ai/code/session_01PMRJjbxLqZtsb5Vb7KunPE --- docs/re/mission-freeze-resume-spin.md | 38 +++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/docs/re/mission-freeze-resume-spin.md b/docs/re/mission-freeze-resume-spin.md index 7e34a644..dedc7a42 100644 --- a/docs/re/mission-freeze-resume-spin.md +++ b/docs/re/mission-freeze-resume-spin.md @@ -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.