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