Re: AMD X2 unsynced TSC fix?

From: Luca Tettamanti
Date: Fri Oct 27 2006 - 20:04:32 EST


On 10/28/06, thockin@xxxxxxxxxx <thockin@xxxxxxxxxx> wrote:
On Fri, Oct 27, 2006 at 10:18:20PM +0200, Luca Tettamanti wrote:
> There's always a window where the TSCs are not in sync (and userspace may
> see a non-monotonic counter); furthermore when C'n'Q is active TSCs
> aren't updated at a fixed frequency, userspace cannot use TSC for timing
> anyway.

Wrong, too. We have a patch that will be coming SOON (trust me, I am
pushing hard for the author to publish it). With this patch applied you
should never see the TSC go backwards. Period. It should be monotonic
(to userspace, kernel rdtsc calls can still be wrong). CPUs should stay
very nearly in sync (again, to userspace). The overhead of this patch is
pretty minimal and costs nothing unless you actually read the TSC.

I know that's it's possible to resync the TSCs, but:

The catch is that, while it is monotonic, it is not guaranteed to be
perfectly linear. For many applications, this will be good enough. Time
will always move forward, and you won't be subject to the weird HZ
granularity gettimeofday that unsynced TSCs can show.

As you say you cannot use it to do timing unless you disable any power
management on the CPU. Otherwise you can count the elapsed ticks but
you cannot convert the number to anything meaningful.
You may be able to emulate rdtsc for userspace but then again the
whole point of using rdtsc is that it should be uber-fast... if rdtsc
is emulated then you can just use gettimeofday (which is also
optimized to be *very* fast). No?

Luca
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/