RFR: JDK-8199406: Performance drop with Java JDK 1.8.0_162-b32
poonam.bajaj at oracle.com
Fri Mar 30 16:38:45 UTC 2018
On 3/30/2018 8:34 AM, Thomas Schatzl wrote:
> Hi Poonam,
> On Thu, 2018-03-29 at 13:31 -0700, Poonam Parhar wrote:
>> Please review the changes for the following bug that improve the
>> nmethod unloading times with a couple of optimizations.
>> JDK-8199406: Performance drop with Java JDK 1.8.0_162-b32
>> Webrev: http://cr.openjdk.java.net/~poonam/8199406/webrev.00/
>> This changeset includes two changes:
>> 1. In compiledIC.cpp, CompiledIC::is_icholder_entry() , we need to
>> determine if the code blob is an itable stub. With this change,
>> before linearly searching through all the VtableStub entries, we
>> first check whether the codeblob is a vtable or not. We now also
>> parse through the list entries only once rather than doing it twice
>> in VtableStubs::is_entry_point() and VtableStubs::stub_containing().
>> 2. The second change helps avoid the virtual function calls in
>> CompiledICHolder::is_loader_alive(). CompiledICHolder now stores
>> information whether the metadata it holds is a method or a klass.
>> - Customer testing confirming that their class-unloading times drop
>> from 10s of seconds to an average of 0.75 secs.
>> - mach5 jdk-tier1,jdk-tier2,jdk-tier3,hs-tier1,hs-tier2
> does the change recover all class-unloading times as they were with
This is a regression that got introduced in 8u161 that increased the
class-unloading times from an average of 0.65 secs to 10s of seconds for
the customer. From the data received from the customer testing with this
fix, on an average we lose around 0.05 secs when compared with pre-8u161
runs. And this lost time is attributed towards the itable stub scanning
that we still need to do in is_icholder_entry().
> The figures you show seem to only compare 1.8.0_162-b32 to 1.8.0_162-
> b32 + patch.
> If not, do you have any idea what the problem could be?
Large number of Interfaces, complex Interfaces/classes graph that causes
large number of entries in the VtableStubs array can make this issue appear.
More information about the hotspot-runtime-dev