如何提升我的VirtualBox虚拟机的性能?

我在VirtualBox上运行一个Ubuntu 12.04的虚拟机,宿主机也是Ubuntu 12.04。但是虚拟机比宿主机慢得多(按下ALT+TAB需要4-5秒)。我查了一下,关于VirtualBox和VMware(免费版)的意见不一,所以我决定继续使用前者。
两个系统都已经更新,我在虚拟机上安装了增强功能,并且将内存和显存(64MB)均匀分配给了虚拟机和宿主机。我使用的是一台Toshiba m200笔记本电脑,有4GB的内存和共享显存。宿主机的BIOS中没有包含机器虚拟化的配置选项。我有2个CPU,但不能全部分配给虚拟机。
我是否忽略了什么可以解决我的问题的地方?
如果需要更多信息,请随时提问,感谢您的帮助。
编辑: 在系统监视器打开的情况下,虚拟机的(单个)CPU使用率从未低于55%,只需移动鼠标就可能升至80-90%。打开Firefox会导致系统监视器显示虚拟机的CPU使用率为100%,而宿主机显示两个CPU的使用率均匀分布在60%左右。
ТѕЉуџёCPUТў»Intel┬« CoreРёб2 Duo CPU T5450 @ 1.66GHz ├Ќ 2сђѓ
тдѓТъюУ┐ЎСИЇТў»СИђСИфжЁЇуй«жЌ«жбў№╝їжѓБТў»тљдТёЈтЉ│уЮђТѕЉуџёТю║тЎет»╣УЎџТІЪтїќТЮЦУ»┤тцфт╝▒С║є№╝Ъ

即使安装了Unity2D(这确实有所帮助)并尝试了不同的配置,虚拟机对我来说仍然太慢了,所以我暂时放弃了这个想法。 - ecoologic
我认为JohnP的回答在这里是最合适的。 - Léo Léopold Hertz 준영
5个回答

我对Player不太了解,但Vbox的默认设置对于那些更喜欢真正的GPU的Ubuntu版本来说并不适合。
  • 在旋转硬盘驱动器上,预先分配整个虚拟磁盘。在固态硬盘上,这并不重要。
  • 只分配所需的存储空间。将大文件存放在虚拟存储之外。
  • 不要分配过多的CPU或内存。1个虚拟CPU可能足够了。
  • 为HostOS保留1GB的内存。不要超额分配内存。
  • 使用VirtIO驱动程序进行存储和网络。现代Linux客户机支持此功能。对于Windows客户机,使用SATA(存储)和Intel PRO/1000(网络)驱动程序。在Windows下使用virtio驱动程序是可能的,只是稍微麻烦一些。
  • 从2003年、WinXP及更高版本开始,为所有客户机启用ACPI和AHCI。
  • 桌面虚拟机应该获得全部128MB的显示vRAM。
  • 服务器虚拟机应该保持9MB的vRAM;不要浪费它。
  • 在其他所有设置都正常工作之前,避免2D和3D加速设置。我是认真的。当启用此功能时,Ubuntu会出现问题。它可能让Core i7变得无法使用。
更多详情请参考:http://blog.jdpfu.com/2012/09/14/solution-for-slow-ubuntu-in-virtualbox

2如何预分配整个虚拟磁盘? - Toskan
5使用VirtIO驱动程序进行存储 -- 除非我漏掉了什么明显的东西,VirtualBox并没有实现半虚拟化存储。如果有的话,请告诉我在哪里,因为我很想使用它。 - cdhowie
1只分配你需要的存储空间。我不同意这个观点。你可以将磁盘动态设置为50 GB。如果一开始分配的空间太少,稳定性会受到影响。动态可扩展的空间并不总是占用最大值,而是根据实际需求来分配。 - Léo Léopold Hertz 준영
我所知道的唯一预分配磁盘的方法是使用vboxmanage工具,将旧的VDI文件复制到一个新的完全预分配的VDI文件中。 - JohnP
最近看到vbox中包含了virtio驱动程序。 - JohnP

一个资源如此低的虚拟客户机将运行缓慢。为了获得最佳性能,实际上您应该给主机比客户机更多的资源。此外,您将无法将两个CPU都分配给虚拟机,因为主机需要一些资源来运行所有内容。
可以这样理解。主机必须运行自己的系统以及客户机的容器。客户机与主机机器争夺资源。尝试减少给客户机的资源,看看它的运行情况如何。
为了获得最佳性能,您将需要一台64位机器,内存超过4GB。

在向社区提问之前,我实际上尝试了几种配置,内存在这个阶段不应该是一个问题(大部分都没有使用),根据你的回答,问题主要应该是CPU(经常达到100%)的原因。我以为我的笔记本电脑足够强大,也许我错了... - ecoologic
一个想法是观察主机和客户机的资源使用情况,看看哪里出现了耗尽的情况。你用的是什么类型的处理器? - Nate
这并不是你见过的最快的机器,但它从未让我失望过(回答已更新)。 - ecoologic
是的,我会说你的机器对于快速虚拟化来说不够强大。显然你已经让它运行起来了,所以速度问题就取决于你是否能接受。 - Nate
2@ecoologic:Unity2D运行速度更快 - 你试过了吗? - Takkat
或者尝试一个占用更少空间的桌面环境,比如XfceLXDE,或者敢于使用命令行! - Nate
@nate cli?这是台开发机器,所以我不介意有个浏览器和一个IDE。 - ecoologic
@Takkay unity2d?非常感谢,我现在正在尝试。 - ecoologic

我遇到了同样的问题
主机:Ubuntu 14.10(64位) 客户机:Windows 7(64位)
即使在主机BIOS中打开虚拟化,客户机空闲状态下CPU负载仍然持续在40-50%左右
对我有帮助的是在安全模式下安装支持Direct 3D的Guest Addition,并打开主机SATA控制器的I/O Cache 所以我的当前设置如下: 系统 基本内存:4096 Mb(主机总内存8192 Mb)
处理器:6个CPU(与主机的6个CPU相同)
PAE/NX:启用 VT-x/AMD-V:启用 嵌套分页:启用 显示 视频内存:128 Mb 3D加速:启用 2D加速:启用 运行得很好!Virtual Box 版本:4.3.18_Ubuntu r96516

除了之前关于VirtualBox最佳设置的答案外,还有一篇由Nam Huy撰写的博客文章blog post,介绍了如何使Ubuntu虚拟机实现3D加速。对于Ubuntu 13.04来说,这尤其有用,因为不再有安装Unity 2D的选项,导致新安装的系统在软件渲染下会占用80-100%的CPU负载,几乎无法使用。
基本思路是安装增强功能,将"vboxvideo"加载到etc/modules中,重新启动,然后在VirtualBox显示设置中激活3D加速。请注意,在配置虚拟机中的其他所有内容之后,才能启用3D加速。
对我来说,这带来了巨大的性能提升,在全屏模式下,我甚至无法区分本机操作系统和Ubuntu虚拟机之间的差异。

对于那些也遇到“数据库连接错误”的人,可以从Way Back机器上找到一个缓存版本:https://web.archive.org/web/20160320085343/https://namhuy.net/951/how-to-fix-slow-performance-ubuntu-13-04-running-in-virtualbox.html - Pavel

尽管最初的答案非常详细,但我觉得直截了当的回答是,系统/笔记本电脑太慢且性能不足,除非存在配置问题或者你的Virtualbox版本中的错误,否则无法做太多改进。你可以尝试进行优化,但主机的RAM和1.66Ghz的2个CPU核心不足以满足要求。根据CPU利用率情况,很可能是由于交换内存而导致RAM不足。
简而言之,你可以尝试使用另一个更轻量级的窗口管理器,同时考虑尝试其他操作系统,看看是否存在与你的Virtualbox相关的配置问题,并更新到最新版本。