Repository navigation
Floor memory instrument: a beat at every phase seam, with the leaf's swap, PSI, local events and charged processes - #12078
Merged
Merged
Conversation
…swap, PSI, local events and charged processes The 2026-09-19 sizing receipt bounds the held set only to the minute and is censored on swap, because the watchdog names the minute a phase was in and the swap figure beside it was the host's. floor_seam now emits one [floor-cgroup] beat at every phase boundary (seams added inside strict-preparation, at publication, and in claim_executor at parse/declarations/floor-entry), and each beat also prints the leaf's memory.swap.current, memory.events.local, memory.pressure and cgroup.procs as pid:comm:VmRSS, all raw. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…ap/PSI/events/procs line and seam beats on top Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…irement covers everything the reader prints (review 70239) Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
… seams inside the planning window The first attributed run (floor job 106950715986) put most of the floor process's growth in the planning window before resolve, with no overlapping process of size. floor_heap_beat reads mallinfo2 at each seam so retained state and allocator-held freed memory separate without the trim that would change the heap; nominal-subject-seeds, arm-set-planning and lane-roster seams split the window. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…seam, and seams inside the diff projections Floor job 106963145694 put the peak's early growth in live heap, from the lane-roster evaluation (which resolves through the process-lifetime shared index/store) and the diff projections. The census says whether those stores grow and whether any later seam reads them; the seams say which projection. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
… seams placed before it Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
6 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
First deliverable of the floor memory attribution lane (work item adhoc-80d33957-f14): the instrument, before any reduction.
Why.
gunbc.floor_demandgunbc_floor_memory_stat_receipt_2026_09_19is the sizing receipt the microVM shape is judged against, and it is (a) minute-grained — the watchdog says which phase a minute was in, never where a phase started or ended — and (b) censored on swap, because the swap figure beside the leaf's counters was the host's swap-in, a different subject. The latest main floor run (35637789956) shows anon rising roughly linearly through the wholestrict-preparationphase, and the process entering the floor already holding several GiB of anon from parse/declarations; neither observation can be attributed to a cause at minute grain with no process list.What.
floor_seamemits one[floor-cgroup] when=seam-<name>beat at every phase boundary. New seams:changed-witness-planning,prepare-closure-resolve,prepared-subject-warm(inside strict-preparation),publication, and inclaim_executorparse,declarations,floor-entry.seam=,unix_ms=, the leaf's ownmemory.swap.current,memory.events.local(oom / oom_kill),memory.pressure(PSI), andprocs=[pid:comm:VmRSS,…]for the leaf'scgroup.procs— raw, nothing summed (the derivation keeps its one home,beat_held_set). The process list is what separates overlap (another process charged to the slot) from retained application state.gunbc.floor_cgroup_stat_beat_seed_growthrecords the extension against the v1 freeze (hand-item delta 0).Not in this PR. No reduction and no receipt: the cause is to be declared from the attributed run this instrument produces (this PR's own floor run is the first one, at the current 26 GiB row), not from peak snapshots. The typed carrier (
FloorMemoryStatBeatgaining seam/swap/PSI) lands with the dated successor receipt, where there are beats to populate it.Instrument invocation. The required floor job's
[floor-cgroup] when=seam-*andwhen=beat-*lines (claim_executor --required-ci --source-root dag --source-root src/v2 --required-lane witnesses);GUNBC_FLOOR_HEARTBEAT_SECStightens the watchdog cadence.🤖 Generated with Claude Code