RFR: Mixed evacuation [v5]
Kelvin Nilsen
kdnilsen at openjdk.java.net
Mon Apr 19 21:38:39 UTC 2021
On Mon, 12 Apr 2021 19:55:48 GMT, Roman Kennke <rkennke at openjdk.org> wrote:
>> Kelvin Nilsen has updated the pull request incrementally with one additional commit since the last revision:
>>
>> Refactor ShenandoahOldHeuristics
>>
>> Code reviewers of the draft mixed-evacuation pull request raised a concern
>> about entanglement between young-gen and old-gen heuristics. In response to
>> suggestions by reviewers, this patch refactors the old-gen heuristics
>> implementation as follows:
>>
>> 1. Add old_heuristics argument and pass it so we no longer depend on
>> _old_heuristics field.
>>
>> Done, tested with run-milestone8-github, "make test TEST=tier1" and
>> "make test TEST=hotspot_gc_shenandoah"
>>
>> 2. Hoist test for should_defer_gc() into
>> ShenandoahRegulatorThread::start_old_cycle(). Remove all other
>> invocations of should_defer_gc().
>>
>> Done, tested with run-milestone8-github, "make test TEST=tier1" and
>> "make test TEST=hotspot_gc_shenandoah"
>>
>> 3. Remove _old_heuristics field and constructor and initializer
>> argument from ShenandoahPassiveHeuristics,
>> ShenandoahStaticHeuristics, ShenandoahAdaptiveHeuristics,
>> ShenandoahAggresiveHeuristics,
>> ShenandoahMode::initialize_heuristics(),
>> ShenandoahPassiveMode:::initialize_heuristics(),
>> ShenandoahGeneration::initialize_heuristics().
>>
>> Done, tested with run-milestone8-github, "make test TEST=tier1" and
>> "make test TEST=hotspot_gc_shenandoah". Note that GC behavior
>> changed a little in run-milestone8-github. Without confirmed
>> review of output files, my impression is that full GC triggered
>> earlier, at GC(101), and piggyback collections each processed fewer
>> old-gen candidates (18 rather than 30).
>>
>> 4. Introduce a new ShenandoahOldHeuristics subclass of
>> ShenandoahHeuristics. Move certain old-gen specific methods there,
>> including: prime_collection_set() (renamed from
>> prime_collection_set_with_old_candidates()),
>> prepare_for_old_collection(), start_old_evacuations(),
>> unprocessed_old_collection_candidates(),
>> next_old_collection_candidates(),
>> consume_old_collection_candidates(),
>> old_coalesce_and_fill_candidates(),
>> get_coalesce_and_fill_candidates(), should_defer_gc().
>> Remove the _old_heuristics argument from prime_collection_set() and
>> prepare_for_old_collection(); adjust the invocations.
>>
>> 5. Make the following subclasses of ShenandoahOldHeuristics. In the
>> initial implementation, these subclasses have the same behavior
>> as the young-gen heuristics from which they were copied. Future
>> refinement may result in tailored behavior of the old-gen
>> versions of each heuristic: ShenandoahAdaptiveOldHeuristics,
>> ShenandoahAggresiveOldHeuristics, ShenandoahCompactHeuristics,
>> ShenandoahPassiveOldHeuristics, ShenandoahStaticOldHeuristics.
>
> src/hotspot/share/gc/shenandoah/shenandoahGeneration.cpp line 129:
>
>> 127: void ShenandoahGeneration::prepare_gc() {
>> 128: reset_mark_bitmap();
>> 129:
>
> Lone whitespace change here.
Added this blank line back in.
-------------
PR: https://git.openjdk.java.net/shenandoah/pull/29
More information about the shenandoah-dev
mailing list