RFR: 8210064: ZGC: Introduce ZConcurrentRootsIterator for scanning a subset of strong IN_NATIVE roots concurrently
Per Liden
per.liden at oracle.com
Tue Oct 16 09:52:53 UTC 2018
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