Skip to content

Conversation

@byroot
Copy link

@byroot byroot commented Dec 2, 2025

This doesn't actually help CoW friendliness, you'd need to run it 3 times for all objects to be promoted to the old generation.

But more importantly, you only want to do this before the very first fork, for any subsequent forks, it's best not to trigger GC.

Also GC.start can be quite taxing on large monolith, easily over 1s, which makes respawning dead workers slower and burn CPU for little to no gains.

In addition, modern Ruby versions have Process.warmup which does the same and more, but faster.

So ideally it would be preferable to expose a hook and let users decide what they want to do here.

This doesn't actually help CoW friendliness, you'd need to run it
3 times for all objects to be promoted to the old generation.

But more importantly, you only want to do this before the very first
fork, for any subsequent forks, it's best not to trigger GC.

Also `GC.start` can be quite taxing on large monolith, easily over
1s, which makes respawning dead workers slower and burn CPU for
little to no gains.

In addition, modern Ruby versions have `Process.warmup` which does
the same and more, but faster.

So ideally it would be preferable to expose a hook and let users
decide what they want to do here.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant