RFR(M): 8008287: Code cache statistic variables for event tracing needs atomicity

Nils Eliasson nils.eliasson at oracle.com
Fri Jun 21 14:16:05 PDT 2013


Some new updates:

- Atomic::writes replaces the sweeper statistics lock.

http://cr.openjdk.java.net/~neliasso/8008287/webrev.07/ 
<http://cr.openjdk.java.net/%7Eneliasso/8008287/webrev.07/>

Thanks,
Nils

On 2013-06-18 17:21, Vladimir Kozlov wrote:
> Yes, I think it is acceptable now. I will ask Christian to look on this.
>
> Thanks,
> Vladimir
>
> On 6/18/13 7:15 AM, Nils Eliasson wrote:
>> I have minimized the critical zones, moving max out. Also guarding 
>> all calls to os::elapsed_counter() with
>> Tracing::enabled() and INCLUDE_TRACE. Had to reintroduce a 
>> duplication of timers in sweeper for some PrintMethodFlushing
>> statistics behind ifdef ASSERT. Not super pretty or compact, but at 
>> least straightforward and easy to read.
>>
>> http://cr.openjdk.java.net/~neliasso/8008287/webrev.06/ 
>> <http://cr.openjdk.java.net/%7Eneliasso/8008287/webrev.06/>
>>
>> //Nils Eliasson
>>
>> On 2013-06-17 01:06, Vladimir Kozlov wrote:
>>> Nils,
>>>
>>> NMethodSweeper::speculative_disconnect_nmethods() is called during 
>>> safepoint (VM operation) so lock in it will affect
>>> safepoint time. But I don't know how to avoid the lock here except 
>>> use it only when atomic long store is not
>>> available. One thing you can do to shorten time in lock is to move 
>>> the addition and MAX2 operations outside the lock
>>> (leave only stores inside) since it is the only place where these 
>>> values are modified.
>>>
>>> +  {
>>> +    MutexLockerEx ml(CodeSweeperStatistics_lock);
>>>    _total_disconnect_time += disconnect_time;
>>>    _peak_disconnect_time = MAX2(disconnect_time, 
>>> _peak_disconnect_time);
>>> +  }
>>>
>>> thanks,
>>> Vladimir
>>>
>>> On 6/16/13 3:00 PM, Nils Eliasson wrote:
>>>> Updated,
>>>>
>>>> Unnecessary lock removed from scan_stacks.
>>>>
>>>> http://cr.openjdk.java.net/~neliasso/8008287/webrev.05
>>>>
>>>> //Nils Eliasson
>>>>
>>>> On 2013-04-30 17:27, Nils Eliasson wrote:
>>>>> Hi,
>>>>>
>>>>> I have fixed some atomicity issues for the sweeper tracing and did 
>>>>> some refactoring at the same time, removing
>>>>> duplicate counters.
>>>>>
>>>>> I guess people might have opinions on this, but I have chosen to 
>>>>> only use the perf_counters when available instead of
>>>>> always having a normal counter and an additional perf_counter in 
>>>>> specific scenarios.
>>>>>
>>>>> Also changed the type of the traversal counter (and the 
>>>>> stack_traversal marker in nmethod). It should be good for 126
>>>>> years of sweeping once a second anyway (and we don't complete full 
>>>>> sweeps that often.)
>>>>>
>>>>> http://bugs.sun.com/view_bug.do?bug_id=8008287
>>>>> https://jbs.oracle.com/bugs/browse/JDK-8008287
>>>>> http://cr.openjdk.java.net/~neliasso/8008287/webrev.04 
>>>>> <http://cr.openjdk.java.net/%7Eneliasso/8008287/webrev.04>
>>>>>
>>>>> Thanks,
>>>>> Nils Eliasson
>>>>>
>>>>>
>>>>
>>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.openjdk.java.net/pipermail/hotspot-compiler-dev/attachments/20130621/d446ef04/attachment.html 


More information about the hotspot-compiler-dev mailing list