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