0

0

kernel: timekeeping watchdog expired 导致时间跳跃的硬件/虚拟化排查

舞姬之光

舞姬之光

发布时间:2026-01-30 20:41:02

|

492人浏览过

|

来源于php中文网

原创

“timekeeping watchdog expired”是内核检测到clocksource严重失准而触发的硬性中断,导致时间跳变;常见于TSC不稳定、BIOS电源管理启用、虚拟机未正确配置invtsc或kvm-clock等场景。

kernel: timekeeping watchdog expired 导致时间跳跃的硬件/虚拟化排查

timekeeping watchdog expired 是什么信号

这个内核日志不是普通警告,而是 timekeeping 子系统检测到 clocksource 严重失准的硬性中断:内核连续多次无法在预期窗口内读取到稳定、单调递增的时间源值,于是触发 watchdog 并强制 fallback 到更保守的 clocksource(如 jiffies),同时可能重置 tk_core 状态——这直接导致 getnstimeofday()ktime_get_real() 返回值突变,表现为系统时间跳跃(向前或向后几十毫秒到数秒)。

物理机上最常出问题的 clocksource 和对应检查项

Linux 默认优先使用 tsc(Time Stamp Counter),但它依赖 CPU 频率稳定和跨核 TSC 同步。常见失效场景包括:

  • cpupower frequency-set -g powersave 类动态调频策略会令 TSC 不可靠,需确认 BIOS 中关闭 Intel SpeedStep / AMD Cool'n'Quiet,或内核启动加 intel_idle.max_cstate=1
  • 多路服务器若未启用 invariant_tsc(现代 CPU 一般支持),且 BIOS 中禁用了 TSC Deadline TimerHPETtsc 可能被降级为 hpetacpi_pm,而后者精度低、延迟高,易触发 watchdog
  • cat /sys/devices/system/clocksource/clocksource0/current_clocksource 查当前源;用 dmesg | grep -i "clocksource.*switch" 看是否发生过 fallback

KVM/QEMU 虚拟机里 timekeeping 失效的典型原因

虚拟机不直接访问物理 TSC,其 clocksource 完全由宿主机 vCPU 模拟提供,因此问题往往藏在配置链路上:

Pixso AI
Pixso AI

Pixso AI是一款智能生成设计稿工具,通过AI一键实现文本输入到设计稿生成。

下载
  • 宿主机未启用 invariant_tsc,且 QEMU 启动时没加 -cpu ...,+invtsc,会导致 guest 内 tsc 不可作为 stable clocksource
  • guest 内核启动参数遗漏 clocksource=tsc tsc=reliable,即使宿主机支持,guest 也可能因探测失败而退回到 acpi_pm
  • 使用 virtio-vgaqxl 显卡时,QEMU 的图形线程抢占 vCPU 时间片,间接干扰 clocksource 读取周期,建议改用 virtio-gpu 或禁用 GUI(-nographic
  • 检查 guest 是否启用了 CONFIG_KVM_CLOCK(应为 y),并确认 /sys/devices/system/clocksource/clocksource0/available_clocksource 中含 kvm-clock

快速验证和临时缓解手段

不能立刻改 BIOS 或重装内核时,可用以下方式缩小范围并稳住时间:

  • 立即切换 clocksource:echo tsc > /sys/devices/system/clocksource/clocksource0/current_clocksource(仅当 tsc 在 available 列表中)
  • 禁用 watchdog(仅调试用):echo 0 > /proc/sys/kernel/timekeeping_watchdog_enabled,但会掩盖底层硬件问题
  • 对虚拟机,宿主机执行 virsh domtime guest-name --set realtime=1 强制同步 host 实时钟(注意:不解决 clocksource 本身漂移)
  • 关键业务务必开启 chronyd 并配置 makestep 1.0 -1,避免 NTP 自身因时间跳变拒绝校正

真正稳定的 timekeeping 依赖硬件能力、固件设置、hypervisor 配置、内核参数四层对齐,缺一不可。最容易被忽略的是 BIOS 中那些看似无关的电源管理选项,它们常常是 timekeeping watchdog expired 的沉默推手。

相关文章

keep
keep

Keep是一款健身安排,无论是想减肥塑形或增肌,还是寻找健身跑步瑜伽计步等训练计划,你可以随时随地选择课程进行训练!权威教练视频教学,健身干货自由分享!有需要的小伙伴快来保存下载体验吧!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
switch语句用法
switch语句用法

switch语句用法:1、Switch语句只能用于整数类型,枚举类型和String类型,不能用于浮点数类型和布尔类型;2、每个case语句后面必须跟着一个break语句,以防止执行其他case的代码块,没有break语句,将会继续执行下一个case的代码块;3、可以在一个case语句中匹配多个值,使用逗号分隔;4、Switch语句中的default代码块是可选的等等。

541

2023.09.21

Java switch的用法
Java switch的用法

Java中的switch语句用于根据不同的条件执行不同的代码块。想了解更多switch的相关内容,可以阅读本专题下面的文章。

423

2024.03.13

线程和进程的区别
线程和进程的区别

线程和进程的区别:线程是进程的一部分,用于实现并发和并行操作,而线程共享进程的资源,通信更方便快捷,切换开销较小。本专题为大家提供线程和进程区别相关的各种文章、以及下载和课程。

523

2023.08.10

磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

1415

2023.06.21

如何安装LINUX
如何安装LINUX

本站专题提供如何安装LINUX的相关教程文章,还有相关的下载、课程,大家可以免费体验。

706

2023.06.29

linux find
linux find

find是linux命令,它将档案系统内符合 expression 的档案列出来。可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。find根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部分为 path,之后的是 expression。还有指DOS 命令 find,Excel 函数 find等。本站专题提供linux find相关教程文章,还有相关

295

2023.06.30

linux修改文件名
linux修改文件名

本专题为大家提供linux修改文件名相关的文章,这些文章可以帮助用户快速轻松地完成文件名的修改工作,大家可以免费体验。

782

2023.07.05

linux系统安装教程
linux系统安装教程

linux系统是一种可以免费使用,自由传播,多用户、多任务、多线程、多CPU的操作系统。本专题提供linux系统安装教程相关的文章,大家可以免费体验。

575

2023.07.06

C++ 设计模式与软件架构
C++ 设计模式与软件架构

本专题深入讲解 C++ 中的常见设计模式与架构优化,包括单例模式、工厂模式、观察者模式、策略模式、命令模式等,结合实际案例展示如何在 C++ 项目中应用这些模式提升代码可维护性与扩展性。通过案例分析,帮助开发者掌握 如何运用设计模式构建高质量的软件架构,提升系统的灵活性与可扩展性。

14

2026.01.30

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 8.1万人学习

Git 教程
Git 教程

共21课时 | 3.1万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号