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

Shenandoah: limit parallelism in CLDG root handling

    XMLWordPrintable

Details

    • gc
    • 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

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

                Dates

                  Created:
                  Updated:
                  Resolved: