Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Reset TLH sizing at first increment for CS #7251

Merged
merged 1 commit into from
Feb 7, 2024

Conversation

amicic
Copy link
Contributor

@amicic amicic commented Feb 6, 2024

We reduce current refresh size at GC points, so that slow allocating threads have a chance to reduce their current refresh size.

It's done toward the end of a GC cycle, which means that for Concurrent Scavegner it's done at the end of 2nd GC increment.

However, it's slighty better to do it at the end of 1st increment since it will cause TLH to be slighly smaller during concurrent phase of the cycle.

During the concurrent phase there are other activities like GC background threads and read-barriers that effectively slow down the allocation rate of mutator threads, so there is less contention among them and less need for larger TLHs.

Also, since allocate space is much smaller during concurrent phase of GC, smaller TLHs will lead to smaller discards for the last TLH refresh, which leads to more tilting and less frequent GC cycles.

We reduce current refresh size at GC points, so that slow allocating
threads have a chance to reduce their current refresh size.

It's done toward the end of a GC cycle, which means that for Concurrent
Scavegner it's done at the end of 2nd GC increment.

However, it's slighty better to do it at the end of 1st increment since
it will cuase TLH to be slighly smaller during concurrent phase of the
cycle.

During the concurrent phase there are other activities like GC
background threads and read-barriers that effectively slow down the
allocation rate of mutator threads, so there is less contention among
them and less need for larger TLHs.

Also, since allocate space is much smaller during concurrent phase of
GC, smaller TLHs will lead to smaller discards for the last TLH refresh,
which leads to more tilting and less frequent GC cycles.

Signed-off-by: Aleksandar Micic <Aleksandar_Micic@ca.ibm.com>
@amicic
Copy link
Contributor Author

amicic commented Feb 6, 2024

In an experiment, with all other things equal this change led to more tilting and lower number of GC cycles:

before:
69.169 580
after:
71.2093 559

@amicic amicic added the comp:gc label Feb 6, 2024
@amicic
Copy link
Contributor Author

amicic commented Feb 6, 2024

@dmitripivkine please, review

@dmitripivkine
Copy link
Contributor

@babsingh Would you please to help to merge this?

@babsingh
Copy link
Contributor

babsingh commented Feb 7, 2024

jenkins build all

@babsingh
Copy link
Contributor

babsingh commented Feb 7, 2024

Existing testing is sufficient. riscv failed due to an infra issue, and OSX failed due to a known and unrelated issue: #7181.

@babsingh babsingh merged commit f010ed6 into eclipse:master Feb 7, 2024
15 of 18 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants