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

Reply via email to