RFR: 8181859: Monitor deflation is not checked in cleanup path
Robbin Ehn
robbin.ehn at oracle.com
Thu Jun 15 07:59:52 UTC 2017
Hi all,
Thanks for the reviews!
On 06/14/2017 10:19 PM, serguei.spitsyn at oracle.com wrote:
>>
>> src/share/vm/runtime/globals.hpp
>> L1187 experimental(intx, MonitorUsedDeflationThreshold, 90, \
>> L1188 "Percentage of used monitors before trigger cleanup " \
>> L1189 "safepoint which deflates monitors (0 is off)" \
>> L1190 "The check is performed on GuaranteedSafepointInterval") \
>> L1191 range(0, 100) \
>>
>> nit - indent for L1188-91 should be after the '(' on L1187.
>>
>> typo - 'trigger' -> 'triggering'
>> typo - 'off)' -> 'off).' (add period)
>> typo - 'Interval")' -> 'Interval.")' (add period)
Fixed
>>
>> src/share/vm/runtime/synchronizer.hpp
>> nit - please update copyright year to 2017.
>>
>> L148 static bool is_cleanup_needed();
>> nit - please move this decl above this line:
>>
>> L138: static void oops_do(OopClosure* f);
>>
>> so it will be between deflate_monitor() and oops_do().
>> The extra blank line is not needed.
Fixed
>>
>> src/share/vm/runtime/synchronizer.cpp
>> I like the refactoring into monitors_used_above_threshold().
>> No other comments.
Fixed
>>
>> src/share/vm/runtime/safepoint.cpp
>> L528: // Need a safepoint if there many monitor to deflate
>> typo - 'there many' -> 'there are many'
>> nit - please add a period to the end of the sentence.
Fixed
>
> One more typo at L528: 'monitor' -> 'monitors'
Fixed
> The fix looks good to me (modulo the typos Dan pointed out).
> I also don't need to see another webrev if the typos are fixed.
Thanks, pushing!
/Robbin
>
> Thanks,
> Serguei
>>
>>
>> Thumbs up! I don't need to see another webrev if you fix the
>> typos and nits.
>>
>> Dan
>>
>>
>>>
>>> Thanks for bearing with me!
>>>
>>> Note:
>>> monitors_used could be wrong since we don't read the values holding gListLock.
>>> So in a very unlikely scenario it could cost a safepoint.
>>>
>>> /Robbin
>>>
>>>>
>>>> Carsten
>>>>
>>>> On Wed, Jun 14, 2017 at 5:40 AM, Robbin Ehn <robbin.ehn at oracle.com <mailto:robbin.ehn at oracle.com>> wrote:
>>>>
>>>> Hi Aleksey,
>>>>
>>>> On 06/14/2017 11:14 AM, Aleksey Shipilev wrote:
>>>>
>>>> On 06/14/2017 11:07 AM, Robbin Ehn wrote:
>>>>
>>>> Full:
>>>> http://cr.openjdk.java.net/~rehn/8181859/2/webrev/ <http://cr.openjdk.java.net/~rehn/8181859/2/webrev/>
>>>>
>>>>
>>>> Looks good to me.
>>>>
>>>>
>>>> Thanks!
>>>>
>>>>
>>>> I would paranoidally add parentheses in this expression, but your choice.
>>>>
>>>> return MonitorUsedDeflationThreshold > 0 && (monitors_used * 100LL) /
>>>> gMonitorPopulation > MonitorUsedDeflationThreshold;
>>>>
>>>>
>>>> Discussed locally and this was suggested (looks good to me):
>>>>
>>>> static bool monitors_used_above_threshold() {
>>>> int monitors_used = gMonitorPopulation - gMonitorFreeCount;
>>>> int monitor_useage = (monitors_used * 100LL) / gMonitorPopulation;
>>>> return monitor_useage > MonitorUsedDeflationThreshold;
>>>> }
>>>>
>>>> bool ObjectSynchronizer::is_cleanup_needed() {
>>>> if (MonitorUsedDeflationThreshold > 0) {
>>>> return monitors_used_above_threshold();
>>>> }
>>>> return false;
>>>> }
>>>>
>>>> Carsten, Aleksey, are you good with this?
>>>>
>>>> Full: http://cr.openjdk.java.net/~rehn/8181859/3/webrev/ <http://cr.openjdk.java.net/~rehn/8181859/3/webrev/>
>>>>
>>>> Thanks, Robbin
>>>>
>>>>
>>>>
>>>> Thanks,
>>>> -Aleksey
>>>>
>>>>
>>>>
>>
>
More information about the hotspot-runtime-dev
mailing list