tickadj - set time-related kernel variables
Synopsis
tickadj [ -Aqs ] [ -a tickadj ] [ -t tick ]
Description
The tickadj program reads, and optionally modifies,
several timekeeping-related variables in the running kernel in some
machines, 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.
Note that this program does NOT work in some kernels, in
particular Solaris 2.6 or later. See the report.
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
- -a tickadj
- Set the kernel variable tickadj to the value
tickadjspecified.
- -A
- Set the kernel variable tickadj to an internally
computed "optimal" value.
- -t tick
- Set the kernel variable tick to the value
tick specified.
- -s
- Set the kernel variable dosynctodr to zero, which
disables the hardware time-of-year clock, a prerequisite for
running the ntpd daemon under SunOS4.
- -q
- Normally, tickadj is quite verbose about what it is
doing. The -q flag tells it to shut up about everything
except errors.
Files
/vmunix
/unix
/dev/kmem
Bugs
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
<mills@udel.edu>