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

Shenandoah: limit parallelism in CLDG root handling

    Details

    • Subcomponent:
      gc
    • Resolved In Build:
      b26

      Backports

        Description

        Profiling shows that calling CLDG walks in parallel does not is actually counter-productive. The walks does the linked list traversal and _claim_strong on each CLD means every node of that linked list is CASed. So many threads doing the same parallel walk are actively messing up each others' walk. It still makes sense to walk CLDG in parallel, until at least JDK-8245961 is done.

        We should consider limiting CLDG walk parallelism until a more efficient parallel implementation can be found (if any even exist). Part of the performance hit on CLDG-heavy workloads would be absorbed by JDK-8246100.

        Candidate: https://cr.openjdk.java.net/~shade/8246097/webrev.02/

        This seems to improve pause times significantly on CLDG-heavy workloads, for example Spring Boot and CLion. This change affects sh/jdk11 and sh/jdk8 much more, because ClassUnloading is not done there on each cycle.

          Attachments

            Issue Links

              Activity

                People

                • Assignee:
                  shade Aleksey Shipilev
                  Reporter:
                  shade Aleksey Shipilev
                • Votes:
                  0 Vote for this issue
                  Watchers:
                  1 Start watching this issue

                  Dates

                  • Created:
                    Updated:
                    Resolved: