JDK-8159423 : Improve sizing and padding of evacuation task queue data structures
  • Type: Enhancement
  • Component: hotspot
  • Sub-Component: gc
  • Affected Version: 9
  • Priority: P4
  • Status: Open
  • Resolution: Unresolved
  • Submitted: 2016-06-14
  • Updated: 2020-06-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.
Other
tbdUnresolved
Related Reports
Relates :  
Description
The evacuation task queue needs to be improved:

- add proper padding to the queues themselves to avoid false sharing and improve repeatability of results
- the overflow task queue needs an overhaul, or at least its sizing improved: measurements with solaris studio analyzer showed a large amount of time spent in trying to allocate new or free used segments in the overflow task queue (in malloc/free); the current sizing indicates around 512 entries per segment, which is way too small for any reasonably large application.

Overhaul means to implement some kind of exponential segment size growth to decrease the overhead.

Fix this.
Comments
The suggested exponential segment size growth is only a suggestion; also there is reason to believe that the issue isn't as severe as before as we eagerly process entries in the task queues. Particularly roots are not first put into these queues as a whole any more before processing them (JDK-6672778).
18-06-2020

JDK-8243326 improved the padding in the queues to avoid false sharing.
18-06-2020

Another option would be to provide a global memory area (allocated from virtual memory) for these buffers, so that they can be freed in bulk at the end of gc (as they are right now by iterating through the task queue chunks).
31-08-2016