Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions changelog.d/11879-gc-rss-audit-pins.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Classify the cold-block page-size cache as a numeric byte count and re-audit the non-moving census snapshot window after #11781. Collection-entry page advice runs before snapshot creation; page-directory shrinking and reuse-window advancement run after sweep-entry consumption. Refresh only the affected GC source pins. Runtime behavior, root scanners, headers and shapes are unchanged.
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# GC performance work after #11781

The RSS changes merged at ac575aed9d. The submitted tree 41e68ed202 is byte-identical. Fresh Linux build, runtime (4867 passed / five ignored), stdlib, FFI/events and selected GC integrations passed. Full gates were run and remain red: the original run has 22 failures. Four missing-Node failures and two hardcoded API-compiler-path failures pass after correcting the environment. Nine source audits also fail on clean pre-merge main; codegen's unused token_label and dark-test registration also reproduce there. Two RSS-owned audit updates (numeric page-size cache and census source pins) are in this follow-up. Missing cargo-xwin and the GC fixture-routing output mismatch remain unresolved. The accompanying verification records raw failures and reruns; it does not claim lint green.

The separate pending-mark-frontier experiment is based on merged main, at a183e1932985d38fc67266c4c148a8941a6c2550. Linux runtime and selected GC integrations pass. The first matched application comparison uses full unspecialized runtime (--no-auto-optimize), 17 workloads, 238 correct executions (204 RSS/instruction plus 34 diagnostics). Trees RSS -14.87%, TypeScript -5.31%, but ring +2.81%, requests +4.16%, and TypeScript instructions +0.35%. It is NOT adopted. Normal-auto measurements and attribution of the regressions are still required; these percentages must not be combined with the earlier shipping comparison.

Claude owns perf-class-value-scan, buffer classification and IC attribution. Codex owns pacing and conservative scan #11873. Dirty class roots must remain eligible while slots contain young references, even without another write; full collections must retain all strong roots. No root-scanner or remembered-set representation changes have been made here.

The conservative old-reclaim scan stays enabled until native holders are proven safe. Read-only audit found unrooted Rust destination/chunk snapshots crossing callbacks in node_stream_readwrite.rs (unpipe_all_destinations/end_pipe_destinations) and node_submodules/stream_promises.rs (write_chunks_to_destination/direct_stream_promises_pipeline). These are candidate rooting gaps, not a proven diagnosis of #11842. Next: a detector that fails on the baseline with actual collection, then a scoped rooting fix and moving/budgeted collection coverage before changing the fallback.

Perrymaster cleanup removed 23 completed Cargo targets, freeing 54.24 GiB before a 15.98 GiB compressed durable backup. The full workspace mirror was checksum-verified; the backup transfer hash and zstd integrity were verified. Sources, compiled programs and raw measurement evidence remain on the durable host. Restore target paths from the backup before running historical verifiers that need them. Build-server paths remain isolated under /root/rss-gc-codex-20261004.
Original file line number Diff line number Diff line change
@@ -0,0 +1,159 @@
{
"scope": "17 matched workloads, full unspecialized runtime (--no-auto-optimize), GC defaults; preliminary, normal-auto validation required before adoption",
"comparisons": [
{
"case": "12_large_live_set",
"base_rss_bytes": 102916096,
"frontier_rss_bytes": 103157760,
"rss_bytes_percent": 0.23481652471544212,
"base_instructions": 3261315543,
"frontier_instructions": 3260528687,
"instructions_percent": -0.02412695090755479
},
{
"case": "14_grow_then_churn",
"base_rss_bytes": 111964160,
"frontier_rss_bytes": 111689728,
"rss_bytes_percent": -0.24510700567038635,
"base_instructions": 2716707865,
"frontier_instructions": 2698926757,
"instructions_percent": -0.6545093872284968
},
{
"case": "23-binary-trees",
"base_rss_bytes": 168534016,
"frontier_rss_bytes": 143478784,
"rss_bytes_percent": -14.866572692363778,
"base_instructions": 28069647875,
"frontier_instructions": 27934979445,
"instructions_percent": -0.4797652988014156
},
{
"case": "30-string-build",
"base_rss_bytes": 222085120,
"frontier_rss_bytes": 222060544,
"rss_bytes_percent": -0.011066027296202652,
"base_instructions": 17690057538,
"frontier_instructions": 17690897372,
"instructions_percent": 0.004747491624579325
},
{
"case": "31-json",
"base_rss_bytes": 162295808,
"frontier_rss_bytes": 163262464,
"rss_bytes_percent": 0.5956136587335736,
"base_instructions": 26594701759,
"frontier_instructions": 26636062689,
"instructions_percent": 0.1555231954650571
},
{
"case": "51-pipeline",
"base_rss_bytes": 270286848,
"frontier_rss_bytes": 270401536,
"rss_bytes_percent": 0.0424319573255838,
"base_instructions": 11214527968,
"frontier_instructions": 11206555665,
"instructions_percent": -0.0710890643168316
},
{
"case": "60-ring-churn",
"base_rss_bytes": 17612800,
"frontier_rss_bytes": 18108416,
"rss_bytes_percent": 2.8139534883721007,
"base_instructions": 681056329,
"frontier_instructions": 680831062,
"instructions_percent": -0.03307611873025751
},
{
"case": "71-async-worker",
"base_rss_bytes": 84414464,
"frontier_rss_bytes": 84516864,
"rss_bytes_percent": 0.1213062254354913,
"base_instructions": 4733293729,
"frontier_instructions": 4728675467,
"instructions_percent": -0.09756973186989537
},
{
"case": "72-request-processing",
"base_rss_bytes": 66867200,
"frontier_rss_bytes": 69648384,
"rss_bytes_percent": 4.159264931087292,
"base_instructions": 84276861426,
"frontier_instructions": 83949821394,
"instructions_percent": -0.38805435616176
},
{
"case": "73-retain-then-release",
"base_rss_bytes": 263507968,
"frontier_rss_bytes": 260677632,
"rss_bytes_percent": -1.0740988295276144,
"base_instructions": 19596559479,
"frontier_instructions": 19562912909,
"instructions_percent": -0.17169631248820094
},
{
"case": "70-documents-replace",
"base_rss_bytes": 141496320,
"frontier_rss_bytes": 141627392,
"rss_bytes_percent": 0.09263279779996303,
"base_instructions": 16230851851,
"frontier_instructions": 16223762661,
"instructions_percent": -0.043677251601326184
},
{
"case": "70-documents-retain",
"base_rss_bytes": 327761920,
"frontier_rss_bytes": 329527296,
"rss_bytes_percent": 0.5386153461634624,
"base_instructions": 20531437021,
"frontier_instructions": 20477423284,
"instructions_percent": -0.26307820998965337
},
{
"case": "70-documents-transition",
"base_rss_bytes": 182943744,
"frontier_rss_bytes": 182353920,
"rss_bytes_percent": -0.3224073078989753,
"base_instructions": 18408233050,
"frontier_instructions": 18367643366,
"instructions_percent": -0.22049744747228983
},
{
"case": "tscwork",
"base_rss_bytes": 260227072,
"frontier_rss_bytes": 246411264,
"rss_bytes_percent": -5.309135553736699,
"base_instructions": 63154875905,
"frontier_instructions": 63375682828,
"instructions_percent": 0.34962767297990194
},
{
"case": "zodwork",
"base_rss_bytes": 30134272,
"frontier_rss_bytes": 29872128,
"rss_bytes_percent": -0.8699198042680489,
"base_instructions": 973822572,
"frontier_instructions": 973299910,
"instructions_percent": -0.053671173274061346
},
{
"case": "00-noop",
"base_rss_bytes": 10100736,
"frontier_rss_bytes": 9687040,
"rss_bytes_percent": -4.09570154095702,
"base_instructions": 5683476,
"frontier_instructions": 5749398,
"instructions_percent": 1.1598887722935824
},
{
"case": "15-crc32",
"base_rss_bytes": 19079168,
"frontier_rss_bytes": 19169280,
"rss_bytes_percent": 0.47230571060541404,
"base_instructions": 18253822164,
"frontier_instructions": 18254008685,
"instructions_percent": 0.0010218188734700817
}
],
"executions": 238
}

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{
"archive": "/root/rss-gc-codex-targets-20261004.tar.zst",
"bytes": 17159595631,
"sha256": "cf6335c857be9347542a0893c1c69d4566b9b84d1e06e3d00ad24e4dee0fc36e",
"transfer_sha256_matches": true,
"zstd_integrity": true,
"completed_utc": "2026-10-04T06:49:47Z",
"scope": "23 deleted Cargo target directories only; original paths listed in cleanup ledger. Durable backup survives rental shutdown."
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
{
"owner": {
"owner": "Codex RSS/GC /root thread",
"scope": "This historical workspace and its own completed sources, targets, products and evidence; preserve evidence before cleanup."
},
"verified_mirror": "root@185.191.117.52:/root/rss-gc-codex-20261004/perrymaster-mirror",
"targets": [
"/root/rss-header-20261002/target",
"/root/rss-header-20261002/perry-main69-base/target",
"/root/rss-header-20261002/perry/target",
"/root/rss-header-20261002/perry-base/target",
"/root/rss-header-20261002/primary-mainad0-v80-ffi-events/target",
"/root/rss-header-20261002/primary-latest2026-v31/target-gc",
"/root/rss-header-20261002/primary-latest2026-v31/source-gc/target",
"/root/rss-header-20261002/primary-latest2026-v31/source-base/target",
"/root/rss-header-20261002/primary-entry-eden-v32/source/target",
"/root/rss-header-20261002/primary-entry-once-main07-v45/source/target",
"/root/rss-header-20261002/perry-mainrefresh-base/target",
"/root/rss-header-20261002/perry-gc-runtime-main/target",
"/root/rss-header-20261002/primary-gc-runtime-v24/target-control",
"/root/rss-header-20261002/primary-gc-runtime-v24/source-elf/target",
"/root/rss-header-20261002/primary-gc-runtime-v24/source-control/target",
"/root/rss-header-20261002/primary-arena-geometry-v27/source/target",
"/root/rss-header-20261002/primary-mainad0-once-v74/source/target",
"/root/rss-header-20261002/perry-main69-window/target",
"/root/rss-header-20261002/perry-main69-gc/target",
"/root/rss-header-20261002/primary-mainad0-base-v77/source/target",
"/root/rss-header-20261002/primary-main07-v39/source-entry/target",
"/root/rss-header-20261002/primary-main07-v39/source-gc/target",
"/root/rss-header-20261002/primary-main07-v39/source-base/target"
],
"deleted": [
"/root/rss-header-20261002/target",
"/root/rss-header-20261002/perry-main69-base/target",
"/root/rss-header-20261002/perry/target",
"/root/rss-header-20261002/perry-base/target",
"/root/rss-header-20261002/primary-mainad0-v80-ffi-events/target",
"/root/rss-header-20261002/primary-latest2026-v31/target-gc",
"/root/rss-header-20261002/primary-latest2026-v31/source-gc/target",
"/root/rss-header-20261002/primary-latest2026-v31/source-base/target",
"/root/rss-header-20261002/primary-entry-eden-v32/source/target",
"/root/rss-header-20261002/primary-entry-once-main07-v45/source/target",
"/root/rss-header-20261002/perry-mainrefresh-base/target",
"/root/rss-header-20261002/perry-gc-runtime-main/target",
"/root/rss-header-20261002/primary-gc-runtime-v24/target-control",
"/root/rss-header-20261002/primary-gc-runtime-v24/source-elf/target",
"/root/rss-header-20261002/primary-gc-runtime-v24/source-control/target",
"/root/rss-header-20261002/primary-arena-geometry-v27/source/target",
"/root/rss-header-20261002/primary-mainad0-once-v74/source/target",
"/root/rss-header-20261002/perry-main69-window/target",
"/root/rss-header-20261002/perry-main69-gc/target",
"/root/rss-header-20261002/primary-mainad0-base-v77/source/target",
"/root/rss-header-20261002/primary-main07-v39/source-entry/target",
"/root/rss-header-20261002/primary-main07-v39/source-gc/target",
"/root/rss-header-20261002/primary-main07-v39/source-base/target"
],
"free_bytes_before": 90698891264,
"free_bytes_after": 148935892992,
"completed_utc": "2026-10-04T06:40:01Z",
"active_target_references": [],
"restore_note": "Copy the corresponding target from the verified build-server perrymaster-mirror to the original absolute path before running a historical verifier that requires it."
}
6 changes: 3 additions & 3 deletions scripts/gc_runtime_root_holders.json

Large diffs are not rendered by default.

8 changes: 8 additions & 0 deletions scripts/thread_exit_address_globals.json
Original file line number Diff line number Diff line change
Expand Up @@ -4051,6 +4051,14 @@
],
"verdict": "no_heap_address",
"why": "Holds the address of the generated seed unit's `extern \"C\" fn()` (a code address in the program image, stored by js_shape_register_static_seed from a global_ctors entry before any heap exists), or 0 for none. It is never an arena or heap address, so an exited thread's Arena::drop cannot leave it dangling."
},
{
"file": "crates/perry-runtime/src/arena/block/decommit.rs",
"names": [
"SIZE"
],
"verdict": "no_heap_address",
"why": "#11781: cached result of libc::sysconf(_SC_PAGESIZE), converted to Some(usize) only when positive. It contains a byte count or None, never an allocation or arena address; thread exit cannot leave a dangling reference."
}
]
}
Loading