RFR: Borrow from old gen

Kelvin Nilsen kdnilsen at openjdk.java.net
Tue Feb 8 00:25:32 UTC 2022


On Mon, 7 Feb 2022 22:51:32 GMT, William Kemper <wkemper at openjdk.org> wrote:

>> This commit represents multiple months of incremental performance improvements to allow generational shenandoah to run more efficiently, especially with larger heap sizes and high memory utilization.
>> 
>> Specific improvements are described in individual commit log messages.
>
> src/hotspot/share/gc/shenandoah/shenandoahMarkClosures.cpp line 74:
> 
>> 72:         r->reset_age();
>> 73:       } else if (ShenandoahHeap::heap()->is_aging_cycle()) {
>> 74:         r->increment_age();
> 
> Hmm, we used to increment age for every region during final mark, but now we are doing it during final update refs. This means no regions will be aged for cycles that skip evacuation. Is that what we want? this will have the effect of lowering the promotion rate.

This is a good point.  I guess we can increment age in final_mark for any region that is not placed into the collection set.  In the case that there is sufficient immediate trash that we do not have to evacuate any regions, then all region ages can be incremented.  That would be better.  I'll work on this change.

> src/hotspot/share/gc/shenandoah/shenandoah_globals.hpp line 309:
> 
>> 307:           range(1,100)                                                      \
>> 308:                                                                             \
>> 309:   product(uintx, ShenandoahOldEvacRatioPer128, 16, EXPERIMENTAL,            \
> 
> These `Per128` options are evaluated once per cycle? I would just take the floating point hit for a more user friendly percentage.

That's a good improvement.  I'll work on this.

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

PR: https://git.openjdk.java.net/shenandoah/pull/110


More information about the shenandoah-dev mailing list