RFR: 8204210: Implementation: JEP 333: ZGC: A Scalable Low-Latency Garbage Collector (Experimental)

Per Liden per.liden at oracle.com
Wed Jun 13 07:00:08 UTC 2018


Thank you all!

/Per

On 06/12/2018 08:16 PM, Roman Kennke wrote:
> Woohoo! Congratulations!
> Cheers,
> Roman
> 
>> Hi,
>>
>> Just an updated to say that we've now pushed ZGC to jdk/jdk.
>>
>> cheers,
>> Per
>>
>> On 06/08/2018 08:20 PM, Per Liden wrote:
>>> Hi all,
>>>
>>> Here are updated webrevs, which address all the feedback and comments
>>> received. These webrevs are also rebased on today's jdk/jdk. We're
>>> looking for any final comments people might have, and if things go
>>> well we hope to be able to push this some time (preferably early) next
>>> week.
>>>
>>> These webrevs have passed tier{1,2,3,4,5,6} on Linux-x64, and
>>> tier{1,2,3} on all other Oracle supported platforms.
>>>
>>> ZGC Master
>>>     http://cr.openjdk.java.net/~pliden/8204210/webrev.2-master
>>>
>>> ZGC Testing
>>>     http://cr.openjdk.java.net/~pliden/8204210/webrev.2-testing
>>>
>>> Thanks!
>>>
>>> /Per & Stefan
>>>
>>>
>>> On 06/06/2018 12:48 AM, Per Liden wrote:
>>>> Hi all,
>>>>
>>>> Here are updated webrevs reflecting the feedback received so far.
>>>>
>>>> ZGC Master
>>>>     Incremental:
>>>> http://cr.openjdk.java.net/~pliden/8204210/webrev.0vs1-master
>>>>     Full: http://cr.openjdk.java.net/~pliden/8204210/webrev.1-master
>>>>
>>>> ZGC Testing
>>>>     Incremental:
>>>> http://cr.openjdk.java.net/~pliden/8204210/webrev.0vs1-testing
>>>>     Full: http://cr.openjdk.java.net/~pliden/8204210/webrev.1-testing
>>>>
>>>> Thanks!
>>>>
>>>> /Per
>>>>
>>>> On 06/01/2018 11:41 PM, Per Liden wrote:
>>>>> Hi,
>>>>>
>>>>> Please review the implementation of JEP 333: ZGC: A Scalable
>>>>> Low-Latency Garbage Collector (Experimental)
>>>>>
>>>>> Please see the JEP for more information about the project. The JEP
>>>>> is currently in state "Proposed to Target" for JDK 11.
>>>>>
>>>>> https://bugs.openjdk.java.net/browse/JDK-8197831
>>>>>
>>>>> Additional information in can also be found on the ZGC project wiki.
>>>>>
>>>>> https://wiki.openjdk.java.net/display/zgc/Main
>>>>>
>>>>>
>>>>> Webrevs
>>>>> -------
>>>>>
>>>>> To make this easier to review, we've divided the change into two
>>>>> webrevs.
>>>>>
>>>>> * ZGC Master:
>>>>> http://cr.openjdk.java.net/~pliden/8204210/webrev.0-master
>>>>>
>>>>>     This patch contains the actual ZGC implementation, the new unit
>>>>> tests and other changes needed in HotSpot.
>>>>>
>>>>> * ZGC Testing:
>>>>> http://cr.openjdk.java.net/~pliden/8204210/webrev.0-testing
>>>>>
>>>>>     This patch contains changes to existing tests needed by ZGC.
>>>>>
>>>>>
>>>>> Overview of Changes
>>>>> -------------------
>>>>>
>>>>> Below follows a list of the files we add/modify in the master patch,
>>>>> with a short summary describing each group.
>>>>>
>>>>> * Build support - Making ZGC an optional feature.
>>>>>
>>>>>     make/autoconf/hotspot.m4
>>>>>     make/hotspot/lib/JvmFeatures.gmk
>>>>>     src/hotspot/share/utilities/macros.hpp
>>>>>
>>>>> * C2 AD file - Additions needed to generate ZGC load barriers (adlc
>>>>> does not currently offer a way to easily break this out).
>>>>>
>>>>>     src/hotspot/cpu/x86/x86.ad
>>>>>     src/hotspot/cpu/x86/x86_64.ad
>>>>>
>>>>> * C2 - Things that can't be easily abstracted out into ZGC specific
>>>>> code, most of which is guarded behind a #if INCLUDE_ZGC and/or if
>>>>> (UseZGC) condition. There should only be two logic changes (one in
>>>>> idealKit.cpp and one in node.cpp) that are still active when ZGC is
>>>>> disabled. We believe these are low risk changes and should not
>>>>> introduce any real change i behavior when using other GCs.
>>>>>
>>>>>     src/hotspot/share/adlc/formssel.cpp
>>>>>     src/hotspot/share/opto/*
>>>>>     src/hotspot/share/compiler/compilerDirectives.hpp
>>>>>
>>>>> * General GC+Runtime - Registering ZGC as a collector.
>>>>>
>>>>>     src/hotspot/share/gc/shared/*
>>>>>     src/hotspot/share/runtime/vmStructs.cpp
>>>>>     src/hotspot/share/runtime/vm_operations.hpp
>>>>>     src/hotspot/share/prims/whitebox.cpp
>>>>>
>>>>> * GC thread local data - Increasing the size of data area by 32 bytes.
>>>>>
>>>>>     src/hotspot/share/gc/shared/gcThreadLocalData.hpp
>>>>>
>>>>> * ZGC - The collector itself.
>>>>>
>>>>>     src/hotspot/share/gc/z/*
>>>>>     src/hotspot/cpu/x86/gc/z/*
>>>>>     src/hotspot/os_cpu/linux_x86/gc/z/*
>>>>>     test/hotspot/gtest/gc/z/*
>>>>>
>>>>> * JFR - Adding new event types.
>>>>>
>>>>>     src/hotspot/share/jfr/*
>>>>>     src/jdk.jfr/share/conf/jfr/*
>>>>>
>>>>> * Logging - Adding new log tags.
>>>>>
>>>>>     src/hotspot/share/logging/*
>>>>>
>>>>> * Metaspace - Adding a friend declaration.
>>>>>
>>>>>     src/hotspot/share/memory/metaspace.hpp
>>>>>
>>>>> * InstanceRefKlass - Adjustments for concurrent reference processing.
>>>>>
>>>>>     src/hotspot/share/oops/instanceRefKlass.inline.hpp
>>>>>
>>>>> * vmSymbol - Disabled clone intrinsic for ZGC.
>>>>>
>>>>>     src/hotspot/share/classfile/vmSymbols.cpp
>>>>>
>>>>> * Oop Verification - In four cases we disabled oop verification
>>>>> because it do not makes sense or is not applicable to a GC using
>>>>> load barriers.
>>>>>
>>>>>     src/hotspot/cpu/x86/c1_LIRAssembler_x86.cpp
>>>>>     src/hotspot/cpu/x86/stubGenerator_x86_64.cpp
>>>>>     src/hotspot/share/compiler/oopMap.cpp
>>>>>     src/hotspot/share/runtime/jniHandles.cpp
>>>>>
>>>>> * StackValue - Apply a load barrier in case of OSR. This is a bit of
>>>>> a hack. However, this will go away in the future, when we have the
>>>>> next iteration of C2's load barriers in place (aka "C2 late barrier
>>>>> insertion").
>>>>>
>>>>>     src/hotspot/share/runtime/stackValue.cpp
>>>>>
>>>>> * JVMTI - Adding an assert() to catch problems if the tagmap hashing
>>>>> is changed in the future.
>>>>>
>>>>>     src/hotspot/share/prims/jvmtiTagMap.cpp
>>>>>
>>>>> * Legal - Adding copyright/license for 3rd party hash function used
>>>>> in ZHash.
>>>>>
>>>>>     src/java.base/share/legal/c-libutl.md
>>>>>
>>>>> * SA - Adding basic ZGC support.
>>>>>
>>>>>     src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/*
>>>>>
>>>>>
>>>>> Testing
>>>>> -------
>>>>>
>>>>> * Unit testing
>>>>>
>>>>>     A number of new ZGC specific gtests have been added, in
>>>>> test/hotspot/gtest/gc/z/
>>>>>
>>>>> * Regression testing
>>>>>
>>>>>     No new failures in Mach5, with ZGC enabled, tier{1,2,3,4,5,6}
>>>>>     No new failures in Mach5, with ZGC disabled, tier{1,2,3}
>>>>>
>>>>> * Stress testing
>>>>>
>>>>>     We have been continuously been running a number stress tests
>>>>> throughout the development, these include:
>>>>>
>>>>>       specjbb2000
>>>>>       specjbb2005
>>>>>       specjbb2015
>>>>>       specjvm98
>>>>>       specjvm2008
>>>>>       dacapo2009
>>>>>       test/hotspot/jtreg/gc/stress/gcold
>>>>>       test/hotspot/jtreg/gc/stress/systemgc
>>>>>       test/hotspot/jtreg/gc/stress/gclocker
>>>>>       test/hotspot/jtreg/gc/stress/gcbasher
>>>>>       test/hotspot/jtreg/gc/stress/finalizer
>>>>>       Kitchensink
>>>>>
>>>>>
>>>>> Thanks!
>>>>>
>>>>> /Per, Stefan & the ZGC team
> 
> 


More information about the hotspot-dev mailing list