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

Kim Barrett kbarrett at openjdk.org
Thu Nov 3 23:36:31 UTC 2022


On Mon, 31 Oct 2022 08:31:13 GMT, Ivan Walulya <iwalulya 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`

Thanks @walulyai and @tschatzl for reviews.

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

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


More information about the hotspot-gc-dev mailing list