Ubuntu Server 22.04.4 LTS时钟漂移及tsc-early时钟源标记不稳定问题求助
Ubuntu Server 22.04.4 LTS时钟漂移及tsc-early时钟源标记不稳定问题求助
看起来你的服务器确实碰到了时钟源不稳定引发的时间漂移问题——从你提供的dmesg日志能明确看到,TSC(Time Stamp Counter)时钟源因为和watchdog的偏差超过阈值(340ms),被系统标记为不稳定,随后切换到了精度更低的refined-jiffies,这正是时间大幅漂移、同步时又突然跳回的核心原因。
下面给你几个针对性的解决步骤,你可以按顺序尝试:
1. 先确认当前使用的时钟源
先搞清楚系统现在用的是哪种时钟源,执行命令:
cat /sys/devices/system/clocksource/clocksource0/current_clocksource
2. 强制切换到更稳定的时钟源
refined-jiffies精度很低,我们可以尝试切换到hpet或acpi_pm这类更稳定的时钟源:
临时生效(重启后失效):
执行命令切换到hpet:echo hpet | sudo tee /sys/devices/system/clocksource/clocksource0/current_clocksource要是hpet效果不好,也可以换成
acpi_pm试试。永久生效:
需要修改GRUB配置来固化设置:- 编辑GRUB配置文件:
sudo nano /etc/default/grub - 找到
GRUB_CMDLINE_LINUX_DEFAULT这一行,添加clocksource=hpet(比如原来的内容是quiet splash,修改后变成quiet splash clocksource=hpet) - 保存文件后,更新GRUB:
sudo update-grub - 重启服务器,设置就会生效。
- 编辑GRUB配置文件:
3. 优化NTP同步,避免时间突变
默认的systemd-timesyncd处理时钟突变的能力一般,换成chrony能更平滑地调整时间,减少突然跳转的情况:
- 安装chrony:
sudo apt install chrony - 停止并禁用原来的时间同步服务:
sudo systemctl stop systemd-timesyncd sudo systemctl disable systemd-timesyncd - 启动并启用chrony:
sudo systemctl start chronyd sudo systemctl enable chronyd - 查看chrony的同步状态:
这样chrony会逐步修正时间,而不是突然把时间拉回正常,能缓解你提到的“时间先漂移到未来再突然回调”的问题。chronyc tracking
4. 检查BIOS/UEFI或虚拟机配置
- 如果是物理服务器:进入BIOS/UEFI界面,找到和时钟相关的选项,比如“TSC Synchronization”(TSC同步)、“High Precision Event Timer (HPET)”,确保这些选项处于启用状态。有些服务器还可能有“Clock Source”相关设置,可以尝试调整为更稳定的选项。
- 如果是虚拟机:检查宿主机的时钟是否稳定,同时确认虚拟机的时钟同步功能(比如VMware的Time Sync、KVM的时钟配置)已经正确开启。
5. 排查硬件问题
要是上面的方法都没效果,可能是服务器的硬件时钟(RTC)出了问题,比如主板上的CMOS电池没电了——可以尝试更换CMOS电池,再观察时钟稳定性是否改善。
备注:内容来源于stack exchange,提问作者NicoCaldo
相关产品推荐
相关产品推荐

