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

Add paddings for TaskQueueSuper to reduce false-sharing cache contention

    XMLWordPrintable

    Details

    • Subcomponent:
      gc
    • Resolved In Build:
      b01
    • CPU:
      generic
    • OS:
      generic

      Backports

        Description

        This ticket actually covers a tiny part from JDK-8243326, Cleanup use of volatile in taskqueue code.

        class TaskQueueSuper has two volatile variables: _bottom and _age declared side by side, and the instances are widely used by g1 and cms functions, while many atomic functions operate on these two variables during the execution of the known work stealing algorithm among a number of threads,e.g. decided by ParallelGCThreads. Therefore, false-share caching contention would occur here and there. The proposed code change can be safe enough as it does not change any function explicitly, and performance measurement on benchmarks and small cases show positive effect steadily (please note it is difficult to completely reproduce the work-stealing algorithm and cache contentions in small test cases).

        A tiny part of JDK-8243326 added padding around the two variables with DEFINE_PAD_MINUS_SIZE which fixed the mentioned potential issue by the way. However it is no need to backport the whole patch (https://hg.openjdk.java.net/jdk/jdk/rev/252a1602b4c6) due to the complex context especially the new load/store atomic functions introduced beyond jdk11u.

          Attachments

            Issue Links

              Activity

                People

                Assignee:
                qpzhang Patrick Zhang
                Reporter:
                qpzhang Patrick Zhang
                Votes:
                0 Vote for this issue
                Watchers:
                6 Start watching this issue

                  Dates

                  Created:
                  Updated:
                  Resolved:

                    Time Tracking

                    Estimated:
                    Original Estimate - 1 day
                    1d
                    Remaining:
                    Remaining Estimate - 1 day
                    1d
                    Logged:
                    Time Spent - Not Specified
                    Not Specified