快速业务通道

AMD Turion64x2 安装VMWare+Solaris 10时TSCs不能同步的问题

作者 佚名技术 来源 操作系统 浏览 发布时间 2012-06-28

最近在我的本本上装VMWare+Solaris 10遇到以下的问题

在网上找了很久,看到不少TX也遇到相同的问题,都没很好解决

最后终于在VMWare官网的文档中找到解决方案,写出来与大家分享

环境:
AMD Turion64x2 Windows Vista VMWare 6.0.2

现象:
在虚拟机启动的时候 报出以下错误
Your host does not have synchronized TSCs. Please read VMware Knowledge Base article 2041.

——你的主机没有同步TSCs.

忽略掉继续运行

在运行Solaris 10的安装程序时报出以下错误
Warning:Time of Day clock error:reason [Stalled] —— Stopped tracking Time of Day clock.
安装可以继续,没发生其他什么问题。

但在安装成功后的系统使用过程却中发现虚拟机中的CPU时钟频率有问题。这里要说明以下,不是指的虚拟机中的时间与主机时间不一致,而是CPU的时钟频率有问题,现象是在Solaris 10中运行一个程序时速度过快,就像装了加速器一样。比如显示进度条时明显发觉进度条动得太快,不正常。也许有的TX会说这样不是挺好的麽,速度快还不好?速度快当然是件好事,可是痛苦的时键盘的响应速度也太快了,按一个键下去就是一串字符出来,想正确的输入一个命令简直就是一件痛苦的事情。

开始在Google上找答案,发现遇到该类问题的TX不少,可是基本上所有的人都把这两个错误分别对待了,给出了对这两个错误分别的解决方案,一一试下来发现问题并没有解决。后来终于在VMWare官网的文档中找到了解决方案。

原因:
When a system has processors that have timestamp counters which are not all synchronized, the host operating system may move a virtual machine between two processors on which the timestamp counters are out of sync. This can cause the virtual machine clock to perform unpredictably. The clock may run too quickly or too slowly, or may even stop at times.

以上是官网给出的原因,大意就是在没有同步的多处理器操作系统中,会引起虚拟机时钟出错,有可能太快、太慢甚至是停止运行

解决方案:
You must perform two actions.

Disable a feature in some versions of VMware products that attempts to resynchronize the TSCs whenever a virtual machine is started.
设置虚拟机的TSC同步模式为非强制同步

具体做法就是更改VMWare的config.ini位置在(C:\ProgramData\VMware\VMware Workstation)

添加host.TSC.noForceSync = TRUE
config.ini位置在 Vista:C:\ProgramData\VMware\VMware Workstation
XP:C:\Documents and Settings\All Users\Application Data\VMware\VMware Workstation\
Assign each virtual machine to a subset of processors whose TSCs are synchronized with each other.

设置虚拟机只用CPU的一个NUMA node

NUMA node 这个名词我没有查到具体的解释, 大意就是多核或则多线程的CPU可以被分为多个同步的子集,一个NUMA node就是其中的一个子集(纯属个人理解,欢迎DX指正)

这个需要设置.vmx文件(每个虚拟机建立时会生成一个这样的文件,可在你设置的虚拟机目录下找到)

添加processors.NUMAnode = "n" 其中n=0,1,2......表示第几个子集

也可以设置processorn.use = FALSE 其中n=0,1,2......表示第几个CPU

以上的两条语句设置其中一条即可,在同时设置时processors.NUMAnode这条有效processorn.use会被忽略

但是好像又指出AMD的芯片只能用processorn.use来设置,我的CPU是双核也就是processor0和processor1,所以我设置的是processor0.use=FALSE

经过以上设置,前面提到的两个错误不再发生,系统正常运行。

总结:
其实这两个问题都是由于TSC无法同步造成的,第一个错误是VMWare的虚拟机运行时报出,第二个错误是Solaris操作系统报出,属于同一问题。

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号