JDK-8201172 : Parallelize Remset Tracking Update Before Rebuild phase
  • Type: Enhancement
  • Component: hotspot
  • Sub-Component: gc
  • Affected Version: 11
  • Priority: P4
  • Status: Resolved
  • Resolution: Fixed
  • Submitted: 2018-04-05
  • Updated: 2018-06-21
  • Resolved: 2018-04-18
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 11
11 b11Fixed
Related Reports
Relates :  
Description
Since moving reclaim regions into the Remark phase there are concerns of making it too long.

Measurements show that for ~3200 regions (100GB heap, 32GB regions) the Remset Tracking Update Before Rebuild phase takes around one ms.

remark-parallel-base.log:[113.354s][debug][gc,phases] GC(10) Update Remembered Set Tracking Before Rebuild 0.965ms
remark-parallel-base.log:[147.049s][debug][gc,phases] GC(15) Update Remembered Set Tracking Before Rebuild 0.964ms
remark-parallel-base.log:[198.223s][debug][gc,phases] GC(19) Update Remembered Set Tracking Before Rebuild 0.969ms
remark-parallel-base.log:[237.106s][debug][gc,phases] GC(24) Update Remembered Set Tracking Before Rebuild 1.047ms
remark-parallel-base.log:[278.606s][debug][gc,phases] GC(29) Update Remembered Set Tracking Before Rebuild 1.057ms
remark-parallel-base.log:[312.429s][debug][gc,phases] GC(33) Update Remembered Set Tracking Before Rebuild 0.663ms

On very large heaps this increases linearly, so it may be useful to parallelize this phase with a reasonable parallelization factor, like a few hundred regions per thread started