doc: improve and add more questions to FAQ
This commit is contained in:
parent
2ed88c31c7
commit
e2e07af8a4
1 changed files with 115 additions and 2 deletions
117
doc/faq.adoc
117
doc/faq.adoc
|
@ -475,6 +475,64 @@ identically configured leap-smearing servers. Note that some clients can get
|
||||||
leap seconds from other sources (e.g. with the `leapsectz` directive in
|
leap seconds from other sources (e.g. with the `leapsectz` directive in
|
||||||
`chrony`) and they will not work correctly with a leap smearing server.
|
`chrony`) and they will not work correctly with a leap smearing server.
|
||||||
|
|
||||||
|
=== How should `chronyd` be configuration with `gpsd`?
|
||||||
|
|
||||||
|
A GPS or other GNSS receiver can be used as a reference clock with `gpsd`. It
|
||||||
|
can work as one or two separate time sources for each connected receiver. The
|
||||||
|
first time source is based on timestamping of messages sent by the receiver.
|
||||||
|
Typically, it is accurate to milliseconds. The other source is much more
|
||||||
|
accurate. It is timestamping a pulse-per-second (PPS) signal, usually connected
|
||||||
|
to a serial port (e.g. DCD pin) or GPIO pin.
|
||||||
|
|
||||||
|
If the PPS signal is connected to the serial port which is receiving messages
|
||||||
|
from the GPS/GNSS receiver, `gpsd` should detect and use it automatically. If
|
||||||
|
it is connected to a GPIO pin, or another serial port, the PPS device needs to
|
||||||
|
be specified on the command line as an additional data source. On Linux, the
|
||||||
|
`ldattach` utility can be used to create a PPS device for a serial device.
|
||||||
|
|
||||||
|
The message-based time source provided by `gpsd` is specified as a `SHM 0`
|
||||||
|
refclock, or other even number if `gpsd` is configured with multiple receivers.
|
||||||
|
|
||||||
|
The PPS-based time source is specified as a `SHM 1` refclock (or other odd
|
||||||
|
number), or `SOCK /var/run/chrony.DEV.sock` where `DEV` is the name of the
|
||||||
|
serial device (e.g. ttyS0).
|
||||||
|
|
||||||
|
With `chronyd` and `gpsd` both supporting PPS, and `gpsd` providing two
|
||||||
|
different refclocks for PPS, there are three different recommended
|
||||||
|
configurations:
|
||||||
|
|
||||||
|
----
|
||||||
|
# First option
|
||||||
|
refclock SOCK /var/run/chrony.ttyS0.sock refid GPS
|
||||||
|
|
||||||
|
# Second option
|
||||||
|
refclock SHM 1 refid GPS
|
||||||
|
|
||||||
|
# Third option
|
||||||
|
refclock PPS /dev/pps0 lock NMEA refid GPS
|
||||||
|
refclock SHM 0 offset 0.5 delay 0.1 refid NMEA noselect
|
||||||
|
----
|
||||||
|
|
||||||
|
Each option has some advantages:
|
||||||
|
|
||||||
|
* `SOCK` does not use polling (i.e. it can get samples earlier than `SHM`),
|
||||||
|
but it requires `gpsd` to be started after `chronyd` in order to connect to
|
||||||
|
its socket
|
||||||
|
* `SOCK` and `SHM 1` can be more accurate than `PPS` if `gpsd` corrects for the
|
||||||
|
sawtooth error provided by the receiver in serial data
|
||||||
|
* `PPS` can be used with higher PPS rates (specified by the `rate` option),
|
||||||
|
but it requires a second refclock or another time source to pair pulses
|
||||||
|
with seconds, and the `SHM 0` offset needs to be specified
|
||||||
|
<<using-pps-refclock,correctly>> to compensate for the message delay, while
|
||||||
|
`gpsd` can apply HW-specific information
|
||||||
|
|
||||||
|
If the PPS signal is not available, or cannot be used for some reason, the only
|
||||||
|
option is the message-based timing
|
||||||
|
|
||||||
|
----
|
||||||
|
refclock SHM 0 offset 0.5 delay 0.1 refid GPS
|
||||||
|
----
|
||||||
|
|
||||||
=== Does `chrony` support PTP?
|
=== Does `chrony` support PTP?
|
||||||
|
|
||||||
No, the Precision Time Protocol (PTP) is not supported as a protocol for
|
No, the Precision Time Protocol (PTP) is not supported as a protocol for
|
||||||
|
@ -498,6 +556,27 @@ transport for NTP messages (NTP over PTP) to enable hardware timestamping on
|
||||||
hardware which can timestamp PTP packets only. It can be enabled by the
|
hardware which can timestamp PTP packets only. It can be enabled by the
|
||||||
`ptpport` directive.
|
`ptpport` directive.
|
||||||
|
|
||||||
|
=== Why are client log records dropped before reaching `clientloglimit`?
|
||||||
|
|
||||||
|
The number of dropped client log records reported by the `serverstats` command
|
||||||
|
can be increasing before the number of clients reported by the `clients` command
|
||||||
|
reaches the maximum value corresponding to the memory limit set by the
|
||||||
|
`clientloglimit` directive.
|
||||||
|
|
||||||
|
This is due to the design of the data structure keeping the client records. It
|
||||||
|
is a hash table which can store only up to 16 colliding addresses per slot. If
|
||||||
|
a slot has more collisions and the table already has the maximum size, the
|
||||||
|
oldest record will be dropped and replaced by the new client.
|
||||||
|
|
||||||
|
Note that the size of the table is always a power of two and it can only grow.
|
||||||
|
The limit set by the `clientloglimit` directive takes into account that two
|
||||||
|
copies of the table exist when it is being resized. This means the actual
|
||||||
|
memory usage reported by `top` and other utilities can be significantly smaller
|
||||||
|
than the limit even when the maximum number of records is used.
|
||||||
|
|
||||||
|
The absolute maximum number of client records kept at the same time is
|
||||||
|
16777216.
|
||||||
|
|
||||||
=== What happened to the `commandkey` and `generatecommandkey` directives?
|
=== What happened to the `commandkey` and `generatecommandkey` directives?
|
||||||
|
|
||||||
They were removed in version 2.2. Authentication is no longer supported in the
|
They were removed in version 2.2. Authentication is no longer supported in the
|
||||||
|
@ -692,12 +771,14 @@ frequently, you can effectively disable the test by setting the
|
||||||
`maxdelaydevratio` option to a very large value (e.g. 1000000), or speed up the
|
`maxdelaydevratio` option to a very large value (e.g. 1000000), or speed up the
|
||||||
recovery by increasing the clock error rate with the `maxclockerror` directive.
|
recovery by increasing the clock error rate with the `maxclockerror` directive.
|
||||||
|
|
||||||
|
[[using-pps-refclock]]
|
||||||
=== Using a PPS reference clock?
|
=== Using a PPS reference clock?
|
||||||
|
|
||||||
A pulse-per-second (PPS) reference clock requires a non-PPS time source to
|
A pulse-per-second (PPS) reference clock requires a non-PPS time source to
|
||||||
determine which second of UTC corresponds to each pulse. If it is another
|
determine which second of UTC corresponds to each pulse. If it is another
|
||||||
reference clock specified with the `lock` option in the `refclock` directive,
|
reference clock specified with the `lock` option in the `refclock` directive,
|
||||||
the offset between the two reference clocks must be smaller than 0.2 seconds in
|
the offset between the two reference clocks must be smaller than 0.4 seconds
|
||||||
|
(0.2 seconds with `chrony` versions before 4.1) in
|
||||||
order for the PPS reference clock to work. With NMEA reference clocks it is
|
order for the PPS reference clock to work. With NMEA reference clocks it is
|
||||||
common to have a larger offset. It needs to be corrected with the `offset`
|
common to have a larger offset. It needs to be corrected with the `offset`
|
||||||
option.
|
option.
|
||||||
|
@ -716,7 +797,7 @@ foo.example.net 7 3 200 -2.991 16.141 -107us 492us
|
||||||
|
|
||||||
the offset of the NMEA source would need to be increased by about 0.504
|
the offset of the NMEA source would need to be increased by about 0.504
|
||||||
seconds. It does not have to be very accurate. As long as the offset of the
|
seconds. It does not have to be very accurate. As long as the offset of the
|
||||||
NMEA reference clock stays below 0.2 seconds, the PPS reference clock should be
|
NMEA reference clock stays below the limit, the PPS reference clock should be
|
||||||
able to determine the seconds corresponding to the pulses and allow the samples
|
able to determine the seconds corresponding to the pulses and allow the samples
|
||||||
to be used for synchronisation.
|
to be used for synchronisation.
|
||||||
|
|
||||||
|
@ -772,6 +853,10 @@ in parentheses) on the `Reference ID` line.
|
||||||
Only by the source code. See _cmdmon.c_ (`chronyd` side) and _client.c_
|
Only by the source code. See _cmdmon.c_ (`chronyd` side) and _client.c_
|
||||||
(`chronyc` side).
|
(`chronyc` side).
|
||||||
|
|
||||||
|
Note that this protocol is not compatible with the mode 6 or mode 7 protocol
|
||||||
|
supported by `ntpd`, i.e. the `ntpq` or `ntpdc` utility cannot be used to
|
||||||
|
monitor `chronyd`, and `chronyc` cannot be used to monitor `ntpd`.
|
||||||
|
|
||||||
== Real-time clock issues
|
== Real-time clock issues
|
||||||
|
|
||||||
=== What is the real-time clock (RTC)?
|
=== What is the real-time clock (RTC)?
|
||||||
|
@ -898,6 +983,34 @@ timestamps (e.g. daemon timestamp vs kernel timestamp) for serving time and
|
||||||
synchronisation of its own clock, which will cause the other computer to
|
synchronisation of its own clock, which will cause the other computer to
|
||||||
measure a significant offset.
|
measure a significant offset.
|
||||||
|
|
||||||
|
== Operation
|
||||||
|
|
||||||
|
=== What clocks does `chronyd` use?
|
||||||
|
|
||||||
|
There are several different clocks used by `chronyd`:
|
||||||
|
|
||||||
|
* *System clock:* software clock maintained by the kernel. It is the main clock
|
||||||
|
used by applications running on the computer. It is synchronised by `chronyd`
|
||||||
|
to its NTP clock, unless started with the *-x* option.
|
||||||
|
* *NTP clock:* software clock (virtual) based on the system clock and internal
|
||||||
|
to `chronyd`. It keeps the best estimate of the true time according to the
|
||||||
|
configured time sources, which is served to NTP clients unless time smoothing
|
||||||
|
is enabled by the *smoothtime* directive. The *System time* value in the
|
||||||
|
`tracking` report is the current offset between the system and NTP clock.
|
||||||
|
* *Real-time clock (RTC):* hardware clock keeping time even when the
|
||||||
|
computer is turned off. It is used by the kernel to initialise the system
|
||||||
|
clock on boot and also by `chronyd` to compensate for its measured drift if
|
||||||
|
configured with the `rtcfile` directive and started with the `-s` option.
|
||||||
|
The clock can be kept accurate only by stepping enabled by the `rtcsync` or
|
||||||
|
`rtcautotrim` directive.
|
||||||
|
* *Reference clock:* hardware clock used as a time source. It is specified by
|
||||||
|
the `refclock` directive.
|
||||||
|
* *NIC clock (also known as PTP hardware clock):* hardware clock timestamping
|
||||||
|
packets received and transmitted by a network device specified by the
|
||||||
|
*hwtimestamp* directive. The clock is expected to be running free. It is not
|
||||||
|
synchronised by `chronyd`. Its offset is tracked relative to the NTP clock in
|
||||||
|
order to convert the hardware timestamps.
|
||||||
|
|
||||||
== Operating systems
|
== Operating systems
|
||||||
|
|
||||||
=== Does `chrony` support Windows?
|
=== Does `chrony` support Windows?
|
||||||
|
|
Loading…
Reference in a new issue