![如何判断当前系统时间的可靠性[正确性]?](https://linux22.com/image/219765/%E5%A6%82%E4%BD%95%E5%88%A4%E6%96%AD%E5%BD%93%E5%89%8D%E7%B3%BB%E7%BB%9F%E6%97%B6%E9%97%B4%E7%9A%84%E5%8F%AF%E9%9D%A0%E6%80%A7%5B%E6%AD%A3%E7%A1%AE%E6%80%A7%5D%EF%BC%9F.png)
我正在开发一个项目,该项目将在很长一段时间(数年)内以相当高分辨率(每秒 50 个样本)获取大量带时间戳的数据。
该解决方案包括各种故障转移机制。在该项目的生命周期内,可以合理地假设一些数据记录器需要更换。一旦其他人已经声明了数据采集,IE 中的一些将上线。
考虑到数据的性质,如果某些数据记录的时间戳不准确,甚至是几秒钟的误差,那将是非常糟糕的。对于此解决方案来说,NTP 应该足够稳定,即使网络丢失几个小时,内部时钟的漂移也应该太小,不会导致严重问题。实际上,出于深奥的原因,我们不太关心互联网中断期间的数据。
是什么让我烦恼数据记录器重新启动时会发生什么。或者第一次启动。我希望设备在融入故障转移解决方案之前使用 NTP 可靠地稳定其系统时间。
如何确定系统时间相对于 chrony 或 ntpd 的当前可靠性。也就是说,我怎样才能从其中获得价值,告诉我:
- 他们最近一次同步是多久前的事
- 如果可能,上次更新的置信度值*
我所说的置信度是指 NTP 数据包的总往返时间……这当然是 NTP 规范的一部分。
答案1
我不知道您是否阅读过 NTPv3 的功能,或者chronyd
的tracking
输出的含义:
chronyc> tracking
Reference ID : AC14100E (p22.ntp-pool.domain.org)
Stratum : 3
Ref time (UTC) : Thu Nov 23 14:10:49 2023
System time : 0.000021786 seconds fast of NTP time
Last offset : +0.000005573 seconds
RMS offset : 0.000017535 seconds
Frequency : 13.186 ppm fast
Residual freq : +0.002 ppm
Skew : 0.018 ppm
Root delay : 0.000255787 seconds
Root dispersion : 0.001269149 seconds
Update interval : 64.2 seconds
Leap status : Normal
或者ntpq
的rl
输出:
associd=0 status=0618 leap_none, sync_ntp, 1 event, no_sys_peer,
version="ntpd [email protected] Wed Jun 14 05:48:57 UTC 2023 (1)",
processor="x86_64", system="Linux/4.12.14-122.179-default", leap=00,
stratum=2, precision=-24, rootdelay=0.157, rootdisp=5.951,
refid=172.20.2.25,
reftime=e909db6b.de677ef7 Thu, Nov 23 2023 15:08:43.868,
clock=e909dc91.e033d3a0 Thu, Nov 23 2023 15:13:37.875, peer=12886, tc=9,
mintc=3, offset=+0.007816, frequency=+11.587, sys_jitter=0.222731,
clk_jitter=0.022, clk_wander=0.004
sysinfo
您也可以尝试kerninfo
在最新版本中:
ntpq> kerninfo
associd=0 status=0618 leap_none, sync_ntp, 1 event, no_sys_peer,
pll offset: 0.005928
pll frequency: 11.5873
maximum error: 284.634
estimated error: 0.022
kernel status: pll nano
pll time constant: 9
precision: 1e-06
frequency tolerance: 500
pps frequency: 0
pps stability: 0
pps jitter: 0
calibration interval 0
calibration cycles: 0
jitter exceeded: 0
stability exceeded: 0
calibration errors: 0
ntpq> sysinfo
associd=0 status=0618 leap_none, sync_ntp, 1 event, no_sys_peer,
system peer: 172.20.2.25:123
system peer mode: client
leap indicator: 00
stratum: 2
log2 precision: -24
root delay: 0.135
root dispersion: 1.135
reference ID: 172.20.2.25
reference time: e909dd93.de684491 Thu, Nov 23 2023 15:17:55.868
system jitter: 0.251147
clock jitter: 0.027
clock wander: 0.004
broadcast delay: -50.000
symm. auth. delay: 0.018
您可能想阅读 NTP 常见问题解答监控。