Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8150239

Merging information from the ParScanThreadState at the end of GC causes high (unaccounted) pause time costs

    Details

    • Type: Enhancement
    • Status: Open
    • Priority: P3
    • Resolution: Unresolved
    • Affects Version/s: 9
    • Fix Version/s: tbd
    • Component/s: hotspot
    • Subcomponent:
      gc

      Description

      Specjbb2005 (and any other applicaitons run on large heaps and many threads) with 200 worker threads, 50G heap and large young gen size (20G) shows that there is around 50% of pause time outside of actual evacuation that is not accounted for in the "Other" times.

      Investigation showed that the problem is initializing the G1ParScanThreadState instances for the worker threads, and then merging the per-thread collected values back later into the global variables. The latter is maybe four times more expensive than the former.
      The reasons why this is a problem is that this is an O(#threads * size of collection set) operation, that is done in a single thread.

      This CR should deal with improving the PSS information merge phase at the end of the GC. JDK-8150629 is about the initialization phase.

        Attachments

          Issue Links

            Activity

              People

              • Assignee:
                Unassigned
                Reporter:
                tschatzl Thomas Schatzl
              • Votes:
                0 Vote for this issue
                Watchers:
                3 Start watching this issue

                Dates

                • Created:
                  Updated: