-
Notifications
You must be signed in to change notification settings - Fork 5k
[release/8.0-staging] improve distribute_free_regions #115023
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
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
This PR ports distributed free list functionality from .NET 10 and adjusts related GC region management constants.
- Updates the enum free_region_kind with new indices to support distributed free regions.
- Adds new GC heap methods for distributing and manipulating free regions.
- Introduces distinct decommit age thresholds for basic, large, and huge free regions.
Tagging subscribers to this area: @dotnet/gc |
in
so this is not from Mark's change but a separate PR: #96513 that I think we should include this line in this if block -
Refers to: src/coreclr/gc/gc.cpp:13342 in 40807e6. [](commit_id = 40807e6, deletion_comment = False) |
you might as well change this in
to Refers to: src/coreclr/gc/gc.cpp:13841 in 40807e6. [](commit_id = 40807e6, deletion_comment = False) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
lgtm. we will take for consideration in 8.0.x
Port change for better free-list management. This is a back port of #109431
Customer Impact
Memory utilization regression as part of Regions Enablement. Reported by a customer here: #103582.
The fix is to improve distribute_free_regions where aged regions are added to decommit list to ultimately free.
Regression
Yes in memory utilization. For certain customers who were running with dense containers they would observe an OOM occasionally.
Testing
Verified with internal performance testing. Provided a private to the customer to try out and they confirmed their memory utilization improved after the fix.
Risk
Low, this only impacts how free regions are deallocated.