运行 VirtualBox 时,我的系统出现 CPU 使用率 100% 的问题。以下是一些详细信息:
我的系统信息:
CPU 1 名称:英特尔® 奔腾® 双 CPU T2310 @ 1.46GHz
CPU 1 一级缓存大小:32K数据缓存。32K指令缓存。CPU 1 二级缓存大小:1024K统一缓存。
CPU 1 Mips:2926.20
CPU 2 名称:英特尔® 奔腾® 双 CPU T2310 @ 1.46GHz
CPU 2 一级缓存大小:32K数据缓存。32K指令缓存。CPU 2 二级缓存大小:1024K统一缓存。
CPU 2 Mips:2925.96
64 位 CPU?是的!
总内存:2.0 GB
总掉期:6141兆字节
我的操作系统信息:
Kubuntu 操作系统版本:11.04
内核版本:2.6.38-8-通用
内核结构:i686
默认外壳:/bin/bash
我的虚拟盒设置:
操作系统类型:Windows XP
显存:32 兆
加速度:3D
基本内存:512 MB
问题详情:
嗯,每次我从 VirtualBox 运行 Windows XP 时,我都会看到 CPU 使用率几乎达到 100%。即使我托管的 Windows XP 版本上没有运行任何程序,我的系统也会很慢。
我想知道是否有办法调整设置,以便稍微提高性能。我的 PC 在 Linux 操作系统下运行速度相对较快。我需要知道在配置 VirtualBox 的设置时是否有一些可以遵循的提示,以便获得更好的结果。
非常感谢任何建议/想法!
答案1
详细说明我上面的评论,T2310 缺少虚拟化扩展 (VT-x),根据你的 CPU 数据表http://ark.intel.com/Product.aspx?id=32431
从这篇维基百科文章,有三种基本因素会导致虚拟机性能明显下降(从而导致主机 CPU 使用率增加):
二进制翻译用于重写某些指令(如 POPF),否则这些指令在 ring 0 以上执行时会默默失败或行为不同,从而无法实现经典的捕获和模拟虚拟化。为了提高性能,需要以一致的方式缓存已翻译的基本块,以检测代码修补(例如在 VxD 中使用)、客户操作系统对页面的重用,甚至自我修改代码。
处理器使用的许多关键数据结构都需要进行影子处理。由于大多数操作系统都使用分页虚拟内存,而授予客户操作系统对 MMU 的直接访问权限意味着虚拟化管理器失去控制权,因此需要使用一种称为影子页表的技术在软件中为客户操作系统复制 x86 MMU 的部分工作。这涉及通过捕获访问尝试并在软件中模拟它们来拒绝客户操作系统对实际页表条目的任何访问。
I/O 设备模拟:客户操作系统上不支持的设备必须由主机操作系统中运行的设备模拟器来模拟。
客户操作系统对于需要使用特权指令的操作有很大的开销,通常这些开销可以通过使用 Intel VT-x 和 AMD AMD-V 虚拟化扩展来大大减轻。您的处理器缺少这些扩展,因此所有捕获和模拟工作都会导致一些性能损失。
我的建议是:
为虚拟机提供所需的内存,以尽量减少需要进行的分页量,根据您的工作负载,可能需要 1GB 或更多。
禁用 3D 加速,因为对 3D 驱动程序的所有调用可能都必须通过模拟层,因此可能会对处理器造成很大的负担。
为您的客户操作系统安装 Virtualbox Guest Additions,因为它们将使用更好地支持虚拟环境的驱动程序。
降低客户操作系统的屏幕分辨率和图形选项。
将网络(互联网)访问保持在合理水平,即使使用 VT-x,严重依赖网络的虚拟机仍然价格昂贵,并且也能从 VT-d(定向 I/O 虚拟化技术)中受益,但您的处理器也不支持该技术。
答案2
我的回答只与问题标题有关,与问题的其他内容无关。我强调的是虚拟客户机较多时的空闲 CPU 使用率:(主机上有足够的可用内存)。
运行 VirtualBox 时,Windows 主机上的进程导致的 CPU 使用率audiodg.exe
高于中间客户机本身的负载。可以通过禁用以下功能轻松降低或完全消除此问题声音的Virtualbox 客户机设置中音频选项卡上的复选框。(只能在封闭的虚拟机上禁用。)
audiodg.exe 进程会消耗一台客户机大约 5% 的 CPU,但在典型的空闲活动(如源编辑)期间,它是笔记本电脑的重要负载,并且对笔记本电脑的 CPU 频率(从 80% 降至 40%)、风扇速度和电池寿命有很大影响。我运行的许多虚拟机通常不需要声音或有时不需要声音。(在客户机操作系统中禁用音频没有效果,虚拟机也没有暂停,但 virtualbox 客户机设置很重要。)