aboutsummaryrefslogtreecommitdiff
path: root/contrib/ntp/html/tickadj.htm
blob: 3d9745e1cdaa7f7ee97d97a52edebba264c35357 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html>
<head>
<meta name="generator" content="HTML Tidy, see www.w3.org">
<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 in some
machines, 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>Note that this program does NOT work in some kernels, in
particular Solaris 2.6 or later. See the <a href=
"solaris-dosynctodr.html">report</a>.</p>

<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>

<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.</p>

<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>
<a href="index.htm"><img align="left" src="pic/home.gif" alt=
"gif"></a>
<address><a href="mailto:mills@udel.edu">David L. Mills
&lt;mills@udel.edu&gt;</a></address>
</body>
</html>