tickadj - set time-related kernel variables
Last update: May 4, 2022 17:05 UTC (dbea9b7d4)
Table of Contents
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 for 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 tickadj
specified.
-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.