RFR/C: 8218922: SA: Enable best-effort implementation of live regions iteration for ZGC

Stefan Karlsson stefan.karlsson at oracle.com
Fri Feb 15 09:12:17 UTC 2019


Thanks, Yasumasa!

StefanK

On 2019-02-15 01:54, Yasumasa Suenaga wrote:
> Hi Stefan,
> 
> Both changes look good to me!
> 
> 
> Thanks,
> 
> Yasumasa
> 
> 2019年2月15日(金) 2:12 Stefan Karlsson <stefan.karlsson at oracle.com>:
>>
>> 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