当前位置: 首页 > news >正文

虚拟机在挂起恢复后时间漂移问题

问题现象

虚拟机在从内存快照恢复后,存在时间漂移的情况,大约过3s后才被chronyd同步正确。
在这里插入图片描述

Linux时间分为内核时间,系统时间(用户态)。
用户态程序使用的都是系统时间,系统时间的同步有两种:
1.内核时间是通过内核时钟源(TSC/kvm-clock)获取的,然后同步到系统时间。
2.chronyd时间同步服务通过时间硬件设备(ptp0)或者网络(ntp)获取时间,然后同步到系统时间。

原因

1.TSC内核时钟源在虚拟机挂起恢复场景下存在时间漂移的情况,导致虚拟机resume后没法将系统时间同步到准确时间,原因是虚拟机的TSC内核时钟源是通过VCPU实现的,挂起后,VCPU也停止运行了,再恢复起来就会按挂起前的时间继续运行。
2.chronyd服务同步时间的动作在resume时会滞后3s左右(原因未明),所以就存在3s左右时间错误的阶段

解决办法

将内核时钟源修改为kvm-clock,kvm-clock是通过kvm模块直接向host获取时间的,虚拟机挂起不影响host上kvm模块的运行,在resume后,kvm-clock会第一时间将准确的内核时间同步到系统时间,之后chronyd只需要进行微调就好了。
给社区小提一个patch:https://github.com/e2b-dev/infra/pull/638
在这里插入图片描述

相关文章:

  • 吉客云数据集成到金蝶云星空的最佳实践
  • HTML常用标签用法全解析:构建语义化网页的核心指南
  • 工具:shell命令提示符自定义之显示GIT当前分支
  • WebGL2光照效果
  • 龙芯新一代国产服务器CPU及产品闪耀信创大会,助力信创与智算新突破
  • SpringBoot3.4.5下Lombok的@Data注解不生效,解决方案
  • 数据科学和机器学习的“看家兵器”——pandas模块 之六
  • 【漫话机器学习系列】261.工具变量(Instrumental Variables)
  • 《AI大模型应知应会100篇》第66篇:用大模型 + 向量数据库构建你的个性化知识库系统(附实战代码)
  • Java 21 + Spring Boot 3.5:AI驱动的高性能框架实战
  • 【漫话机器学习系列】262.交叉项(Interaction Term)
  • 机器学习-特征工程
  • GD32 GPIO失控的解决方案
  • 【动态导通电阻】GaN HEMT动态导通电阻的精确测量
  • 每日Prompt:迷你 3D 建筑
  • 【leetcode】94. 二叉树的中序遍历
  • 【技术原理】ELK技术栈的历史沿革与技术演进
  • 《Elasticsearch 源码解析与优化实战》笔记
  • 前端面经 9 JS中的继承
  • FC7300 WDG MCAL 配置引导
  • “GoFun出行”订单时隔7年扣费后续:平台将退费,双方已和解
  • 澳大利亚首例“漂绿”诉讼开庭:能源巨头因“碳中和”承诺遭起诉
  • 远洋集团:今年前4个月销售80.9亿元,同比增加13.62%
  • 丹麦外交大臣拉斯穆森将访华
  • 美国务院批准向土耳其出售导弹及相关部件,价值3.04亿美元
  • 腾讯一季度营收增长13%,马化腾:战略性的AI投入将带来长期回报