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

G1 MMU calculation does not calculate the earliest time a given pause can be started

    Details

    • Type: Bug
    • Status: Resolved
    • Priority: P4
    • Resolution: Not an Issue
    • Affects Version/s: 15
    • Fix Version/s: 15
    • Component/s: hotspot
    • Labels:
    • Subcomponent:
      gc

      Description

      We use the G1MMUTracker to calculate the earliest time a pause with a particular length can be started.

      The current implementation does not calculate the earliest time a given pause can be started - it does not correctly take into account that if in the current interval there is still time left that you can fit part of the proposed pause into that interval.

      E.g. if you try to calculate when a 100ms pause can be started within a 100/1000 pause time specification, and there has been a pause of 50ms that just ended, and is the only pause within the last 1000ms, that you can start the 100ms pause after 900ms (i.e. 50ms current pause, 900ms no gc, 50ms of the supposedly next 100ms pause). Instead it returns 950ms.

      This is a problem when G1 wants to determine the minimum amount of young gen regions to cover the gap between pauses while keeping the MMU as returning a too large value simply does not give the minimum. This can decrease the amount of old gen regions we can take in the mixed gc/efficiency of the mixed evacuation.

      Day one bug.

        Attachments

          Activity

            People

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

              Dates

              • Created:
                Updated:
                Resolved: