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
106
107
108
109
110
111
112
113
|
<table class="head">
<tr>
<td class="head-ltitle">FFCLOCK(4)</td>
<td class="head-vol">Device Drivers Manual</td>
<td class="head-rtitle">FFCLOCK(4)</td>
</tr>
</table>
<div class="manual-text">
<section class="Sh">
<h1 class="Sh" id="NAME"><a class="permalink" href="#NAME">NAME</a></h1>
<p class="Pp"><code class="Nm">FFCLOCK</code> —
<span class="Nd">Feed-forward system clock</span></p>
</section>
<section class="Sh">
<h1 class="Sh" id="SYNOPSIS"><a class="permalink" href="#SYNOPSIS">SYNOPSIS</a></h1>
<p class="Pp"><code class="Cd">options FFCLOCK</code></p>
</section>
<section class="Sh">
<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
<p class="Pp">The <a class="Xr">ntpd(8)</a> daemon has been the dominant
solution for system clock synchronisation for many years, which has in turn
influenced the design of the system clock. The ntpd daemon implements a
feedback control algorithm which has been demonstrated to perform poorly in
common use cases.</p>
<p class="Pp">Feed-forward clock synchronisation algorithms implemented by an
appropriate daemon, in concert with the <code class="Nm">FFCLOCK</code>
kernel support, have been shown to provide highly robust and accurate clock
synchronisation. In addition to time keeping, the
<code class="Nm">FFCLOCK</code> kernel mechanism provides new timestamping
capabilities and the ability to use specialised clocks. Feed-forward
synchronisation is also very well suited for virtualised environments,
reducing the overhead of timekeeping in guests and ensuring continued smooth
operation of the system clock during guest live migration.</p>
<p class="Pp">The <code class="Nm">FFCLOCK</code> kernel support provides
feed-forward timestamping functions within the kernel and system calls to
support feed-forward synchronisation daemons (see
<a class="Xr">ffclock(2)</a>).</p>
<section class="Ss">
<h2 class="Ss" id="Kernel_Options"><a class="permalink" href="#Kernel_Options">Kernel
Options</a></h2>
<p class="Pp">The following kernel configuration options are related to
<code class="Nm">FFCLOCK</code>:</p>
<p class="Pp"></p>
<dl class="Bl-tag Bl-compact">
<dt id="FFCLOCK"><a class="permalink" href="#FFCLOCK"><code class="Dv">FFCLOCK</code></a></dt>
<dd>Enable feed-forward clock support.</dd>
</dl>
</section>
<section class="Ss">
<h2 class="Ss" id="Configuration"><a class="permalink" href="#Configuration">Configuration</a></h2>
<p class="Pp">When feed-forward clock support is compiled into the kernel,
multiple system clocks become available to choose from. System clock
configuration is possible via the <var class="Va">kern.sysclock</var>
<a class="Xr">sysctl(8)</a> tree which provides the following variables:</p>
<div class="Bd-indent">
<dl class="Bl-tag">
<dt id="kern.sysclock.active"><var class="Va">kern.sysclock.active</var></dt>
<dd>Name of the current active system clock which is serving time. Set to one
of the names in <var class="Va">kern.sysclock.available</var> in order to
change the default active system clock.</dd>
<dt id="kern.sysclock.available"><var class="Va">kern.sysclock.available</var></dt>
<dd>Lists the names of available system clocks (read-only).</dd>
</dl>
</div>
<p class="Pp">Feed-forward system clock configuration is possible via the
<var class="Va">kern.sysclock.ffclock</var> sysctl tree which provides the
following variables:</p>
<div class="Bd-indent">
<dl class="Bl-tag">
<dt id="kern.sysclock.ffclock.version"><var class="Va">kern.sysclock.ffclock.version</var></dt>
<dd>Feed-forward clock kernel version (read-only).</dd>
<dt id="kern.sysclock.ffclock.ffcounter_bypass"><var class="Va">kern.sysclock.ffclock.ffcounter_bypass</var></dt>
<dd>Use reliable hardware timecounter as the feed-forward counter. Will
eventually be useful for virtualised environment like
<a class="Xr">xen(4)</a>, but currently does nothing.</dd>
</dl>
</div>
</section>
</section>
<section class="Sh">
<h1 class="Sh" id="SEE_ALSO"><a class="permalink" href="#SEE_ALSO">SEE
ALSO</a></h1>
<p class="Pp"><a class="Xr">clock_gettime(2)</a>, <a class="Xr">ffclock(2)</a>,
<a class="Xr">bpf(4)</a>, <a class="Xr">timecounters(4)</a>,
<a class="Xr">sysctl(8)</a></p>
</section>
<section class="Sh">
<h1 class="Sh" id="HISTORY"><a class="permalink" href="#HISTORY">HISTORY</a></h1>
<p class="Pp">Feed-forward clock support first appeared in
<span class="Ux">FreeBSD 10.0</span>.</p>
</section>
<section class="Sh">
<h1 class="Sh" id="AUTHORS"><a class="permalink" href="#AUTHORS">AUTHORS</a></h1>
<p class="Pp">The feed-forward clock support was written by
<span class="An">Julien Ridoux</span>
<<a class="Mt" href="mailto:jridoux@unimelb.edu.au">jridoux@unimelb.edu.au</a>>
in collaboration with <span class="An">Darryl Veitch</span>
<<a class="Mt" href="mailto:dveitch@unimelb.edu.au">dveitch@unimelb.edu.au</a>>
at the University of Melbourne under sponsorship from the FreeBSD
Foundation.</p>
<p class="Pp">This manual page was written by <span class="An">Julien
Ridoux</span>
<<a class="Mt" href="mailto:jridoux@unimelb.edu.au">jridoux@unimelb.edu.au</a>>
and <span class="An">Lawrence Stewart</span>
<<a class="Mt" href="mailto:lstewart@FreeBSD.org">lstewart@FreeBSD.org</a>>.</p>
</section>
</div>
<table class="foot">
<tr>
<td class="foot-date">December 1, 2011</td>
<td class="foot-os">FreeBSD 15.0</td>
</tr>
</table>
|