Re: [PATCH 0/2] Make the TSC safe to be used by gettimeofday().

From: Suleiman Souhlal
Date: Mon Nov 13 2006 - 21:06:40 EST


Andi Kleen wrote:
On Tuesday 14 November 2006 02:06, Suleiman Souhlal wrote:

I've had a proof-of-concept for this since August, and finally got around to
somewhat cleaning it up.


Thanks.

I got a competing implementation for this unfortunately now from Vojtech & Jiri

Yours is simpler, but I'm not sure as complete. What are your assurances
against non monoticity for example?

I believe that the results returned will always be monotonic, as long as the frequency of the TSC does not change from under us (that is, without the kernel knowing). This is because we "synchronize" each CPU's vxtime with a global time source (HPET) every time we know the TSC rate changes.

It can certainly still be improved, namely by using vgetcpu() instead of CPUID
to find the cpu number (but I couldn't get it to work, when I tried).


What did not work?

I was not able to make vgettimeofday use vgetcpu(). It seemed like vgetcpu()
was not returning the same value as smp_processor_id() would, so the values I'd get with vgettimeofday() did not completely agree with the ones from gettimeofday(2). I didn't have the chance to investigate more.

Another possible improvement would be to use RDTSCP when available.
There's also a small race in do_gettimeofday(), vgettimeofday() and
vmonotonic_clock() but I've never seen it happen.


I did a vposix_getclock with monotonic clock support on my own already, was about to be merged with the vDSO. It still used global synchronized TSC though.

-- Suleiman

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