RFR(S/M): 8246476: remove AsyncDeflateIdleMonitors option and the safepoint based deflation mechanism

Daniel D. Daugherty daniel.daugherty at oracle.com
Mon Jul 13 20:27:18 UTC 2020


Thanks for the re-review!

Dan


On 7/13/20 4:17 PM, Patricio Chilano wrote:
> Looks good Dan! Thanks for the fixes.
>
> Patricio
> On 7/13/20 4:43 PM, Daniel D. Daugherty wrote:
>> Greetings,
>>
>> I've made minor tweaks based on Patricio's and Coleen's CR0 reviews.
>> Of course, while I was looking for safepoint related comments that
>> needed tweaking, I ran across a "perm gen" comment that needed to
>> be fixed and a misspelling of NoSafepointVerifier. I fixed both...
>>
>> Fixing the "#ifdef ASSERT ... #endif" blocking touched a few files
>> so I've gone ahead and generated new webrevs.
>>
>> Full webrev:
>>
>> http://cr.openjdk.java.net/~dcubed/8246476-webrev/1_for_jdk16.full/
>>
>> Incremental webrev:
>>
>> http://cr.openjdk.java.net/~dcubed/8246476-webrev/1_for_jdk16.inc/
>>
>>
>> May I please have at least one re-review?
>>
>> Thanks, in advance, for any comments, questions or suggestions.
>>
>> Dan
>>
>>
>>
>> On 7/13/20 3:23 PM, coleen.phillimore at oracle.com wrote:
>>>
>>>
>>> On 7/13/20 2:49 PM, Daniel D. Daugherty wrote:
>>>> Hi Coleen,
>>>>
>>>> Thanks for jumping in on this code review!
>>>>
>>>>
>>>> On 7/13/20 1:21 PM, coleen.phillimore at oracle.com wrote:
>>>>>
>>>>> http://cr.openjdk.java.net/~dcubed/8246476-webrev/0_for_jdk16/src/hotspot/share/runtime/objectMonitor.inline.hpp.udiff.html 
>>>>>
>>>>> http://cr.openjdk.java.net/~dcubed/8246476-webrev/0_for_jdk16/src/hotspot/share/runtime/synchronizer.cpp.udiff.html 
>>>>>
>>>>>
>>>>> +#ifdef ASSERT
>>>>>    void* prev = Atomic::load(&_owner);
>>>>> - ADIM_guarantee(prev == old_value, "unexpected prev owner=" 
>>>>> INTPTR_FORMAT
>>>>> +#endif
>>>>> + assert(prev == old_value, "unexpected prev owner=" INTPTR_FORMAT
>>>>>                   ", expected=" INTPTR_FORMAT, p2i(prev), 
>>>>> p2i(old_value));
>>>>>
>>>>> Just a nit but these patterns look really strange.  Can you put 
>>>>> the #endif on the other side of the assert?
>>>>
>>>> I can do that. In previous reviews of other fixes, I think I've had 
>>>> assert()
>>>> calls inside #ifdef ASSERT ... #endif blocks and have been asked to 
>>>> move
>>>> them out since it's redundant.
>>>>
>>>> I'll plan to make that change, but I'll keep an eye open for 
>>>> complaints
>>>> from other reviewers before I push...
>>>>
>>>>
>>>>> http://cr.openjdk.java.net/~dcubed/8246476-webrev/0_for_jdk16/src/hotspot/share/runtime/safepoint.cpp.udiff.html 
>>>>>
>>>>>
>>>>> if 
>>>>> (_subtasks.try_claim_task(SafepointSynchronize::SAFEPOINT_CLEANUP_DEFLATE_MONITORS)) 
>>>>> { ... + ObjectSynchronizer::do_safepoint_work();
>>>>>
>>>>>
>>>>> Why do we still have this to trigger the ServiceThread when we're 
>>>>> going to only wait GuaranteedSafepointInterval before checking for 
>>>>> monitor deflation anyway?
>>>>
>>>> When a cleanup safepoint triggers an async deflation request, it
>>>> counts as a direct async deflation request so it is not subject
>>>> to the AsyncDeflationInterval limit. In other words, when a cleanup
>>>> safepoint asks, we honor the request regardless of when the most
>>>> recent async deflation request was finished.
>>>>
>>>> When we do a periodic wake-up and check to see if an async deflation
>>>> is needed, we'll only honor that request if it has been longer than
>>>> AsyncDeflationInterval since we last completed an async deflation
>>>> cycle. So the periodic invocation mechanism has a limit so that we
>>>> don't swamp the ServiceThread.
>>>
>>> Ok, I see it now, thanks!  If we had a lot of safepoints, we would 
>>> swamp the service thread also, but we don't have a lot of safepoints 
>>> anymore.
>>>
>>>>
>>>>
>>>>> Why have this in a safepoint cleanup task?
>>>>
>>>> I figured I would leave it because there are plans to get rid of the
>>>> safepoint cleanup mechanism and whoever does that work can deal with
>>>> any comments in the code that talk about cleanup safepoints and the
>>>> like. That person will also have to evaluate and deal with whether
>>>> the safepoint cleanup task removal causes unacceptable issues in the
>>>> system.
>>>>
>>>
>>> I think we're still going to need safepoint cleanup for the other 
>>> things, but ok, someone can evaluate this later. There's also this 
>>> RFE, which I linked to this just now.
>>>
>>> https://bugs.openjdk.java.net/browse/JDK-8227060
>>>
>>> Thanks,
>>> Coleen
>>>>
>>>>> The code deletion is really nice.
>>>>
>>>> Thanks!
>>>>
>>>> Dan
>>>>
>>>>
>>>>>
>>>>> Thanks,
>>>>> Coleen
>>>>>
>>>>>
>>>>> On 7/13/20 12:08 PM, Daniel D. Daugherty wrote:
>>>>>> On 7/13/20 12:05 PM, Patricio Chilano wrote:
>>>>>>> Hi Dan,
>>>>>>>
>>>>>>> Changes look good to me!
>>>>>>
>>>>>> Thanks!
>>>>>>
>>>>>>
>>>>>>> In synchronizer.cpp we have this comment about ObjectMonitor 
>>>>>>> lifecycle:
>>>>>>>
>>>>>>> // Inflation unlinks monitors from om_list_globals._free_list or 
>>>>>>> a per-thread
>>>>>>> // free list and associates them with objects. Deflation -- 
>>>>>>> which occurs at
>>>>>>> // STW-time or asynchronously -- disassociates idle monitors 
>>>>>>> from objects.
>>>>>>> // Such scavenged monitors are returned to the 
>>>>>>> om_list_globals._free_list.
>>>>>>>
>>>>>>> With all the older code removed, are there still cases where we 
>>>>>>> do deflations at safepoint?
>>>>>>
>>>>>> Good catch! I need to adjust that comment. I'll look for others 
>>>>>> also.
>>>>>>
>>>>>> Dan
>>>>>>
>>>>>>
>>>>>>>
>>>>>>> Thanks!
>>>>>>> Patricio
>>>>>>> On 7/13/20 10:47 AM, Daniel D. Daugherty wrote:
>>>>>>>> Hi David,
>>>>>>>>
>>>>>>>> Thanks for the review!
>>>>>>>>
>>>>>>>> I need a second review folks... any takers?
>>>>>>>>
>>>>>>>> Dan
>>>>>>>>
>>>>>>>>
>>>>>>>> On 7/12/20 10:57 PM, David Holmes wrote:
>>>>>>>>> Hi Dan,
>>>>>>>>>
>>>>>>>>> This all looks good to me.
>>>>>>>>>
>>>>>>>>> Thanks,
>>>>>>>>> David
>>>>>>>>> -----
>>>>>>>>>
>>>>>>>>> On 8/07/2020 5:51 pm, David Holmes wrote:
>>>>>>>>>> On 8/07/2020 7:21 am, Daniel D. Daugherty wrote:
>>>>>>>>>>> Ping! Any takers??? Code deletion should be really appealing 
>>>>>>>>>>> here!!
>>>>>>>>>>
>>>>>>>>>> Sorry Dan didn't get to it before vacation. But if you can 
>>>>>>>>>> wait till Monday ...
>>>>>>>>>>
>>>>>>>>>> Cheers,
>>>>>>>>>> David
>>>>>>>>>>
>>>>>>>>>>> Dan
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> On 7/6/20 12:35 PM, Daniel D. Daugherty wrote:
>>>>>>>>>>>> Greetings,
>>>>>>>>>>>>
>>>>>>>>>>>> It's time to remove the AsyncDeflateIdleMonitors option 
>>>>>>>>>>>> from JDK16. We can
>>>>>>>>>>>> also get rid of the safepoint based deflation mechanism 
>>>>>>>>>>>> since turning off
>>>>>>>>>>>> async deflation (-XX:-AsyncDeflateIdleMonitors) was the 
>>>>>>>>>>>> only way left to
>>>>>>>>>>>> use it.
>>>>>>>>>>>>
>>>>>>>>>>>> This is marked as an "S/M" review because the number of 
>>>>>>>>>>>> touched/deleted
>>>>>>>>>>>> lines makes it a Medium review, but the number of 
>>>>>>>>>>>> touched/changed lines
>>>>>>>>>>>> (outside of the deletions) makes it a Small review. It's 
>>>>>>>>>>>> actually a pretty
>>>>>>>>>>>> fast read... :-)
>>>>>>>>>>>>
>>>>>>>>>>>> Here's the bug ID:
>>>>>>>>>>>>
>>>>>>>>>>>>     JDK-8246476 remove AsyncDeflateIdleMonitors option and 
>>>>>>>>>>>> the safepoint
>>>>>>>>>>>>                 based deflation mechanism
>>>>>>>>>>>> https://bugs.openjdk.java.net/browse/JDK-8246476
>>>>>>>>>>>>
>>>>>>>>>>>> Here's the webrev URL:
>>>>>>>>>>>>
>>>>>>>>>>>> http://cr.openjdk.java.net/~dcubed/8246476-webrev/0_for_jdk16/
>>>>>>>>>>>>
>>>>>>>>>>>> The webrev is baselined on Thomas S's fix for 8248650 which 
>>>>>>>>>>>> is jdk-16+4
>>>>>>>>>>>> plus a dozen or so changesets.
>>>>>>>>>>>>
>>>>>>>>>>>> This change has been tested with Mach5 Tier[1-3],4,5,6,7,8 
>>>>>>>>>>>> and there are
>>>>>>>>>>>> no regressions (and very few known failures). My inflation 
>>>>>>>>>>>> stress testing
>>>>>>>>>>>> is still in process. I had to restart that testing after a 
>>>>>>>>>>>> thunderstorm
>>>>>>>>>>>> related power failure took down my servers in Florida. Sigh...
>>>>>>>>>>>>
>>>>>>>>>>>> Thanks, in advance, for any comments, questions, or 
>>>>>>>>>>>> suggestions.
>>>>>>>>>>>>
>>>>>>>>>>>> Dan
>>>>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>>
>



More information about the hotspot-runtime-dev mailing list