RFR (round 3), JEP-318: Epsilon GC
Per Liden
per.liden at oracle.com
Wed May 30 06:43:46 UTC 2018
One more thing I noticed:
There are a couple of tests doing things like this:
38 * @run main/othervm -Xmx1g -Xbatch -Xcomp
-XX:-UseTLAB -XX:+UnlockExperimentalVMOptions -XX:+UseEpsilonGC
TestByteArrays
39 * @run main/othervm -Xmx1g -Xbatch -Xcomp -XX:TieredStopAtLevel=1
-XX:-UseTLAB -XX:+UnlockExperimentalVMOptions -XX:+UseEpsilonGC
TestByteArrays
40 * @run main/othervm -Xmx1g -Xbatch -Xcomp -XX:TieredStopAtLevel=4
-XX:-UseTLAB -XX:+UnlockExperimentalVMOptions -XX:+UseEpsilonGC
TestByteArrays
1) Since TieredStopAtLevel=4 is the default, I'm thinking the first and
last line will test the same thing.
2) I assume "-Xcomp -XX:TieredStopAtLevel=4" is meant to target C2? If
so, wouldn't "-Xcomp -XX:-TieredCompilation" be a better option?
Otherwise I suspect most stuff will be compiled with C1 anyway.
cheers,
Per
On 05/30/2018 08:26 AM, Per Liden wrote:
> Hi Aleksey,
>
> On 05/21/2018 03:07 PM, Aleksey Shipilev wrote:
>> Hi,
>>
>> This is third (and hopefully final) round of code review for Epsilon
>> GC changes.
>>
>> JEP, targeted to 11:
>> http://openjdk.java.net/jeps/318
>> (you can find links to binary builds and sandbox locations there)
>>
>> Webrev:
>> http://cr.openjdk.java.net/~shade/epsilon/webrev.07/
>
> Sorry for not reviewing sooner. A few minor comments:
>
>
> make/autoconf/hotspot.m4
> ------------------------
>
> 399 NON_MINIMAL_FEATURES="$NON_MINIMAL_FEATURES cmsgc g1gc
> parallelgc serialgc epsilongc jni-check jvmti management nmt services
> vm-structs"
>
> There seems to be an emerging convention that experimental VM features
> should not be built by default. I.e. it shouldn't be part of
> NON_MINIMAL_FEATURES, instead the builder should use
> --with-jvm-features=epsilongc to enable it. Jesper is working on an
> informational JEP to clarify this, but I haven't seen it yet.
>
> (Btw, ZGC, Shenandoah, etc will also be subject to this).
>
>
> src/hotspot/share/gc/epsilon/epsilonArguments.cpp
> -------------------------------------------------
>
> 48 #if INCLUDE_EPSILONGC
> 49 if (EpsilonMaxTLABSize < MinTLABSize) {
> 50 warning("EpsilonMaxTLABSize < MinTLABSize, adjusting it to "
> SIZE_FORMAT, MinTLABSize);
> 51 EpsilonMaxTLABSize = MinTLABSize;
> 52 }
> 53
> 54 if (!EpsilonElasticTLAB && EpsilonElasticTLABDecay) {
> 55 warning("Disabling EpsilonElasticTLABDecay because
> EpsilonElasticTLAB is disabled");
> 56 FLAG_SET_DEFAULT(EpsilonElasticTLABDecay, false);
> 57 }
> 58 #endif
>
> This section shouldn't need #if INCLUDE_EPSILONGC
>
>
> src/hotspot/share/gc/epsilon/epsilonHeap.hpp
> --------------------------------------------
>
> 109 virtual bool supports_tlab_allocation() const { return
> UseTLAB; }
>
> I think you just want to return true here, unless Epsilon has some
> special handling of UseTLAB that I'm missing.
>
>
> src/hotspot/share/gc/epsilon/epsilonMemoryPool.hpp
> --------------------------------------------------
>
> 28 #if INCLUDE_EPSILONGC
> 29 #include "gc/epsilon/epsilonHeap.hpp"
> 30 #include "services/memoryPool.hpp"
> 31 #include "services/memoryUsage.hpp"
> 32 #endif // INCLUDE_EPSILONGC
>
> The #if INCLUDE_EPSILONGC shouldn't be needed here.
>
>
> src/hotspot/share/gc/shared/vmStructs_gc.hpp
> src/hotspot/share/gc/shared/barrierSetConfig.hpp
> src/hotspot/share/gc/shared/barrierSetConfig.inline.hpp
> src/hotspot/share/gc/shared/gcConfig.cpp
> src/hotspot/share/gc/shared/gc_globals.hpp
> -------------------------------------------------------
>
> Please keep the #if INCLUDE_XXX, XXX_ONLY and NOT_XXX sections sorted
> alphabetically. I.e. CMS - Epsilon - G1 ...
>
>
> cheers,
> /Per
>
>>
>> Notes:
>> *) C2 barrier modularization had landed, and now Epsilon has no
>> platform-specific impact (this
>> alone makes me impressed and happy);
>> *) Elastic TLAB machinery is now able to decay TLAB sizes as well,
>> cutting down memory footprint
>> on bursty allocations, more tests for it added, gating by VM options
>> implemented;
>> *) Serviceability support implemented, verified with ad-hoc hsdb
>> session ("universe" and
>> "scanoops" work as expected), and serviceability/sa tests;
>> *) Tests are properly keyed with vm.gc.Epsilon, so they are ignored
>> if Epsilon is not built
>>
>> Builds:
>> server X {x86_64, x86_32, aarch64, arm32, ppc64le, s390x}
>> zero X {x86_64}
>> minimal X {x86}
>>
>> Testing: gc/epsilon on x86_64
>>
>> Thanks,
>> -Aleksey
>>
More information about the hotspot-gc-dev
mailing list