解决VirtualBox下XP虚拟机占用CPU达100%的问题


最近因为一些原因要使用VirtualBox来跑虚拟机,果然就是Sun自家的东西好用,对Solaris完美支持,而且对各类新的主流Linux发行版都提供了完美的支持,无奈VirtualBox下跑XP总会莫名其妙出现XP虚拟机的CPU占用达100%的现象,开始还总以为是VirtualBox不争气,后来终于找到了正确答案,尊重原作者版权,现Mark一下,留做备用:

本文由五步蛇原创。

一直使用VirtualBox虚拟机,但是忘记什么时候,一开虚拟机就占用100%的CPU,也不知道是VirtualBox升级的问题还是由于换了 Win7,在学校没什么事的时候也就没怎么用,不过这两天弄东西经常用,但是却死活摆脱不了占用100%CPU的问题,甚至有了换虚拟机的想法,但是舍不 得装的这几个系统,值得庆幸的是这个问题终于解决了。

问题:在win7里用VirtualBox安装XP,在使用过程中XP的CPU占用100%,win7的CPU也占用100%。先是搜了几个中文网站的答案,大概存在这么几个方法。

1. Ubuntu下安装虚拟机,将CPU频率调节策略设置为Conservative

具体方法:

# vim /etc/sysfs.conf

# 加入

devices/system/cpu/cpu0/cpufreq/scaling_governor = conservative

devices/system/cpu/cpu0/cpufreq/scaling_max_freq = 你的CPU主频

另外/etc/modules里要加上相应的模块

2. 开两个虚拟机,这个方法我用了,确实管用,但只在两分钟之内有效。

3. 新建一个guest,不用分配硬盘,将RAM设为4M,与你的其他guest一起运行即可。这个我试了,不好使。

还有其他的建议,无非就是关掉一些乱七八糟的功能,但是都没有解决问题。www.bkjia.com于是用英文搜索,终于找到了方法。也看到有老外用上边的第三种方法,说明在某种环境下,这个方法确实应该有用。

下面介绍正解。

方法:在Win7下装了XP系统,或者类似的情况下,在虚拟机中,stop and disable the Windows Firewall/Internet Connection Sharing (ICS) services,也就是关闭防火墙并且关闭ICS,关闭ICS这个我没有做,单纯的关闭防火墙就立即解决了问题,XP中CPU的使用降到20%以 下,win7中的CPU在10%左右。事到如今,证明我已经成功地解决了这个问题。至于关闭防火墙的具体步骤我就不说了,关闭ICS的步骤参照这里:http://support.microsoft.com/kb/306126。

简单的分析了一下原因,太深奥的原理我也弄不明白。国人大多以为是虚拟机的问题,有的怀疑是电脑的CPU和VirtualBox不兼容的问题,还推荐去买 什么什么样的CPU,但是个人认为这和虚拟机没有多大的关系,运行Ubuntu的时候就不会占用那么多资源,实际上在WIKIPEDIA中对ICS也就是 因特网连接共享有这样的说明:在winxp sp3中ICS有一个bug。所以完全可以推测正是因为这个bug导致虚拟机运行时占用了100%的资源,与外界传输数据的渠道发生了堵塞,自然会影响运行。

综上所述,问题解决了。这件事情告诉我们:学好英语很重要。

相关内容