VMWare Windows 7客户端的巨大时间漂移

Der*_*wyn 5 vmware time drift ntp windows-7

我在VMWare中运行Windows 7客户端,每分钟损失多达5秒.我在大约25分钟前通过Windows重新启动了时间,到目前为止它已经丢失了00:01:20.它显然是不一致的,因为我经常发现时钟与其他计算机大约2分钟不同步.同一VM上的Redhat guest虚拟机与使用相同域时间服务器的其他计算机保持锁定步骤.我环顾四周,发现人们建议使用VMWare同步工具和其他人建议使用来宾Windows同步工具.漂移这个大似乎很荒谬,并导致在各种机器上运行的软件问题.

我要问的是,是否有人知道可能导致这种情况的原因以及我可以采取哪些措施来缓解这种情况?我怀疑VMWare是以某种方式回转时钟,但事实上不同的客户操作系统没有遇到它让我怀疑这种怀疑.

谢谢.

Pau*_*aul 3

为什么会发生这种情况?

我认为发生这种情况是因为主机物理硬件的属性无法在虚拟硬件中完全准确地体现出来,同时仍然在 x86 平台上提供虚拟化(在该平台上高效虚拟化多年来被认为是不可能的),尤其是在以较低的性能提供高性能的情况下。高架。更具体地说,一个因素可能是物理 CPU 和逻辑 CPU 之间的时钟速度和电源管理的变化。我认为物理 CPU 的 CPU 时钟速度可能有所不同,但 VMware 提供的逻辑 CPU 并未显示这一点。IIRC TSC(时间戳计数器)寄存器变得混乱,这尤其让 Windows 感到困惑。

VMware 在其通常的全面工程中,有一篇31 页的综合文章,介绍 VM 计时的工作原理以及它可能遇到的问题: http://www.vmware.com/files/pdf/techpaper/Timekeeping-In-VirtualMachines .pdf。第 14 页介绍了 Windows 计时

另请参阅: http://pelican.rsvs.ulaval.ca/mediawiki/index.php/VMWare_tips_and_tricks#Power_ saving_.28SpeedStep.2C_C-states.2C_P-States.2C....29

为什么这个硬件上的虚拟机表现如此糟糕?我不知道; 我希望我能在那里帮助你。您在同一台计算机上还有其他 Windows 虚拟机吗?他们的表现如何?

如何修复它:

如果您有准确的主机时间,那么我非常确定适当的解决方案是让 VMware Tools 每 60 秒同步一次时间。(如果您没有准确的主机时间,请参阅本节末尾以了解如何进行设置。)

将其放入虚拟机的 .vmx 文件中:

tools.syncTime = true
tools.syncTime.period = 60   #Every 60 seconds is supposed to be the default, but this forces it to 60 second just in case.
Run Code Online (Sandbox Code Playgroud)

如果需要,您可以使其每秒与主机同步:

tools.syncTime.period = 1
Run Code Online (Sandbox Code Playgroud)

http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=1318

执行此操作后,请确保 Windows 未将自身与硬件 TOD 时钟同步。如果尝试与之同步,可能会导致问题,如 VMware 文档中详细解释的那样。VMware 表示他们默认禁用此功能,但它可能已再次启用,特别是如果您尝试了不同的修复程序。

另外,恕我直言,微软的时间同步是没有尽头的麻烦。由于同一主机上有一个 Linux 来宾,我会在那里设置 NTP 并让它保持主机时钟最新。

更多解决方案信息:

这里有一组很好的答案,可以让虚拟机保持良好的时间同步,即使它是针对 Linux 虚拟机的,偶尔还会有一些关于问题发生原因的额外答案:如何保持 VMWare 虚拟机的时钟同步?

尽管引用了 Linux VM,但我怀疑这里的旧文章仍然有效: http://vmblog.com/archive/2007/08/24/help-vmware-fixing-time-keeping-problems-with-the-guest-os .aspx