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]>
