RFR: 8210064: ZGC: Introduce ZConcurrentRootsIterator for scanning a subset of strong IN_NATIVE roots concurrently
Erik Österlund
erik.osterlund at oracle.com
Tue Oct 16 09:55:35 UTC 2018
Hi Per,
Thanks for the review!
/Erik
On 2018-10-16 11:52, Per Liden wrote:
> On 10/15/2018 07:05 PM, Erik Österlund wrote:
>> Hi,
>>
>> This patch has been awaiting 3 patches to go in first due to
>> unrelated test failures found in tier 6.
>> Here is a rebase of these fixes.
>>
>> http://cr.openjdk.java.net/~eosterlund/8210064/webrev.03/
>
> Looks good.
>
> /Per
>
>>
>> Compared to the last patch, I also
>>
>> 1) Introduce the STS joiner that is held while doing concurrent root
>> iteration. The reason is that it is not safe to run this code through
>> safepoints.
>> 2) Treat the CLDs differently when marking vs heap iterating. Right
>> now, I don't claim CLDs during heap iteration, because that will
>> eventually break class unloading. Eventually, I will also need to
>> walk different CLD sets during marking vs heap iteration (heap
>> iteration will walk all CLDs, marking will only walk the strong
>> ones), so the distinction is necessary.
>>
>> Thanks,
>> /Erik
>>
>> On 2018-09-04 12:23, Per Liden wrote:
>>> On 09/04/2018 12:17 PM, Erik Österlund wrote:
>>>> Hi Per,
>>>>
>>>> On 2018-09-04 11:47, Per Liden wrote:
>>>>> Hi Erik,
>>>>>
>>>>> On 09/04/2018 11:39 AM, Erik Österlund wrote:
>>>>>> Hi,
>>>>>>
>>>>>> Coleen pushed 8210155 before I pushed this. So now I need to wrap
>>>>>> the CLDG iterations in a CLDG lock.
>>>>>> I made a patch that adds the lock and relaxes the locking assert
>>>>>> appropriately so that the thread invoking the worker gang can
>>>>>> take the lock. This implies that the worker threads will not own
>>>>>> the lock, but that is okay.
>>>>>>
>>>>>> Incremental:
>>>>>> http://cr.openjdk.java.net/~eosterlund/8210064/webrev.01_02/
>>>>>>
>>>>>> Full:
>>>>>> http://cr.openjdk.java.net/~eosterlund/8210064/webrev.02/
>>>>>
>>>>> Looks good. Just one small thing. It seems the old
>>>>> assert_locked_or_safepoint() can now be expressed as
>>>>> assert_locked_or_safepoint_weak() plus some extra conditions.
>>>>
>>>> Thanks for the review. Unfortunately it looks like I can't express
>>>> the strong one with the weak one as it has early exit code, and I
>>>> need to change the weak one to return a boolean to make that work.
>>>> Oh well.
>>>
>>> Ah, you're right of course. Ignore that.
>>>
>>> /Per
>>>
>>>>
>>>> Thanks,
>>>> /Erik
>>>>
>>>>> /Per
>>>>>
>>>>>>
>>>>>> Thanks,
>>>>>> /Erik
>>>>>>
>>>>>> On 2018-08-31 10:37, Erik Österlund wrote:
>>>>>>> Hi Per,
>>>>>>>
>>>>>>> On 2018-08-31 09:57, Per Liden wrote:
>>>>>>>> Hi Erik,
>>>>>>>>
>>>>>>>> On 08/30/2018 10:46 AM, Erik Österlund wrote:
>>>>>>>>> Hi,
>>>>>>>>>
>>>>>>>>> We now have enough load barriers to support scanning of CLDs
>>>>>>>>> and JNI handles concurrently. I propose to do that and move
>>>>>>>>> these root sets out from ZRootsIterator, and hence the GC
>>>>>>>>> pause. They will be scanned during concurrent marking (and
>>>>>>>>> heap iteration), but no longer during relocation.
>>>>>>>>>
>>>>>>>>> I still perform ClassLoaderDataGraph::clear_claimed_marks() in
>>>>>>>>> the pause because it seems cheap. But it can be moved out of
>>>>>>>>> the pause when Coleen gets her new cool CLDG lock in.
>>>>>>>>>
>>>>>>>>> Webrev:
>>>>>>>>> http://cr.openjdk.java.net/~eosterlund/8210064/webrev.00/
>>>>>>>>
>>>>>>>> I have some minor requests. Instead of listing them all, I
>>>>>>>> attached a patch which addresses those.
>>>>>>>>
>>>>>>>> The main thing is that I don't think ZDriver should know about
>>>>>>>> "concurrent roots", just that it's doing "mark" or "mark
>>>>>>>> continue", so I suggest we turn that into a "bool initial"
>>>>>>>> argument to mark() instead of exposing a
>>>>>>>> mark_concurrent_roots() function.
>>>>>>>
>>>>>>> Sure, that makes sense.
>>>>>>>
>>>>>>> Thanks for the review!
>>>>>>>
>>>>>>> /Erik
>>>>>>>
>>>>>>>> The other things are minor style adjustments.
>>>>>>>> /Per
>>>>>>>>
>>>>>>>>>
>>>>>>>>> Bug:
>>>>>>>>> https://bugs.openjdk.java.net/browse/JDK-8210064
>>>>>>>>>
>>>>>>>>> Tested through hs-tier1-3.
>>>>>>>>>
>>>>>>>>> Thanks,
>>>>>>>>> /Erik
>>>>>>>
>>>>>>
>>>>
>>
More information about the hotspot-gc-dev
mailing list