Add multi-Ractor memory benchmarks - #538
Draft
eightbitraptor wants to merge 2 commits into
Draft
eightbitraptor wants to merge 2 commits into
eightbitraptor wants to merge 2 commits into
Conversation
A harness for ractor memory pathology benchmarks. The scenario block runs on the main Ractor and receives the ractor count; it may return a cleanup proc, which the harness calls after measuring retained RSS so a scenario can park idling ractors that outlive the measurement window. Retained RSS is measured against a single pristine process-start baseline after GC settle. A per-trial baseline would collapse toward zero, because memory retained by dead or idle ractors is reused by later allocation rather than returned to the OS. Peak RSS is sampled by a background thread and verified against VmHWM. Scenario wall times are reported so result tables keep working.
Add three benchmarks that expose pathological memory behaviour with multiple ractors, for GC work that reclaims ractor-local memory: - ractor-dead-set: every ractor builds a large live set and terminates; their final live sets cannot be reclaimed by a full GC. - ractor-idle-garbage: every ractor builds and drops a large set, then idles without allocating; the garbage cannot be swept while they idle. - ractor-msg-backlog: unshareable payloads flood the queues of gated consumer ractors, duplicating data per consumer. benchmarks.yml marks them ractor_only with default_harness harness-ractor-mem, which overrides the --category ractor default. Pin that selection with a regression test, and document the benchmarks in the README.
Collaborator
|
I think we should look into using the |
luke-gruber
requested changes
Oct 2, 2026
luke-gruber
left a comment
Collaborator
There was a problem hiding this comment.
Let's merge --ractor-gc first and then try to use that for these benchmarks.
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.
Add three benchmarks that expose pathological memory behaviour with
multiple ractors.
ractor-dead-set: every ractor builds a large live set and terminates;
their final live sets cannot be reclaimed by a full GC.
ractor-idle-garbage: every ractor builds and drops a large set, then
idles without allocating; the garbage cannot be swept while they idle.
ractor-msg-backlog: unshareable payloads flood the queues of gated
consumer ractors, duplicating data per consumer.
benchmarks.yml marks them ractor_only with default_harness
harness-ractor-mem, which overrides the --category ractor default.