RFR/C: 8218922: SA: Enable best-effort implementation of live regions iteration for ZGC
Stefan Karlsson
stefan.karlsson at oracle.com
Fri Feb 15 19:06:58 UTC 2019
Hi Kevin,
On 2019-02-15 13:14, Kevin Walls wrote:
> Hi Stefan,
>
> This is great - if I want to try it out, what order do the changes
> apply, does the 8218746 webrev apply to create ZExternalBitMap.java
> and then the 8218922 webrev?
This is my patch queue of outgoing patches:
zSA.fixVMObjectFactory.8218731
zSA.fixPhysical.8218732
zSA.heapUsedCapacity.8218733
zSA.resolveOopHandle.8218734
zSA.bitMapsSegmented.8218743
zSA.bitMapsZ.8218746
zSA.pagesIterate.refactor.8219003
zSA.pagesIterate.8218922.Z
zSA.turnOnHprof.8218970
zSA.turnOnTests.8218978
I've created one big webrev over all these changes:
https://cr.openjdk.java.net/~stefank/zgc/zSABitMapsAndLiveRegions/webrev/
StefanK
>
> Thanks
> Kevin
>
>
> On 14/02/2019 17:12, Stefan Karlsson wrote:
>> Hi again,
>>
>> I've separated the live regions iteration refactoring into this patch:
>> https://cr.openjdk.java.net/~stefank/8219003/webrev.01/
>>
>> And use this RFE for the ZGC specific parts:
>> https://cr.openjdk.java.net/~stefank/8218922/webrev.02/
>>
>> Thanks,
>> StefanK
>>
>> On 2019-02-14 14:39, Stefan Karlsson wrote:
>>> Hi Yasumasa,
>>>
>>> On 2019-02-14 14:11, Yasumasa Suenaga wrote:
>>>> Hi Stefan,
>>>>
>>>>> Maybe this is enough to enable a bit more SA debugging
>>>>> capabilities when
>>>>> running with ZGC? What do you think, should we bring in this change?
>>>>
>>>> I think it should be brought this in.
>>>> I filed same issue as JDK-8207843, but I've not yet worked.
>>>> So I will close it as duplicate of your change.
>>>>
>>>>
>>>>> To be able to implement this more cleanly I've restructured the live
>>>>> region collection, and pushed GC specific code into the specific GCs.
>>>>> There are some extra usage of generics to make the code a bit
>>>>> easier to
>>>>> read and develop.
>>>>
>>>> IMHO refactoring for live region collection and ZGC related changes
>>>> should
>>>> be separated. What do you think?
>>>
>>> Yes. I think that would be good. I'll separate this out into two
>>> changes.
>>>
>>>>
>>>>
>>>> Your change looks good to me.
>>>> BTW, did you check `jhsdb jmap --binaryheap` with this change?
>>>>
>>>
>>> Yes, when testing this I ran all tests in serviceability/sa and
>>> manually tested the command above.
>>>
>>> While testing this I also had this patch applied to enable SA hprof
>>> for ZGC:
>>> http://cr.openjdk.java.net/~stefank/8218970/webrev.01/
>>>
>>> And used this patch to turn off the ZGC filtering in the tests:
>>> http://cr.openjdk.java.net/~stefank/8218978/webrev.01/
>>>
>>> I'm currently rerunning the tests to see that the latest changes
>>> didn't break anything.
>>>
>>> Thanks,
>>> StefanK
>>>>
>>>> Thanks,
>>>>
>>>> Yasumasa
>>>>
>>>>
>>>>
>>>> On 2019/02/13 23:52, Stefan Karlsson wrote:
>>>>> Hi all,
>>>>>
>>>>> Please review / comment on this patch to enable a best-effort live
>>>>> heap
>>>>> region iteration implementation in ZGC.
>>>>>
>>>>> http://cr.openjdk.java.net/~stefank/8218922/webrev.01/
>>>>> https://bugs.openjdk.java.net/browse/JDK-8218922
>>>>>
>>>>> The SA has functionally that relies on live heap region
>>>>> information from
>>>>> the GCs. This is problematic when dead objects are left in the
>>>>> heap, and
>>>>> their classes have been unloaded.
>>>>>
>>>>> Because of this ZGC has so far not implemented this feature.
>>>>> However, we
>>>>> could provide a best-effort implementation that most likely will
>>>>> work if
>>>>> classes are not unloaded (or class unloading is turned off), and
>>>>> otherwise might fail to fully parse and report all live heap regions.
>>>>>
>>>>> For active, non-relocating pages the patch simply returns [start,
>>>>> top)
>>>>> and for pages being actively relocated, it reports regions containing
>>>>> the non-forwarded objects, the other objects are either dead or
>>>>> could be
>>>>> found in one of the to-regions.
>>>>>
>>>>> With this patch I'm able to get heap histograms with ZGC.
>>>>>
>>>>> Maybe this is enough to enable a bit more SA debugging
>>>>> capabilities when
>>>>> running with ZGC? What do you think, should we bring in this change?
>>>>>
>>>>> To be able to implement this more cleanly I've restructured the live
>>>>> region collection, and pushed GC specific code into the specific GCs.
>>>>> There are some extra usage of generics to make the code a bit
>>>>> easier to
>>>>> read and develop.
>>>>>
>>>>> Thanks,
>>>>> StefanK
>>>>>
>>
More information about the serviceability-dev
mailing list