windows-7 - VMWare Windows 7 客户机中存在巨大的时间漂移

标签 windows-7 time vmware ntp drift

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

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

谢谢。

最佳答案

为什么会发生这种情况?

我认为发生这种情况是因为主机物理硬件的属性无法在虚拟硬件中完全准确地体现出来,同时仍然在 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.

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

tools.syncTime.period = 1

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

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

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

更多解决方案信息:

这里有一组很好的答案,可以使虚拟机保持良好的时间同步(即使它是针对 Linux 虚拟机),并且偶尔还会提供有关问题发生原因的额外答案: How to keep a VMWare VM's clock in sync?

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

关于windows-7 - VMWare Windows 7 客户机中存在巨大的时间漂移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13883324/

相关文章:

ubuntu - 在虚拟机上运行的 Ubuntu 上检测 Nvidia 显卡

performance - 提高 Sharepoint 2007 性能的最佳方法?

python-2.7 - python 的 time.time() 方法是如何工作的?

.net - 在带有和不带有SP1的Windows 7中,为什么在WPF中得到不同的线程行为?

r - 内联函数代码无法编译

.net - 如何调试/注册在文件创建时运行脚本的永久 WMI 事件

php - 在 PHP 中添加分钟到日期时间

PHP日期偏移量

linux - 在 Fedora linux 中安装 .bundle 文件

windows-7 - SWT Table.setLinesVisible(false) 似乎不适用于 Windows 7