On Thu, 11 May 2023 12:12:56 GMT, Stefan Karlsson <stef...@openjdk.org> wrote:

>> Hi all,
>> 
>> Please review the implementation of Generational ZGC, which can be turned on 
>> by adding -XX:+ZGenerational in addition to using -XX:+UseZGC. Generational 
>> ZGC is a major rewrite of the non-generational ZGC version that exists in 
>> the openjdk/jdk repository. It splits the heap into two generations; the 
>> young generation where newly allocated objects are born, and the old 
>> generation where long-lived objects get promoted to. The motivation for 
>> introducing generations is to allow ZGC to reclaim memory faster by not 
>> having to walk the entire object graph every time a garbage collection is 
>> run. This should make Generational ZGC suitable for more workloads. In 
>> particular workloads that previously hit allocation stalls because of high 
>> allocation rates, large live sets, or limited spare machine resources, have 
>> the potential to work better with Generational ZGC. For an in-depth 
>> description of Generational ZGC, see https://openjdk.org/jeps/439.
>> 
>> The development of Generational ZGC started around the same time as the 
>> development of JDK 17. At that point we forked off the Generational ZGC 
>> development into its own branch and let non-generational live unaffected in 
>> openjdk/jdk. This safe-guarded non-generational ZGC and allowed Generational 
>> ZGC to move unhindered, without the shackles of having to fit into another 
>> GC implementation's design and quirks. Since then, almost all of the ZGC 
>> files have been changed. Moving forward to today, when it's ready for us to 
>> upstream Generational ZGC, we now need to deliver Generational ZGC without 
>> disrupting our current user-base. We have therefore opted to initially 
>> include both versions of ZGC in the code base, but with the intention to 
>> deprecate non-generational ZGC in a future release. Existing users running 
>> with only -XX:+UseZGC will get the non-generational ZGC, and users that want 
>> the new Generational ZGC need to run with -XX:+ZGenerational in addition to 
>> -XX:+UseZGC. The intention 
 is to give the users time to validate and deploy their workloads with the new 
GC implementation.
>> 
>> Including both the new evolution of a GC and its legacy predecessor poses a 
>> few challenges for us GC developers. The first reaction could be to try to 
>> mash the two implementations together and sprinkle the GC code with 
>> conditional statements or dynamic dispatches. We have done similar 
>> experiments before. When ZGC was first born, we started an experiment where 
>> we converted G1 into getting the same features as the evolving ZGC. It was 
>> qu...
>
> Stefan Karlsson has updated the pull request with a new target base due to a 
> merge or a rebase. The pull request now contains 932 commits:
> 
>  - Merge remote-tracking branch 'upstream/master' into zgc_generational_review
>  - Make barrier_Relocation inherit from Relocation instead of DataRelocation
>  - ZGC: Generational
>    
>    Co-authored-by: Stefan Karlsson <stef...@openjdk.org>
>    Co-authored-by: Per Liden <pli...@openjdk.org>
>    Co-authored-by: Albert Mingkun Yang <ay...@openjdk.org>
>    Co-authored-by: Erik Österlund <eosterl...@openjdk.org>
>    Co-authored-by: Axel Boldt-Christmas <abold...@openjdk.org>
>    Co-authored-by: Stefan Johansson <kstef...@openjdk.org>
>  - UPSTREAM: RISCV tmp reg cleanup resolve_jobject
>  - CLEANUP: barrierSetNMethod_aarch64.cpp
>  - UPSTREAM: assembler_ppc CMPLI
>    
>    Co-authored-by: TheRealMDoerr <martin.do...@sap.com>
>  - UPSTREAM: assembler_ppc ANDI
>    
>    Co-authored-by: TheRealMDoerr <martin.do...@sap.com>
>  - Merge branch 'zgc_generational' into zgc_generational_rebase_target
>  - Workaround failed reservation in ZForwardingTest
>  - ZGC: Generational
>    
>    Co-authored-by: Stefan Karlsson <stef...@openjdk.org>
>    Co-authored-by: Per Liden <pli...@openjdk.org>
>    Co-authored-by: Albert Mingkun Yang <ay...@openjdk.org>
>    Co-authored-by: Erik Österlund <eosterl...@openjdk.org>
>    Co-authored-by: Axel Boldt-Christmas <abold...@openjdk.org>
>    Co-authored-by: Stefan Johansson <kstef...@openjdk.org>
>  - ... and 922 more: https://git.openjdk.org/jdk/compare/0cbfbc40...9dd9681b

Thanks all who have helped building Generational ZGC! I think it is time to 
integrate.

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

PR Comment: https://git.openjdk.org/jdk/pull/13771#issuecomment-1544037094

Reply via email to