最近因为一些机缘巧合,发现电脑时钟每天似乎总有误差。
于是进行测试,系统为 Linux ,关闭操作系统的时间同步( Systemd 的时间同步),写了一个几行的脚本追踪系统时间误差(ntpdate -q)。
测试两台电脑,24 小时不关机,一个是技嘉 x570 ,每天变慢 2 秒钟,一个是微星 z170 ,每天变快 0.5 秒钟。这两个主板也不是非常低端的主板了,测了下电池电压也正常。结果每天误差这么多?
这个是质量问题还是普遍现象?
想了解下,这种时钟误差,应该是纯粹的主板的锅吧?跟 cpu 、芯片组、操作系统应该无关吧?

正常

正常,需要和时间服务器同步,不然走着走着就不准了

每 10 分钟同步一次

你指望消费级主板的 RTC 能有多高精度...

这不太正常了

vonng.github.io/ddia/#/ch8?id=%e6%97%b6%e9%92%9f%e5%90%8c%e6%ad%a5%e4%b8%8e%e5%87%86%e7%a1%ae%e6%80%a7

假设一个 32.768KHz±20ppm 的晶振,那么它每天的累计误差最大为
20/1000000360024=1.728s

正常误差范围
要不换原子钟或 GPS 授时?

正常,手动同步即可

一看你就在 PS2/PS3 时代没玩过主机,那个时代普遍不联网,主机放时间长了都得自己调表。

正常

这问题好学术,涉及到计时误差问题,我跑~

消费级没那么准。。。

服务器大厂有在研发高精度时种,可以降低内部延迟。

服务器 RTC 一样用的 32.768k 的外部晶体,偏差和 pc 差不多

这个正常,所以现在什么设备都是联网 NTP 对时间,这个误差来自晶振。就是这个

另外补充一下,如果想提高晶振精度,可以选择 OCXO 或者 TCXO 晶振。

恒温晶体振荡器简称恒温晶振,英文简称为 OCXO ( Oven Controlled Crystal Oscillator ),是利用恒温槽使晶体振荡器中石英晶体谐振器的温度保持恒定,将由周围温度变化引起的振荡器输出频率变化量削减到最小的晶体振荡器。OCXO 是由恒温槽控制电路和振荡器电路构成的。通常人们是利用热敏电阻“电桥“构成的差动串联放大器,来实现温度控制。

温补晶振即温度补偿晶体振荡器( TCXO ),是通过附加的温度补偿电路使由周围温度变化产生的振荡频率变化量削减的一种石英晶体振荡器。温补晶振术语来自石英晶体振荡器的一种补偿方式已达到产品应用方面的精度要求。温补晶振定义是将压电石英晶体原有的物理特性(压电效应下频率随温度成三次曲线变化)通过外围电路逆向改变使得石英晶体原有频率随温度的变化尽可能的变小的一种补偿方式所做的石英晶体振荡器。

之前看到 LTT 搞到手民用版的板载原子钟 估计过 10 年就商用普及了 20 年估计能民用化自己选配了

你真要精确时钟就去搞个 FB 开源的那个 PCIe 卡呗……

#17 一个北斗授时时的东西才百来块,你说哪个划算。

学习了,完全没想到

没必要太高精度(降低成本),主要是现在网络校时太方便了。

内置温补晶振的时钟芯片比如 DS3231, 可以做到正负 2ppm(0-40°C),换算成年误差不超过 2min.

感觉可以算作一个冷知识了,已经习惯所有的电子设备的时间都是准确且一致的了。。。

写个脚本,一天同步几次就行了。

一直以为石英表一年也就错个一两秒。。搜了下发现是每天。。

linux 下的时钟(wall time)是开机时内核从 RTC 芯片读出,然后每次程序读的时候是开机那个时刻加上内核的 jiffies 算出来的。我遇到过时间偏移过大的问题原因是 ntp 禁用而且某个内核任务占用 cpu 过长,jiffies 增加变慢,导致应用程序读出的时钟是慢的。
linux 下可以用 hwclock 直接读写那个 RTC 芯片里的时钟,如果这个都会走偏才能说明是硬件问题。另外关机时内核会把自己算的 wall time 写回到 RTC 。

这么说卡西欧的玩具表都比这个准

常识:电子表 160 万年误差 1 秒。
现实:160 万年亲妈都不认识了。

正常