JDK-8349850 : G1: Improve group selection based on expected time to evacuate
  • Type: Enhancement
  • Component: hotspot
  • Sub-Component: gc
  • Priority: P4
  • Status: Open
  • Resolution: Unresolved
  • Submitted: 2025-02-11
  • Updated: 2025-03-07
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
Other
tbdUnresolved
Related Reports
Relates :  
Relates :  
Description
Currently old gen regions groups are (apart from the collection set of the next GC after marking/rebuilding) set to G1OldCSetGroupSize (or so) regions.

This can be problematic for (typically) the last mixed gc in a reclamation phase, which may or may not exceed pause time a lot.

E.g. this gc+ergo+cset=trace output:

[167.196s][trace][gc,ergo,cset   ] GC(78) Prediction for group with 5 regions, card_rs_length 150234, merge_scan_time 7.52ms, code_root_scan_time_ms 0.00ms, evac_time_ms 1.73ms, other_time 0.01ms, bytes_to_cop 11817832
[167.196s][trace][gc,ergo,cset   ] GC(78) Prediction for group with 5 regions, card_rs_length 16408, merge_scan_time 0.82ms, code_root_scan_time_ms 0.00ms, evac_time_ms 3.27ms, other_time 0.01ms, bytes_to_cop 22329712
[167.196s][trace][gc,ergo,cset   ] GC(78) Prediction for group with 5 regions, card_rs_length 15844, merge_scan_time 0.79ms, code_root_scan_time_ms 0.00ms, evac_time_ms 3.31ms, other_time 0.01ms, bytes_to_cop 22596696
[167.196s][trace][gc,ergo,cset   ] GC(78) Prediction for group with 5 regions, card_rs_length 14298, merge_scan_time 0.72ms, code_root_scan_time_ms 0.00ms, evac_time_ms 3.55ms, other_time 0.01ms, bytes_to_cop 24186784
[167.196s][trace][gc,ergo,cset   ] GC(78) Prediction for group with 5 regions, card_rs_length 16028, merge_scan_time 0.80ms, code_root_scan_time_ms 0.00ms, evac_time_ms 3.82ms, other_time 0.01ms, bytes_to_cop 26052632
[167.196s][trace][gc,ergo,cset   ] GC(78) Prediction for group with 5 regions, card_rs_length 300401, merge_scan_time 15.04ms, code_root_scan_time_ms 0.00ms, evac_time_ms 1.15ms, other_time 0.01ms, bytes_to_cop 7873944
[167.196s][trace][gc,ergo,cset   ] GC(78) Prediction for group with 5 regions, card_rs_length 299308, merge_scan_time 14.98ms, code_root_scan_time_ms 0.00ms, evac_time_ms 1.06ms, other_time 0.01ms, bytes_to_cop 7254192
[167.196s][trace][gc,ergo,cset   ] GC(78) Prediction for group with 5 regions, card_rs_length 16839, merge_scan_time 0.84ms, code_root_scan_time_ms 0.00ms, evac_time_ms 4.18ms, other_time 0.01ms, bytes_to_cop 28501536
[167.196s][trace][gc,ergo,cset   ] GC(78) Prediction for group with 5 regions, card_rs_length 18683, merge_scan_time 0.94ms, code_root_scan_time_ms 0.00ms, evac_time_ms 4.14ms, other_time 0.01ms, bytes_to_cop 28272600
[167.196s][trace][gc,ergo,cset   ] GC(78) Prediction for group with 5 regions, card_rs_length 18914, merge_scan_time 0.95ms, code_root_scan_time_ms 0.00ms, evac_time_ms 4.20ms, other_time 0.01ms, bytes_to_cop 28647496
[167.196s][trace][gc,ergo,cset   ] GC(78) Prediction for group with 5 regions, card_rs_length 18920, merge_scan_time 0.95ms, code_root_scan_time_ms 0.00ms, evac_time_ms 4.19ms, other_time 0.01ms, bytes_to_cop 28571816
[167.196s][trace][gc,ergo,cset   ] GC(78) Prediction for group with 4 regions, card_rs_length 15062, merge_scan_time 0.75ms, code_root_scan_time_ms 0.00ms, evac_time_ms 3.37ms, other_time 0.01ms, bytes_to_cop 22960672
[167.196s][trace][gc,ergo,cset   ] GC(78) Prediction for group with 5 regions, card_rs_length 304715, merge_scan_time 15.25ms, code_root_scan_time_ms 0.00ms, evac_time_ms 1.95ms, other_time 0.01ms, bytes_to_cop 13309120
[167.196s][trace][gc,ergo,cset   ] GC(78) Prediction for group with 5 regions, card_rs_length 430199, merge_scan_time 21.54ms, code_root_scan_time_ms 0.00ms, evac_time_ms 1.20ms, other_time 0.01ms, bytes_to_cop 8175520
[167.196s][trace][gc,ergo,cset   ] GC(78) Prediction for group with 5 regions, card_rs_length 436649, merge_scan_time 21.86ms, code_root_scan_time_ms 0.00ms, evac_time_ms 1.09ms, other_time 0.01ms, bytes_to_cop 7427424
[167.196s][trace][gc,ergo,cset   ] GC(78) Prediction for group with 5 regions, card_rs_length 435752, merge_scan_time 21.81ms, code_root_scan_time_ms 0.00ms, evac_time_ms 1.61ms, other_time 0.01ms, bytes_to_cop 10960520
[167.196s][trace][gc,ergo,cset   ] GC(78) Prediction for group with 5 regions, card_rs_length 446976, merge_scan_time 22.38ms, code_root_scan_time_ms 0.00ms, evac_time_ms 1.53ms, other_time 0.01ms, bytes_to_cop 10425784
[167.196s][trace][gc,ergo,cset   ] GC(78) Prediction for group with 5 regions, card_rs_length 430687, merge_scan_time 21.56ms, code_root_scan_time_ms 0.00ms, evac_time_ms 1.99ms, other_time 0.01ms, bytes_to_cop 13559168
[167.196s][trace][gc,ergo,cset   ] GC(78) Prediction for group with 5 regions, card_rs_length 580994, merge_scan_time 29.09ms, code_root_scan_time_ms 0.00ms, evac_time_ms 2.32ms, other_time 0.01ms, bytes_to_cop 15795744
[167.196s][trace][gc,ergo,cset   ] GC(78) Prediction for group with 5 regions, card_rs_length 1019984, merge_scan_time 51.06ms, code_root_scan_time_ms 0.00ms, evac_time_ms 1.14ms, other_time 0.01ms, bytes_to_cop 7805056
[167.196s][trace][gc,ergo,cset   ] GC(78) Prediction for group with 5 regions, card_rs_length 1296215, merge_scan_time 64.89ms, code_root_scan_time_ms 0.00ms, evac_time_ms 2.10ms, other_time 0.01ms, bytes_to_cop 14299928
[167.196s][trace][gc,ergo,cset   ] GC(78) Prediction for group with 5 regions, card_rs_length 1578644, merge_scan_time 79.03ms, code_root_scan_time_ms 0.00ms, evac_time_ms 2.40ms, other_time 0.01ms, bytes_to_cop 16346728
[167.196s][trace][gc,ergo,cset   ] GC(78) Prediction for group with 5 regions, card_rs_length 3729438, merge_scan_time 186.70ms, code_root_scan_time_ms 0.00ms, evac_time_ms 2.91ms, other_time 0.01ms, bytes_to_cop 19843904

The last few groups take a significant part of pause time to include.

Maybe it is reasonable to split up (or not even combine) groups that take a significant fraction of pause time goal/typical time available for old gen regions.

(e.g. 10%)