RFR: 8295319: pending_cards_at_gc_start doesn't include cards in thread buffers

Ivan Walulya iwalulya at openjdk.org
Mon Oct 31 08:35:06 UTC 2022


On Mon, 31 Oct 2022 07:24:17 GMT, Kim Barrett <kbarrett at openjdk.org> wrote:

> Please review this change to G1 to include the per-thread buffers in the
> number of pending cards at the start of a young GC.
> 
> DCQS::concatenate_logs has been renamed to concatenate_logs_and_stats, and now
> also merges the per-thread refinement stats during the thread walk to flush
> buffers.  That replaces the separate thread walk to merge and record these
> stats earlier in the GC.  The merged stats and related info don't seem to be
> needed until after the buffer flushing.
> 
> Also, when abandoning dirty card buffers and stats because of a full GC, fixed
> to also abandon an buffers in the paused buffers lists.
> 
> Testing:
> mach5 tier1-3
> performance testing found no significant changes, as expected.

`calculate_collection_set` -> `finalize_initial_collection_set` -> `finalize_young_part`:
`size_t pending_cards = _policy->pending_cards_at_gc_start() + _g1h->hot_card_cache()->num_entries();`

called before `pre_evacuate_collection_set`

`flush_dirty_card_logs_and_stats` needs to be called before `calculate_collection_set`

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

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


More information about the hotspot-gc-dev mailing list