RFR(L) 8227745: Enable Escape Analysis for Better Performance in the Presence of JVMTI Agents
David Holmes
david.holmes at oracle.com
Wed Dec 11 21:04:34 UTC 2019
On 12/12/2019 5:21 am, Vladimir Kozlov wrote:
> I will do full review later. I want to comment about test command line.
>
> You don't need vm.opt.TieredCompilation != true in @requires because you
> specified -XX:-TieredCompilation in @run command.
And per my comment this should be being tested with tiered as well.
David
> Use vm.compMode == "Xmixed" instead of vm.compMode != "Xcomp" to skip
> test from running in Interpreter mode too.
>
> Thanks,
> Vladimir
>
> On 12/11/19 7:07 AM, Reingruber, Richard wrote:
>> Hi David,
>>
>> > Most of the details here are in areas I can comment on in detail,
>> but I
>> > did take an initial general look at things.
>>
>> Thanks for taking the time!
>>
>> > The only thing that jumped out at me is that I think the
>> > DeoptimizeObjectsALotThread should be a hidden thread.
>> >
>> > + bool is_hidden_from_external_view() const { return true; }
>>
>> Yes, it should. Will add the method like above.
>>
>> > Also I don't see any testing of the DeoptimizeObjectsALotThread.
>> Without
>> > active testing this will just bit-rot.
>>
>> DeoptimizeObjectsALot is meant for stress testing with a larger
>> workload. I will add a minimal test
>> to keep it fresh.
>>
>> > Also on the tests I don't understand your @requires clause:
>> >
>> > @requires ((vm.compMode != "Xcomp") & vm.compiler2.enabled &
>> > (vm.opt.TieredCompilation != true))
>> >
>> > This seems to require that TieredCompilation is disabled, but
>> tiered is
>> > our normal mode of operation. ??
>> >
>>
>> I removed the clause. I guess I wanted to target the tests towards the
>> code they are supposed to
>> test, and it's easier to analyze failures w/o tiered compilation and
>> with just one compiler thread.
>>
>> Additionally I will make use of
>> compiler.whitebox.CompilerWhiteBoxTest.THRESHOLD in the tests.
>>
>> Thanks,
>> Richard.
>>
>> -----Original Message-----
>> From: David Holmes <david.holmes at oracle.com>
>> Sent: Mittwoch, 11. Dezember 2019 08:03
>> To: Reingruber, Richard <richard.reingruber at sap.com>;
>> serviceability-dev at openjdk.java.net;
>> hotspot-compiler-dev at openjdk.java.net;
>> hotspot-runtime-dev at openjdk.java.net
>> Subject: Re: RFR(L) 8227745: Enable Escape Analysis for Better
>> Performance in the Presence of JVMTI Agents
>>
>> Hi Richard,
>>
>> On 11/12/2019 7:45 am, Reingruber, Richard wrote:
>>> Hi,
>>>
>>> I would like to get reviews please for
>>>
>>> http://cr.openjdk.java.net/~rrich/webrevs/2019/8227745/webrev.3/
>>>
>>> Corresponding RFE:
>>> https://bugs.openjdk.java.net/browse/JDK-8227745
>>>
>>> Fixes also https://bugs.openjdk.java.net/browse/JDK-8233915
>>> And potentially https://bugs.openjdk.java.net/browse/JDK-8214584 [1]
>>>
>>> Vladimir Kozlov kindly put webrev.3 through tier1-8 testing without
>>> issues (thanks!). In addition the
>>> change is being tested at SAP since I posted the first RFR some
>>> months ago.
>>>
>>> The intention of this enhancement is to benefit performance wise from
>>> escape analysis even if JVMTI
>>> agents request capabilities that allow them to access local variable
>>> values. E.g. if you start-up
>>> with -agentlib:jdwp=transport=dt_socket,server=y,suspend=n, then
>>> escape analysis is disabled right
>>> from the beginning, well before a debugger attaches -- if ever one
>>> should do so. With the
>>> enhancement, escape analysis will remain enabled until and after a
>>> debugger attaches. EA based
>>> optimizations are reverted just before an agent acquires the
>>> reference to an object. In the JBS item
>>> you'll find more details.
>>
>> Most of the details here are in areas I can comment on in detail, but I
>> did take an initial general look at things.
>>
>> The only thing that jumped out at me is that I think the
>> DeoptimizeObjectsALotThread should be a hidden thread.
>>
>> + bool is_hidden_from_external_view() const { return true; }
>>
>> Also I don't see any testing of the DeoptimizeObjectsALotThread. Without
>> active testing this will just bit-rot.
>>
>> Also on the tests I don't understand your @requires clause:
>>
>> @requires ((vm.compMode != "Xcomp") & vm.compiler2.enabled &
>> (vm.opt.TieredCompilation != true))
>>
>> This seems to require that TieredCompilation is disabled, but tiered is
>> our normal mode of operation. ??
>>
>> Thanks,
>> David
>>
>>> Thanks,
>>> Richard.
>>>
>>> [1] Experimental fix for JDK-8214584 based on JDK-8227745
>>>
>>> http://cr.openjdk.java.net/~rrich/webrevs/2019/8214584/experiment_v1.patch
>>>
>>>
More information about the hotspot-runtime-dev
mailing list