[8u40] RFR: 8056240: Investigate increased GC remark time after class unloading changes in CRM Fuse

Stefan Karlsson stefan.karlsson at oracle.com
Wed Nov 5 08:48:32 UTC 2014


On 2014-11-05 09:03, Stefan Karlsson wrote:
> Hi all,
>
> Please, review the backport of this fix to 8u40:
> http://cr.openjdk.java.net/~stefank/backports/8u40/8056240/webrev.01/
>
> I've attached the .rej files from applying the JDK 9 patch to JDK 8u40.

The attachments were removed. The files can be found at:
http://cr.openjdk.java.net/~stefank/backports/8u40/8056240/webrev.01/rej/

thanks,
StefanK

>
> Reasons for the .rej files from the failed applied patch hunks:
>  metadataOnStackMark.cpp - the has_redefined_a_class parameter in 
> MetadataOnStackMark(bool has_redefined_a_class) is only present in JDK 9.
>  metadataOnStackMark.hpp - the same as above
>  classLoaderData.cpp - has_redefined_a_class parameter and JDK-8040237 
> isn't backported
>  concurrentMark.cpp - JDK-8027450 isn't backported
>
> thanks,
> StefanK
>
> On 2014-10-02 12:53, Stefan Karlsson wrote:
>> Hi all,
>>
>> (The following patch changes HotSpot code in areas concerning GC, RT, 
>> and Compiler. So, it would be good to get reviews from all three teams.)
>>
>> Please, review this patch to optimize and parallelize the CodeCache 
>> part of MetadaOnStackMark.
>>
>> G1 performance measurements showed longer than expected remark times 
>> on an application using a lot of nmethods and Metadata. The cause for 
>> this performance regression was the call to 
>> CodeCache::alive_nmethods_do(nmethod::mark_on_stack); in 
>> MetadataOnStackMark. This code path is only taken when class 
>> redefinition is used. Class redefinition is typically used in 
>> monitoring and diagnostic frameworks.
>>
>> With this patch we now:
>> 1) Filter out duplicate Metadata* entries instead of storing a 
>> Metadata* per visited metadata reference.
>> 2) Collect the set of Metadata* entries in parallel. The code 
>> piggy-backs on the parallel CodeCache cleaning task.
>>
>> http://cr.openjdk.java.net/~stefank/8056240/webrev.00/
>> https://bugs.openjdk.java.net/browse/JDK-8056240
>>
>> Functional testing:
>> JPRT, Kitchensink, parallel_class_unloading, unit tests
>>
>> Performance testing:
>> CRM Fuse - where the regression was found
>>
>> The patch changes HotSpot code in areas concerning GC, RT, Compiler, 
>> and Serviceability. It would be good to get some reviews from the 
>> other teams, and not only from the GC team.
>>
>> thanks,
>> StefanK
>



More information about the hotspot-dev mailing list