RFR: Mixed evacuation [v6]
Kelvin Nilsen
kdnilsen at openjdk.java.net
Wed Apr 21 22:07:46 UTC 2021
On Wed, 21 Apr 2021 11:05:52 GMT, Roman Kennke <rkennke at openjdk.org> wrote:
>> Kelvin Nilsen has updated the pull request incrementally with one additional commit since the last revision:
>>
>> Change definition of CollectionThresholdGarbagePercent
>>
>> This is now defined to equal ShenandoahGarbageThreshold, which seems to have
>> a default value of 25. The effect on running workloads is to choose more
>> regions for the collection set than was observed with the previous
>> configuration.
>>
>> Also addressed several improvements in white space and comments.
>>
>> The code now runs tier1 and hotspot_gc_shenandoah without regressions. It
>> also succsessfully runs an Extremem stress test up until the point of
>> failure due to triggering of full GC (after 113 completed GC passes, including
>> two old-gen GC passes).
>
> src/hotspot/share/gc/shenandoah/heuristics/shenandoahOldHeuristics.cpp line 67:
>
>> 65: // collection set selection. Here, we'd rather fall back to this contingent behavior than force a full STW
>> 66: // collection.
>> 67: #define PROMOTION_BUDGET_BYTES (ShenandoahHeapRegion::region_size_bytes() / 2)
>
> I'd put macro definitions at the top of the file, right below the includes.
replaced with C++ constant in next commit.
> src/hotspot/share/gc/shenandoah/heuristics/shenandoahOldHeuristics.cpp line 220:
>
>> 218: // future, this threshold percentage may be specified on the command
>> 219: // line or preferrably determined by dynamic heuristics.
>> 220: #define CollectionThresholdGarbagePercent ShenandoahGarbageThreshold
>
> Same as above: please place define at top of file.
replaced with C++ constant in next commit.
> src/hotspot/share/gc/shenandoah/heuristics/shenandoahOldHeuristics.cpp line 249:
>
>> 247: _old_coalesce_and_fill_candidates = 0;
>> 248:
>> 249: #undef CollectionThresholdGarbagePercent
>
> I don't think the constants need to be undef-ed when defined at top of file. Alternatively, you may consider making them true C++ constants.
Replaced with C++ constant in next commit.
> src/hotspot/share/gc/shenandoah/heuristics/shenandoahPassiveOldHeuristics.cpp line 2:
>
>> 1: /*
>> 2: * Copyright (c) 2018, 2019, 2021, Red Hat, Inc. All rights reserved.
>
> Same as above, only use first and last years.
Fixed in next commit.
> src/hotspot/share/gc/shenandoah/heuristics/shenandoahPassiveOldHeuristics.hpp line 2:
>
>> 1: /*
>> 2: * Copyright (c) 2018, 2019, 2021, Red Hat, Inc. All rights reserved.
>
> Same as above.
Fixed in next commit.
> src/hotspot/share/gc/shenandoah/heuristics/shenandoahStaticHeuristics.hpp line 32:
>
>> 30: // TODO: Make this a subclass of ShenandoahHeuristics and create a "tailored" copy of this class to be subclass of
>> 31: // ShenandoahOldHeuristics. Fix the constructor implementation to invoke ShenandoahHeuristics() superclass constructor.
>> 32: // Change ShenandoahMode::initialize_old_heuristics() to return the subclass of ShenandoahOldHeuristics.
>
> Is this comment still valid? You seem to propose a ShenandoahStaticOldHeuristics too.
Oops. Forgot to remove that. Removed in next commit.
> src/hotspot/share/gc/shenandoah/heuristics/shenandoahStaticOldHeuristics.cpp line 2:
>
>> 1: /*
>> 2: * Copyright (c) 2018, 2019, 2021, Red Hat, Inc. All rights reserved.
>
> Same as above.
Fixed in next commit.
> src/hotspot/share/gc/shenandoah/heuristics/shenandoahStaticOldHeuristics.hpp line 2:
>
>> 1: /*
>> 2: * Copyright (c) 2018, 2019, 2021, Red Hat, Inc. All rights reserved.
>
> Same as above.
Fixed in next commit.
-------------
PR: https://git.openjdk.java.net/shenandoah/pull/29
More information about the shenandoah-dev
mailing list