RFR: 8311883: [Genshen] Adaptive tenuring threshold

William Kemper wkemper at openjdk.org
Tue Jul 11 23:51:32 UTC 2023


On Thu, 15 Jun 2023 20:08:58 GMT, Y. Srinivas Ramakrishna <ysr at openjdk.org> wrote:

> JDK-8311883 [GenShen] Adaptive tenuring
> 
> I am opening this previously draft PR for formal preliminary review. It has already benefited from review feedback from a code walkthrough of an earlier version of the code. Most of that feedback and the corrections thereof are to be found in the comments in this PR. I have addressed a large majority of those comments, and am working on the last one that I plan to address as part of this PR. For the ones that I don't plan to address in this PR, I will create follow up tickets. Those will be added in the responses for the remaining feedback comments recorded in this PR's conversation.
> 
> Preliminary testing w/SPECjbb didn't yield reliable performance data from which to infer any performance improvements stemming from enabling adaptive tenuring. I believe that was because of the way SPECjbb is run, which causes excessive degenerate and full gc's. I plan to collect SPECjbb numbers with a fixed lower max HBIR so as to be able to discern performance differences from this change, as well as Extremem workloads. Those will be added here once ready over the next few days.

src/hotspot/share/gc/shenandoah/shenandoahEvacTracker.cpp line 44:

> 42: 
> 43: AgeTable* ShenandoahEvacuationStats::age_table() const {
> 44:   assert(_generational && (ShenandoahGenerationalCensusAtEvac || !ShenandoahGenerationalAdaptiveTenuring), "Don't call");

Maybe hoist expression `_generational && (ShenandoahGenerationalCensusAtEvac || !ShenandoahGenerationalAdaptiveTenuring` into a `_use_age_table` (or such) field?

src/hotspot/share/gc/shenandoah/shenandoahEvacTracker.cpp line 137:

> 135: 
> 136: ShenandoahCycleStats ShenandoahEvacuationTracker::flush_cycle_to_global() {
> 137:   bool gen_mode = ShenandoahHeap::heap()->mode()->is_generational();

Why not use the `_generational` member here?

src/hotspot/share/gc/shenandoah/shenandoahGeneration.cpp line 475:

> 473:     ShenandoahUpdateCensusZeroCohortClosure age0_cl(complete_marking_context());
> 474:     heap->young_generation()->heap_region_iterate(&age0_cl);
> 475:     size_t age0_pop = age0_cl.get_pop();

`get_population`?

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

PR Review Comment: https://git.openjdk.org/shenandoah/pull/289#discussion_r1260395299
PR Review Comment: https://git.openjdk.org/shenandoah/pull/289#discussion_r1260396367
PR Review Comment: https://git.openjdk.org/shenandoah/pull/289#discussion_r1260401118


More information about the shenandoah-dev mailing list