[prev in list] [next in list] [prev in thread] [next in thread] 

List:       openjdk-serviceability-dev
Subject:    Re: RFR (S) 8251302: Create dedicated OopStorages for Management and Jvmti
From:       Coleen Phillimore <coleen.phillimore () oracle ! com>
Date:       2020-08-11 11:28:01
Message-ID: 1ef431be-152c-1d7d-4390-c0a21594c8cc () oracle ! com
[Download RAW message or body]

Thanks David!
Coleen

On 8/10/20 10:07 PM, David Holmes wrote:
> 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@oracle.com wrote:
> > > > > > > On 8/10/20 13:34, serguei.spitsyn@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
> > > > > > > > 
> > > > > > > 
> > > > > > 
> > > > > 
> > > > 
> > 


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic