Miroslav,
The fastest machine I can find on campus has precision -22, or about 230
ns. Then, I peeked at time.nist.gov, which is actually three machines
behind a load leveler. It reports to be an i386 running FreeBSD 61. Are
you ready for this? It reports precision -29 or 1.9 ns! I'm rather
suspiciousabout that number. What processor and operating system are
you using. What is the precision reported by ntpd?
For historic perspective, the time to read the clock on a Sun SPARC IPC
in the late 1980s was 42 microseconds.
Thanks for the jitter.c update.
Dave
Miroslav Lichvar wrote:
On Tue, Sep 14, 2010 at 07:17:04PM +0000, David L. Mills wrote:
Miroslav,
Better recalibrate your slide rule. On a 2.8 GHz dual-core Pentium
running OpenSolaris 10, the measured precision is -21, which works
out to 470 ns.
That probably just means the system on your machine is not using the
rdtsc instruction when reading time.
You claim ten times faster. What snake oil are you
using for your processor? To check, try running the jitter.c program
in the distribution.
Average 0.000000088
First rank
0 0.000000082
1 0.000000082
2 0.000000082
3 0.000000082
4 0.000000082
5 0.000000082
6 0.000000082
7 0.000000082
8 0.000000082
9 0.000000082
Last rank
799990 0.000013065
799991 0.000013324
799992 0.000013477
799993 0.000013545
799994 0.000013782
799995 0.000014010
799996 0.000019316
799997 0.000023405
799998 0.000034991
799999 0.000111950
But I had to apply the following patch, because there was time stored
as seconds since 1900 in double format, which for current time gives
only about 119ns resolution and so the differences ended up as zero.
--- jitter.c.orig 2008-07-16 23:20:59.000000000 +0200
+++ jitter.c 2010-09-15 10:10:06.000000000 +0200
@@ -15,6 +15,7 @@
#include <sys/time.h>
#include <stdlib.h>
#include "jitter.h"
+#include <time.h>
#define NBUF 800002
#define FRAC 4294967296. /* a bbbbillion */
@@ -33,7 +34,7 @@
char *argv[]
)
{
- l_fp tr;
+ l_fp tr, first;
int i, j;
double dtemp, gtod[NBUF];
@@ -43,11 +44,13 @@
for (i = 0; i < NBUF; i ++)
gtod[i] = 0;
+ get_systime(&first);
/*
* Construct gtod array
*/
for (i = 0; i < NBUF; i ++) {
get_systime(&tr);
+ tr.l_i -= first.l_i;
LFPTOD(&tr, gtod[i]);
}
_______________________________________________
questions mailing list
questions@lists.ntp.org
http://lists.ntp.org/listinfo/questions