JDK-8155996 : Improve concurrent refinement green zone control
  • Type: Enhancement
  • Component: hotspot
  • Sub-Component: gc
  • Affected Version: 9
  • Priority: P4
  • Status: Resolved
  • Resolution: Fixed
  • OS: generic
  • CPU: generic
  • Submitted: 2016-05-03
  • Updated: 2022-11-14
  • Resolved: 2022-10-20
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 20
20 b21Fixed
Related Reports
Blocks :  
Description
The adaptive controller for the concurrent refinement green zone value (the number of buffers to defer to the update_rs phase of the next pause) could be improved.

The error term that is being controlled is the difference between the desired and actual update_rs time (exclusive of the nested hot card cache scanning time).  The controller should adjust the green_zone value to attempt to minimize that error.

The present controller only uses the sign of the error, ignoring its magnitude; it adjusts the old green_zone value up or down by a magic multiplier based on the sign of the error.  In order to avoid large changes for small errors, the multipliers are small.  One of the consequences is that the multiplication basically does nothing at low thresholds.  (This was even worse when the count and thresholds were in units of buffers.  The change to using card counts has mitigated this a little bit.)

The calculation also does not take into account that there is always a set of partially filled buffers attached to the threads at GC start." 

A better approach might be to use a PID controller.  This would provide faster response to phase changes, such as startup from a conservative initial value.  It should also produce more stable and predictable control.  Other controllers are also possible.

Comments
Changeset: 028e8b3d Author: Kim Barrett <kbarrett@openjdk.org> Date: 2022-10-20 20:29:19 +0000 URL: https://git.openjdk.org/jdk/commit/028e8b3d5e7e1791a9ed0af244f74d21fb12ba81
20-10-2022

A pull request was submitted for review. URL: https://git.openjdk.org/jdk/pull/10256 Date: 2022-09-14 00:36:18 +0000
14-09-2022