JDK-8150952 : Net PLAB size is clipped to max PLAB size as a whole, not on a per thread basis
  • Type: Bug
  • Component: hotspot
  • Sub-Component: gc
  • Affected Version: 9
  • Priority: P3
  • Status: Resolved
  • Resolution: Fixed
  • Submitted: 2016-03-01
  • Updated: 2018-06-21
  • Resolved: 2016-03-11
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 9
9 b115Fixed
Related Reports
Relates :  
Description
Beginning with JDK-8079555 the desired PLAB size for use during GC is calculated as a "net" size, i.e. without taking the number of threads into account.

This results in way too small PLAB sizes particularly on large machines, because that net value is later divided by the number of threads, because that net size is clipped to the max value at calculation time. So instead of allowing the max value on a per-thread basis, we only allow the max value on a global basis.

This results in significant performance reduction due to extremely frequent use of direct allocation instead of PLABs on machines with many threads.

The fix is to do the clipping calculation when handing out the buffers, not before.