ReviewOS

zig-utils/zig-js

Perf: attribute eight-lane object churn to cooperative GC phases

#426
Closed chris opened this 9 days ago ·
9 days ago

Parent: #97 Related: #49, #310 Dependency completed: zig-utils/zig-gc#41 Follow-up: #427 and zig-utils/zig-gc#42

The exact shared object-churn runner now has opt-in cooperative-GC telemetry. Without --gc-telemetry, normal output is unchanged and phase clocks/counter mutations remain disabled. The profile keeps the exact source, 100 jobs/lane, checksum, and fresh-process protocol while separating worker/join time, allocation batches, rendezvous, collection phases, heap accounting, and backing state.

Acceptance

  • Add opt-in telemetry without changing workload bytes, jobs, checksums, warmup, or normal benchmark output.
  • Report cooperative attempts, collections, timeouts, parks, pause, tranche bytes, and issued/reset bytes.
  • Attribute worker execution versus creator join and separate rendezvous, trace, sweep, allocation, heap, and backing costs.
  • Keep snapshots race-free/coherent under no-GIL execution with focused normal and TSan counter tests.
  • Run seven fresh 1/2/4/8-lane ReleaseFast processes with exact checksums and publish raw/summary evidence.
  • Identify a measured next optimization before changing collector policy.
  • Leave README benchmark scores unchanged because this is a focused diagnostic, not a complete matrix.

Evidence

At eight lanes the median is 1,862.639 ms (0.49x scaling). Cooperative pause is 618.958 ms; nursery sweep is 540.893 ms (87.4% of the pause), versus 0.020 ms rendezvous and 0.399 ms trace. All seven processes completed one minor collection with zero timeouts, reclaiming a median 1.073 GB while retaining about 3,052 young cells. #427/zig-gc#42 therefore track whole-run dead backing reclamation; rendezvous and trace are not the next target.

Closure awaits the unsuperseded exact-main run for 8e4580cf.

9 days ago

Closed against exact main 8e4580cf: run 29809124632 completed successfully. The 28-sample phase profile and measured #427 follow-up are published; README benchmark scores remain unchanged.

Sign in to comment on this issue.