RFR (S) 8251302: Create dedicated OopStorages for Management and Jvmti
David Holmes
david.holmes at oracle.com
Tue Aug 11 02:07:28 UTC 2020
On 11/08/2020 10:48 am, Coleen Phillimore wrote:
>
> Hi David, Thank you for reviewing.
>
> On 8/10/20 8:04 PM, David Holmes wrote:
>> Hi Coleen,
>>
>> This looks good to me too!
>>
>> Were the changes in src/hotspot/share/utilities/macros.hpp just for
>> completeness? You don't seem to use the new macro.
>
> It was left over from an earlier edit. I reverted it.
Okay.
>>
>> src/hotspot/share/runtime/init.cpp
>>
>> It seems a little odd having an explicit call to
>> JvmtiExport::initialize_oop_storage() rather than that call being
>> inside on of the other init functions. But I don't really see an
>> appropriate place for it. I thought perhaps management_init as it
>> seems to combine a few related things, but it isn't really the right
>> place either.
>
> management_init() isn't the right place for JVMTI. I could have added
> a jvmti_init() that calls JvmtiExport::initialize_oop_storage() but
> honestly I think this whole thing should be rewritten to call static
> functions rather than through these forward declarations. There are
> other places that call qualified static initialization functions in this
> code and I think this should migrate to that.
>
>> I was also a little unsure if this initialization point would always
>> be early enough, but it seems the oop-storage can't be touched by
>> anything until the live phase, so this seems okay. Though I was
>> wondering whether it should be done in vm_init_globals after
>> universe_oopstorage_init, to maintain the same initialization point as
>> it currnetly has?
>
> There are no jvmti specific initializations in the short amount of
> initialization code between vm_init_globals and init_globals so I chose
> the later initialization because it worked, and the later initialization
> risks dragging more dependencies forward with it. Doing jvmti
> initialization in what looks like very early initialization doesn't seem
> appropriate. And isn't needed for correctness.
Okay.
Thanks,
David
> thanks,
> Coleen
>>
>> Thanks,
>> David
>> -----
>>
>>
>> On 11/08/2020 8:39 am, Coleen Phillimore wrote:
>>> Adding back serviceability-dev.
>>> Thanks for reviewing Serguei.
>>> Coleen
>>>
>>> On 8/10/20 6:11 PM, Coleen Phillimore wrote:
>>>>
>>>>
>>>> On 8/10/20 5:28 PM, Coleen Phillimore wrote:
>>>>>
>>>>>
>>>>> On 8/10/20 4:38 PM, serguei.spitsyn at oracle.com wrote:
>>>>>> On 8/10/20 13:34, serguei.spitsyn at oracle.com wrote:
>>>>>>> Hi Coleen,
>>>>>>>
>>>>>>> It looks good to me.
>>>>>>> Minor:
>>>>>>> +void JvmtiExport::initialize_oop_storage() {
>>>>>>> + // OopStorage needs to be created early in startup and
>>>>>>> unconditionally
>>>>>>> + // because of OopStorageSet static array indices.
>>>>>>> + _jvmti_oop_storage = OopStorageSet::create_strong("Thread
>>>>>>> OopStorage");
>>>>>>> +}
>>>>>>> +
>>>>>>> Would it better to replace "Thread Oopstorage" with "JVMTI
>>>>>>> OopStorage"?
>>>>>>
>>>>>> In the file
>>>>>> http://cr.openjdk.java.net/~coleenp/2020/8251302.01/webrev/test/jdk/jdk/jfr/event/gc/collection/TestG1ParallelPhases.java.udiff.html
>>>>>>
>>>>>> I see this:
>>>>>> "Thread OopStorage",
>>>>>> + "ThreadService OopStorage",
>>>>>> It is not clear if we can simply add ""JVMTI OopStorage" above.
>>>>>
>>>>> Serguei, Thank you for finding this. I was wondering why I didn't
>>>>> have to add JVMTI OopStorage to the test. I'd cut/pasted the same
>>>>> string for Thread OopStorage.
>>>>>
>>>>> I'll fix this and the test and retest.
>>>>
>>>> Hi Serguei,
>>>>
>>>> open webrev at
>>>> http://cr.openjdk.java.net/~coleenp/2020/8251302.02.incr/webrev
>>>>
>>>> This fixes the test as well.
>>>>
>>>> Thanks!
>>>> Coleen
>>>>
>>>>>
>>>>> thanks,
>>>>> Coleen
>>>>>>
>>>>>> Thanks,
>>>>>> Serguei
>>>>>>
>>>>>>
>>>>>>> No need in another webrev.
>>>>>>>
>>>>>>> Thanks,
>>>>>>> Serguei
>>>>>>>
>>>>>>> On 8/10/20 12:37, Coleen Phillimore wrote:
>>>>>>>> These OopHandles are created and released during breakpoints and
>>>>>>>> Thread stack walking operations. They should have their own
>>>>>>>> OopStorage so that GC can detect whether these things affect
>>>>>>>> timing.
>>>>>>>>
>>>>>>>> Tested with tier1-6.
>>>>>>>>
>>>>>>>> open webrev at
>>>>>>>> http://cr.openjdk.java.net/~coleenp/2020/8251302.01/webrev
>>>>>>>> bug link https://bugs.openjdk.java.net/browse/JDK-8251302
>>>>>>>>
>>>>>>>> Thanks,
>>>>>>>> Coleen
>>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>
More information about the hotspot-dev
mailing list