Annotation of embedaddon/ntp/html/hints/sgi, revision 1.1.1.1
1.1 misho 1: adjtime, tick and tickadj:
2: --------------------------
3:
4: The SGI value for HZ is 100 under Irix 4, with the system clock running
5: in nominal mode (ftimer off), so the value for tick is 10000 usec.
6: Tickadj is a bit more tricky because of the behaviour of adjtime(),
7: which seems to try to perform the correction over 100-200 seconds, with
8: a rate limit of 0.04 secs/sec for large corrections. Corrections of
9: less than 0.017 seconds generally complete in less than a second,
10: however.
11:
12: Some measured rates are as follows:
13:
14: Delta Rate (sec/sec)
15:
16: > 1 0.04
17: 0.75 0.04
18: 0.6 0.004
19: 0.5 0.004
20: 0.4 0.0026
21: 0.3 0.0026
22: 0.2 0.0013
23: 0.1 0.0015
24: 0.05 0.0015
25: 0.02 0.0003
26: 0.01 0.015
27: Strange. Anyway, since adjtime will complete adjustments of less than
28: 17msec in less than a second, whether the fast clock is on or off, I
29: have used a value of 150usec/tick for the tickadj value.
30:
31: Fast clock:
32: -----------
33:
34: I get smoother timekeeping if I turn on the fast clock, thereby making
35: the clock tick at 1kHz rather than 100Hz. With the fast clock off, I
36: see a sawtooth clock offset with an amplitude of 5msec. With it on,
37: the amplitude drops to 0.5msec (surprise!). This may be a consequence
38: of having a local reference clock which spits out the time at exactly
39: one-second intervals - I am probably seeing sampling aliasing between
40: that and the machine clock. This may all be irrelevant for machines
41: without a local reference clock. Fiddling with the fast clock doesn't
42: seem to compromise the above choices for tick and tickadj.
43:
44: I use the "ftimer" program to switch the fast clock on when the system
45: goes into multiuser mode, but you can set the "fastclock" flag in
46: /usr/sysgen/master.d/kernel to have it on by default. See ftimer(1).
47:
48: timetrim:
49: ---------
50:
51: Irix has a kernel variable called timetrim which adjusts the system
52: time increment, effectively trimming the clock frequency. Xntpd could
53: use this rather than adjtime() to do it's frequency trimming, but I
54: haven't the time to explore this. There is a utility program,
55: "timetrim", in the util directory which allows manipulation of the
56: timetrim value in both SGI and xntpd native units. You can fiddle with
57: default timetrim value in /usr/sysgen/master.d/kernel, but I think
58: that's ugly. I just use xntpd to figure out the right value for
59: timetrim for a particular CPU and then set it using "timetrim" when
60: going to multiuser mode.
61:
62: Serial I/O latency:
63: -------------------
64:
65: If you use a local clock on an RS-232 line, look into the kernel
66: configuration stuff with regard to improving the input latency (check
67: out /usr/sysgen/master.d/[sduart|cdsio]). I have a Kinemetrics OM-DC
68: hooked onto /dev/ttyd2 (the second CPU board RS-232 port) on an SGI
69: Crimson, and setting the duart_rsrv_duration flag to 0 improves things
70: a bit.
71:
72:
73: 12 Jan 93
74: Steve Clift, CSIRO Marine Labs, Hobart, Australia (clift@ml.csiro.au)
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>