I've finally solved this issue. Posting here for the benefit of list lurkers and archive readers who may hit the same problem in the future:

This was actually a Linux Kernel "bug". I've fixed it by upgrading to a 2.4.20 kernel built with CONFIG_X86_TSC_DISABLE set. I don't know whether there's a solution for earlier kernels (this config var doesn't exist in 2.4.18).

From the 2.4.20 kernel Configure.help:

Unsynced TSC support
CONFIG_X86_TSC_DISABLE
This option is used for getting Linux to run on a NUMA multi-node
boxes, laptops and other systems suffering from unsynced TSCs or
TSC drift, which can cause gettimeofday to return non-monotonic values.
Choosing this option will disable the CONFIG_X86_TSC optimization,
and allows you to then specify "notsc" as a boot option regardless of
which processor you have compiled for.


NOTE: If your system hangs when init should run, you are probably
using a i686 compiled glibc which reads the TSC without checking for
availability. Boot without "notsc" and install a i386 compiled glibc
to solve the problem.


If unsure, say N.

Salut,

Jordi.

Jordi Salvat i Alabart wrote:
Hi.

While trying to test JMeter for measurement accuracy, I've discovered the principle for time-travel. Or maybe it's my Apache web server, which is capable of responding to requests before it receives them... I think I'll request a patent for that and make my first million...

Seriously: I'm seeing negative times in my samples.

So, I've created the attached bit of code, which shows that System.currentTimeMillis() is not reliable. I'm using Linux with a 2.4.18 kernel and libc6 2.3.1-5. The problem occurs with the following JDKs:

java version "1.3.1"
Java(TM) 2 Runtime Environment, Standard Edition (build Blackdown-1.3.1-02b-FCS)Java HotSpot(TM) Client VM (build Blackdown-1.3.1_02b-FCS, mixed mode)

java version "1.4.1_01"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.1_01-b01)
Java HotSpot(TM) Client VM (build 1.4.1_01-b01, mixed mode)

Can someone please try this on a different O.S., to see if it's my system or the JDK?

Thanks,

Jordi.




--
To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>



--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to