The tickadj program reads, and optionally modifies, several timekeeping-related
variables in the running kernel, via /dev/kmem. The particular
variables it is concerned with are tick, which is the number of
microseconds added to the system time during a clock interrupt, tickadj,
which sets the slew rate and resolution used by the adjtime system
call, and dosynctodr, which indicates to the kernels on some machines
whether they should internally adjust the system clock to keep it in line
with time-of-day clock or not.
By default, with no arguments, tickadj reads the variables
of interest in the kernel and displays them. At the same time, it determines
an "optimal" value for the value of the tickadj variable if the
intent is to run the ntpd Network Time Protocol (NTP) daemon,
and prints this as well. Since the operation of tickadj when reading
the kernel mimics the operation of similar parts of the ntpd program
fairly closely, this can be useful when debugging problems with ntpd.
Note that tickadj should be run with some caution when being
used for the first time on different types of machines. The operations
which tickadj tries to perform are not guaranteed to work on all
Unix machines and may in rare cases cause the kernel to crash.
Command Line Options
Set the kernel variable tickadj to the value tickadj
Set the kernel variable tickadj to an internally computed "optimal"
Set the kernel variable tick to the value tick
Set the kernel variable dosynctodr to zero, which disables the
hardware time-of-year clock, a prerequisite for running the ntpd
daemon under SunOS4.
Normally, tickadj is quite verbose about what it is doing. The
-q flag tells it to shut up about everything except errors.
Fiddling with kernel variables at run time as a part of ordinary operations
is a hideous practice which is only necessary to make up for deficiencies
in the implementation of adjtime in many kernels and/or brokenness
of the system clock in some vendors' kernels. It would be much better if
the kernels were fixed and the tickadj program went away.
David L. Mills (firstname.lastname@example.org)