JDK-8231579 : G1's incremental calculation of region elapsed time always uses the same age group for prediction
  • Type: Bug
  • Component: hotspot
  • Sub-Component: gc
  • Affected Version: 14
  • Priority: P2
  • Status: Resolved
  • Resolution: Fixed
  • Submitted: 2019-09-27
  • Updated: 2024-05-23
  • Resolved: 2019-12-02
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.
JDK 14
14 b26Fixed
Related Reports
Blocks :  
Blocks :  
Blocks :  
Relates :  
Description
G1 calculates the time it takes to evacuate the contents of a mutator region as they are retired.

At this time G1 always uses the same region predictor to calculate that amount for all mutator regions.

This typically results in mispredicting the time as objects in different regions have different predictions. This makes the amount of time left for old gen evacuation wrong during mixed gc, resulting in bad actual pause times.

This seems to be a day one bug.
Comments
URL: https://hg.openjdk.java.net/jdk/jdk/rev/d1b2fa77e75e User: tschatzl Date: 2019-12-02 13:21:49 +0000
02-12-2019

The region predictor used is the one for the youngest region (predictor 0), so overpredicting. This has been verified by tests, typically these predictions are too high, overpredicting the young gen time by a non-trivial factor. This leaves less than expected time for old gen regions.
01-10-2019