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

Preserving the referents of concurrent mark work distribution method causes long pause times

    Details

    • Subcomponent:
      gc

      Description

      During reference processing in a gc pause (in G1CollectedHeap::process_discovered_references), we need to preserve (copy) reference objects that were discovered by the concurrent marking reference processor.

      We use the G1ParPreserveCMReferentsTask GangTask for that, always executing it using all threads but then internally let some threads just do nothing if there is not enough work to do.

      The problem with that method is, if you are on a large machine with tens of threads, and there is almost nothing to do during this phase (or even during the whole GC), starting up and waiting for that many threads takes a very significant fraction of gc pause time, e.g. half of object copy time.

      A much better way would be to determine the number of required threads at the outside, and only start up as many threads as required.

      Test case: GCOld

        Attachments

          Issue Links

            Activity

              People

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

                Dates

                • Created:
                  Updated:
                  Resolved: