[release/8.0-staging] improve distribute_free_regions #115023
[release/8.0-staging] improve distribute_free_regions #115023mangod9 merged 7 commits intorelease/8.0-stagingfrom
Conversation
There was a problem hiding this comment.
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) |
jeffschwMSFT
left a comment
There was a problem hiding this comment.
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.