tickadj.htm   [plain text]


<HTML>
<HEAD>
   <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
   <META NAME="GENERATOR" CONTENT="Mozilla/4.01 [en] (Win95; I) [Netscape]">
   <TITLE>tickadj - set time-related kernel variables
</TITLE>
</HEAD>
<BODY>

<H3>
<TT>tickadj</TT> - set time-related kernel variables</H3>

<HR>
<H4>
Synopsis</H4>
<TT>tickadj [ -Aqs ] [ -a <I>tickadj</I> ] [ -t <I>tick</I> ]</TT>
<H4>
Description</H4>
The <TT>tickadj</TT> program reads, and optionally modifies, several timekeeping-related
variables in the running kernel, via <TT>/dev/kmem</TT>. The particular
variables it is concerned with are <TT>tick</TT>, which is the number of
microseconds added to the system time during a clock interrupt, <TT>tickadj</TT>,
which sets the slew rate and resolution used by the <TT>adjtime</TT> system
call, and <TT>dosynctodr</TT>, 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.

<P>By default, with no arguments, <TT>tickadj</TT> 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 <TT>tickadj</TT> variable if the
intent is to run the <TT>ntpd</TT> Network Time Protocol (NTP) daemon,
and prints this as well. Since the operation of <TT>tickadj</TT> when reading
the kernel mimics the operation of similar parts of the <TT>ntpd</TT> program
fairly closely, this can be useful when debugging problems with <TT>ntpd</TT>.

<P>Note that <TT>tickadj</TT> should be run with some caution when being
used for the first time on different types of machines. The operations
which <TT>tickadj</TT> tries to perform are not guaranteed to work on all
Unix machines and may in rare cases cause the kernel to crash.
<H4>
Command Line Options</H4>

<DL>
<DT>
<TT>-a <I>tickadj</I></TT></DT>

<DD>
Set the kernel variable <TT>tickadj</TT> to the value <I><TT>tickadj</TT></I>
specified.</DD>

<DT>
<TT>-A</TT></DT>

<DD>
Set the kernel variable <TT>tickadj</TT> to an internally computed "optimal"
value.</DD>

<DT>
<TT>-t <I>tick</I></TT></DT>

<DD>
Set the kernel variable <TT>tick</TT> to the value <I><TT>tick</TT></I>
specified.</DD>

<DT>
<TT>-s</TT></DT>

<DD>
Set the kernel variable <TT>dosynctodr</TT> to zero, which disables the
hardware time-of-year clock, a prerequisite for running the <TT>ntpd</TT>
daemon under SunOS4.</DD>

<DT>
<TT>-q</TT></DT>

<DD>
Normally, <TT>tickadj</TT> is quite verbose about what it is doing. The
<TT>-q</TT> flag tells it to shut up about everything except errors.</DD>
</DL>

<H4>
Files</H4>

<PRE>
/vmunix

/unix

/dev/kmem</PRE>

<H4>
Bugs</H4>
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 <TT>adjtime</TT> 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 <TT>tickadj</TT> program went away.&nbsp;
<HR>
<ADDRESS>
David L. Mills (mills@udel.edu)</ADDRESS>

</BODY>
</HTML>