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

Shenandoah: pacer should cover reset and preclean phases

    XMLWordPrintable

    Details

    • Subcomponent:
      gc
    • Resolved In Build:
      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

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

                  Dates

                  Created:
                  Updated:
                  Resolved: