Well, I'm not sure why he's seeing a difference in performance. I've not spoken 
to Henrik about timers so I can't comment on what he's telling you. I can only 
say that there is currently an open CR w.r.t monotonic timers and there is some 
discussion on the subject in the CR. I've also spoken to Cliff Click about Azul 
timers and to point to the confusion here.. he was certain that the JDK was 
using the TSC, something that I was told by Charlie Hunt wasn't the case. So I 
went digging to find out which of these two was right. Turns out the answer is 
pretty complicated as it really depends on the OS and what the hardware has. 
RedHat was the last to touch the OpenJDK timer code and they did so only in the 
Linux build and only to have the high res timer used if it was available.

Not a very clear picture.. and all of these timers come with their own set of 
faults.. which could be worked around if only we knew which one was being used  
;-)

And to add to the confusion is thread scheduler efficiency which comes into 
play.... and I'm very suspicious of hypervisor interference with thread 
scheduling.Azul has found some very very weird (almost harmonic) interference 
patterns that can adversely  affect the ability to utilize cores. Without 
access to proper counters it's almost impossible to say for sure whats going on.

Regards,
Kirk

On Dec 14, 2011, at 4:09 PM, Peter Lin wrote:

> thanks kirk for digging up those details.
> 
> My memory is faulty, but that is basically what henrik told me back in
> 2006/2007. I had noticed a difference between System.currentTimeMillis
> and System.nanoTime on all JVM (sun, jrockit, ibm). Digging deeper,
> henrik explained to me that windows uses the high performance timer,
> which is considerably faster than linux timer.
> 
> I agree that more threads results in more pressure on the thread scheduler.
> 
> what got me curious is the user sees a difference between openJDK and
> sunJDK. perhaps there is some other process running on that linux
> system contributing to the extra CPU load.
> 
> 
> On Wed, Dec 14, 2011 at 10:00 AM, Kirk <kirk.pepperd...@gmail.com> wrote:
>>> 
>>> 
>>> Unfortunately it turns out that nanoTime drifts quite badly relative
>>> to currentTimeMillis, so currentTimeMillis has to be used to anchor
>>> that drift.
>>> Otherwise the times just don't add up properly.
>>> 
>>> The JMeter property "sampleresult.useNanoTime" can be set to "false"
>>> to disable the use of nanoTime.
>> 
>> Right, if nanoTime in Windows uses a TSC I would expect drift especially on 
>> newer processors. Not all cores receive all clocks and since the value in 
>> the TSC * CPu frequency is the current time, not having an accurate count of 
>> clocks would cause drift. currentTimeMillis relying on a RTC would have 
>> smaller amounts of drift which would only be noticed between machines (which 
>> would be correct with NTP). So your correction of drift would be consistent 
>> with this. On Solaris, the drift between the TOD clock and the TSC is 
>> correct after a 1ms drift 125us at a time. I think MS has attempted 
>> something similar (due to complaints from gamers) but I'm not aware of the 
>> details.
>> 
>> Regards,
>> Kirk
>> 
>> 
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: user-unsubscr...@jmeter.apache.org
>> For additional commands, e-mail: user-h...@jmeter.apache.org
>> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscr...@jmeter.apache.org
> For additional commands, e-mail: user-h...@jmeter.apache.org
> 


---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscr...@jmeter.apache.org
For additional commands, e-mail: user-h...@jmeter.apache.org

Reply via email to