Re: AMD X2 unsynced TSC fix?

Luca Tettamanti
2006-10-28T00:00:14Z

On 10/28/06, thockin@hockin.org <thockin@hockin.org> 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