5

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

我要问的是,有谁知道可能导致这种情况的原因以及我可以采取哪些措施来缓解这种情况?我怀疑 VMWare 正在以某种方式改变时钟,但不同的客户操作系统没有经历它的事实让我怀疑这种怀疑。

谢谢。

4

1 回答 1

3

为什么会这样?

我认为这是因为主机物理硬件的属性无法在虚拟硬件中完全准确地体现出来,同时仍然在 x86 平台上提供虚拟化(在该平台上高效的虚拟化多年来被认为是不可能的),尤其是提供高性能和低高架。更具体地说,一个因素应该是物理和逻辑 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 秒同步一次。(如果您没有准确的主机时间,请参阅本节末尾以了解如何进行设置。)

将其放在 VM 的 .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.

如果你愿意,你可以让它每秒与主机同步:

tools.syncTime.period = 1

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

完成此操作后,请确保 Windows 未与硬件 TOD 时钟同步。如果也尝试与之同步,则可能会导致问题,如 VMware 文档中详细说明的那样。VMware 表示他们默认禁用此功能,但它可能已再次启用,特别是如果您一直在尝试不同的修复。

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

更多解决方案信息:

这是一组很好的答案,可以让 VM 保持良好的时间同步,即使它是针对 Linux VM 的,以及偶尔会出现问题原因的额外答案: 如何保持 VMWare VM 的时钟同步?

这是一篇旧文章,尽管提到了 Linux VM,但我怀疑它会起作用:http: //vmblog.com/archive/2007/08/24/help-vmware-fixing-time-keeping-problems-with-the-guest-os .aspx

于 2012-12-15T17:29:17.323 回答