summaryrefslogtreecommitdiff
path: root/static/freebsd/man4/ffclock.4 3.html
blob: c3f3477da0edcefd253a8b5fd4b256fbd12b00a0 (plain)
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> &#x2014;
    <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>
    &lt;<a class="Mt" href="mailto:jridoux@unimelb.edu.au">jridoux@unimelb.edu.au</a>&gt;
    in collaboration with <span class="An">Darryl Veitch</span>
    &lt;<a class="Mt" href="mailto:dveitch@unimelb.edu.au">dveitch@unimelb.edu.au</a>&gt;
    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>
    &lt;<a class="Mt" href="mailto:jridoux@unimelb.edu.au">jridoux@unimelb.edu.au</a>&gt;
    and <span class="An">Lawrence Stewart</span>
    &lt;<a class="Mt" href="mailto:lstewart@FreeBSD.org">lstewart@FreeBSD.org</a>&gt;.</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>