Improving compaction heuristics + Some other tweaks while looking at compaction. #74
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.
The motivation for this is described in the discussion here: dotnet/runtime#115627
There is a benchmark that demonstrates that better compaction heuristics can lead to smaller heap with the throughput staying roughly the same.
This PR:
On the benchmark that started the discussion:
GCPerfSim.exe -tc 8 -tagb 200 -tlgb 2 -lohpi 0 -sohsi 50 -ramb 20 -rlmb 0.2 -sohpi 0The commit size could be seen reduced from ~11Gb to ~7.5Gb (44% less) with throughput staying roughly the same.
For the real apps the heap size benefits will be smaller, since the benchmark intentionally exaggerates "useless" fragmentation, but we could still see some positive impact.