RFR (round 3), JEP-318: Epsilon GC

Per Liden per.liden at oracle.com
Wed May 30 06:26:34 UTC 2018


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