JDK-8290737 : Improve scalability of Redirty Dirty Cards task
  • Type: Enhancement
  • Component: hotspot
  • Sub-Component: gc
  • Affected Version: 20
  • Priority: P4
  • Status: Closed
  • Resolution: Duplicate
  • Submitted: 2022-07-20
  • Updated: 2024-04-10
  • Resolved: 2024-04-10
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
tbdResolved
Related Reports
Duplicate :  
Relates :  
Description
Recent scalability testing with G1 showed that some phases do not scale well with number of threads.

Using Bigramtester@20gb showed that on a large machine, with ~30 threads the Redirty Logged Cards phase takes about 1% of gc pause time (~3ms) on average; with >100 threads it takes around 5% already (~6ms) - note that this is the same application with roughly the same amount of cards generated.

This seems to be related to iterating the buffers from the RDCQS. Some testing showed that quadrupling the buffer sizes decreases this time to ~1.5% of pause.
Comments
Some initial thoughts: * do not redirty logged cards during gc, somehow force the cards to be always scanned in the concurrent phase in these type of buffers; may be problematic with duplicates * make rdcqs data structure more amenable to parallelization of the iteration
20-07-2022