FFCLOCK —
Feed-forward system clock
options FFCLOCK
The
ntpd(8) 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.
Feed-forward clock synchronisation algorithms implemented by an appropriate
daemon, in concert with the
FFCLOCK kernel
support, have been shown to provide highly robust and accurate clock
synchronisation. In addition to time keeping, the
FFCLOCK 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.
The
FFCLOCK kernel support provides feed-forward
timestamping functions within the kernel and system calls to support
feed-forward synchronisation daemons (see
ffclock(2)).
The following kernel configuration options are related to
FFCLOCK:
FFCLOCK
- Enable feed-forward clock support.
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
kern.sysclock
sysctl(8) tree which provides the following
variables:
- kern.sysclock.active
- Name of the current active system clock which is serving
time. Set to one of the names in
kern.sysclock.available in order to
change the default active system clock.
- kern.sysclock.available
- Lists the names of available system clocks
(read-only).
Feed-forward system clock configuration is possible via the
kern.sysclock.ffclock sysctl tree which
provides the following variables:
- kern.sysclock.ffclock.version
- Feed-forward clock kernel version (read-only).
- kern.sysclock.ffclock.ffcounter_bypass
- Use reliable hardware timecounter as the feed-forward
counter. Will eventually be useful for virtualised environment like
xen(4), but currently does nothing.
clock_gettime(2),
ffclock(2),
bpf(4),
timecounters(4),
sysctl(8)
Feed-forward clock support first appeared in
FreeBSD
10.0.
The feed-forward clock support was written by
Julien
Ridoux
<
[email protected]>
in collaboration with
Darryl Veitch
<
[email protected]>
at the University of Melbourne under sponsorship from the FreeBSD Foundation.
This manual page was written by
Julien Ridoux
<
[email protected]>
and
Lawrence Stewart
<
[email protected]>.