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

Shenandoah: limit parallelism in CLDG root handling

XMLWordPrintable

    • gc
    • b26

        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.

              shade Aleksey Shipilev
              shade Aleksey Shipilev
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

                Created:
                Updated:
                Resolved: