RFR: 8294842: Pass actual pending cards to G1Policy::update_young_length_bounds during young gen revise

Kim Barrett kbarrett at openjdk.org
Tue Oct 11 18:52:07 UTC 2022


On Tue, 11 Oct 2022 12:33:31 GMT, Thomas Schatzl <tschatzl at openjdk.org> wrote:

> Hi all,
> 
>   can I have reviews for this change that passes the actual amount of pending cards to `G1Policy::update_young_length_bounds` instead of some prediction during young gen revising?
> That improves predictions quite a bit.
> 
> Depends on PR#10647, so please review that one first.
> 
> Testing: gha, local testing, tier1-5 with other changes in this patch series, perf testing with other changes in this patch series

Changes requested by kbarrett (Reviewer).

src/hotspot/share/gc/g1/g1Policy.cpp line 198:

> 196: void G1Policy::update_young_length_bounds() {
> 197:   // We have no measure of the number of pending cards in the thread buffers,
> 198:   // assume these are very few.

`predict_pending_cards()` includes the cards that were thread buffers.  It is based on the cards that were processed, which is done after DCQS::concatenate_logs.

src/hotspot/share/gc/g1/g1Policy.cpp line 531:

> 529:     G1DirtyCardQueueSet& dcqs = G1BarrierSet::dirty_card_queue_set();
> 530:     // We have no measure of the number of cards in the thread buffers, assume
> 531:     // these are very few compared to the ones in the DCQS.

I think it's really that the #cards in thread buffers is very small compared to the sum of the other two sources.

-------------

PR: https://git.openjdk.org/jdk/pull/10649



More information about the hotspot-gc-dev mailing list