Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 02 Jun 2008 15:55:48 -0400
From:      Gary Stanley <gary@velocity-servers.net>
To:        Bruce Evans <brde@optusnet.com.au>
Cc:        freebsd-performance@FreeBSD.org
Subject:   Re: Micro-benchmark for various time syscalls...
Message-ID:  <20080602195552.ADC778FC1F@mx1.freebsd.org>
In-Reply-To: <20080602182214.I2764@delplex.bde.org>
References:  <2B465A44-2578-4675-AA17-EBE17A072017@chittenden.org> <20080602182214.I2764@delplex.bde.org>

next in thread | previous in thread | raw e-mail | index | archive | help
At 06:19 AM 6/2/2008, Bruce Evans wrote:

>These are very slow.  Are they on a 486? :-)  I get about 262 ns for
>CLOCK_REALTIME using the TSC timecounter on all ~2GHz UP systems.
>The syscall overhead is about 200 nsec (170 nsec for a simpler syscall
>and maybe 30 nsec extra for copyin/out for clock_gettime()) and reading
>the TSC timecounter adds another 60 nsec, including a whole 6 nsec for
>the hardware part of the read (perhaps more like 30 nsec than 60 for the
>whoe read).  The TSC doesn't work on all machines (never for SMP), but
>this will hopefully change.  (Phenom is supposed to have TSCs that are
>coherent across CPUs, and rdtsc has slowed down from 12 cycles to 40+
>to implement this :-(.  Core2 already has a 40+ cycles rdtsc, but AFAIK
>it doesn't have coherent TSCs.)  Other timecounters are much slower than
>the TSC, but I haven't seen one take 8000 nsec since 486 days.

Phenom's don't have TSCs that are coherent, as least on a few machines here:

4 CPUs, running 4 parallel test-tasks.
checking for time-warps via:
- read time stamp counter (RDTSC) instruction (cycle resolution)
- gettimeofday (TOD) syscall (usec resolution)
- clock_gettime(CLOCK_MONOTONIC) syscall (nsec resolution)

new TSC-warp maximum: -4294919263 cycles, 00000000ffffe11b -> 0000000000009cbc
new TSC-warp maximum: -4294919300 cycles, 00000000ffff74e4 -> 0000000000003060
  | TSC: 2.24us, fail:3 | TOD: 2.24us, fail:0 | CLK: 2.24us, fail:0 |

The code to test the TSC to check for warping:

http://leaf.dragonflybsd.org/~gary/tests/time-warp-test.c

However, it seems that Core2's don't have any warping of the TSC. I 
tested that code on a core2quad for 8 hours with no TSC failures.






Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20080602195552.ADC778FC1F>