Return to sgi CVS log | Up to [ELWIX - Embedded LightWeight unIX -] / embedaddon / ntp / html / hints |
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)