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

Shenandoah: pacer should cover reset and preclean phases

    XMLWordPrintable

Details

    • gc
    • b12

    Backports

      Description

        There are three phases in Shenandoah GC cycle that are not covered by pacer explicitly, but rather covered by the previous-phase pacer.

        These are:
         - "Concurrent reset", covered by "Idle" pacer. This does not exactly work, because the control thread that is supposed to replenish the pacing budget is busy doing the reset.
         - "Concurrent precleaning", covered by "Concurrent mark" pacer. The mark budget cannot account for precleaning costs, and concurrent marking is technically over, so pacing budget would not be replenished.
         - "Concurrent roots", covered by "Evacuation" pacer. Again, region evacuation had not been started, so there is nothing to replenish the pacing budget.

        In all these cases, we might stall active allocations unnecessarily. Since pacer is optimistic (allows allocations anyway), it makes more sense to just allow allocations to proceed in those phases. In other words, provide unlimited pacing budget for them. It is trivial to do for reset/preclean phases. It is not trivial to do for roots phase, as it is requires fiddling with cycle shortcut machinery. Doing first two phases separately makes the change cleanly backportable.

        Attachments

          Issue Links

            Activity

              People

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

                Dates

                  Created:
                  Updated:
                  Resolved: