欢迎!
在许多计算机上,我发现在 64 位 Linux 主机上运行 32 位客户机的性能很差(我只使用 Debian 系列)。最后我设法收集了基准数据。
我通过运行自定义 VBA 宏(我们公司使用)进行了基准测试,该宏生成了长达 284 页的 Word 文档,其中包含 Excel 饼图、表格和注释。该宏作为单个任务(不包括标准服务)在一组配置相同的 Windows XP 32 位系统上运行。我测量了执行测试所需的时间(以秒为单位)。
这台电脑(即我的笔记本 Asus P53E)支持 VT-d 扩展和原生 Windows XP。它有 2 核处理器,每个核都是超线程的,因此总共有 4 个几乎独立的执行单元。
我使用最新的 VirtualBox 4.2 和 VMWare Workstation 9.0 for Linux,安装在同一台主机上(运行 Mint 13 Maya),但从未跑步同时地。
结果(在时间列中)的准确度不低于±10%
结果如下(抱歉格式不对,但是我找不到更好的表格解决方案):
+---------------+-------------+------------------------------------------------------+---------+------------+----------------+------+
| Host software | # processor | Windows kernel | IO APIC | VT-x/AMD-V | 2D Video Accel | Time |
+---------------+-------------+------------------------------------------------------+---------+------------+----------------+------+
| VirtualBox | 1 | Advanced Configuration and Power Interface (ACPI) PC | 0 | 1 | 0 | 1139 |
| VirtualBox | 1 | Advanced Configuration and Power Interface (ACPI) PC | 0 | 1 | 1 | 1050 |
| VirtualBox | 1 | Advanced Configuration and Power Interface (ACPI) PC | 0 | 0 | 1 | 1644 |
| VirtualBox | 4 | ACPI Multiprocessor PC | 1 | 1 | 1 | 6809 |
| VMWare | 1 | ACPI Uniprocessor PC | | 1 | 1 | 1175 |
| VMWare | 4 | ACPI Multiprocessor PC | | 1 | 1 | 3412 |
| Native | 4 | ACPI Multiprocessor PC | | | | 1693 |
| Native | 1 | Advanced Configuration and Power Interface (ACPI) PC | | | | 1170 |
+---------------+-------------+------------------------------------------------------+---------+------------+----------------+------+
以下是令人震惊的结论:
- 虽然我在 VirtualBox 论坛上看到过关于 32 位客户机在 64 位主机上运行性能极差的情况,但 VMWare 与本机运行相比也存在问题,但仍然比 VBox 快两倍 (!)。
- 尽管 VBA 本质上是单线程的,但 Excel 计算却不是,它占用了总计算时间的一半以上。因此,人们会期待一些速度增益在 2 个以上内核上运行时(“+” 表示超线程)。我们看到速度有所下降。而且下降幅度相当大。
- 对于 VirtualBox 来说,VT-d 扩展不是什么大问题。
- 除非您至少拥有 6 个将在客户环境中使用的独立核心,否则在 VirtualBox 中使用多处理器 Windows 客户机在性能上是没有意义的。
- 除非您至少拥有 3 个将在客户环境中使用的独立核心,否则在 VMWare 中使用多处理器 Windows 客户机在性能上是没有意义的。
有人能解释一下为什么单线程 Windows 内核比 SMP 内核快得多吗?
答案1
我注意到在运行 64 位操作系统的 virtualbox 中性能非常糟糕,我怀疑 ioapic 是原因所在,并且准备进行测试,但是我想对 SMP 内核问题进行评论。
在我的笔记本电脑上,以前有一个单核处理器,我将它替换为同一代、相同时钟速度的双核处理器,唯一的区别是它具有更好的省电功能和更大的 L2 缓存大小、时钟等,其余的都相同。然后我发现在旧的 Windows 内核上交换 CPU 后性能没问题。然后我重新安装了 Windows,重新安装后安装了 APIC 内核,任务管理器突然报告相同任务的 CPU 使用率更高,例如。运行任务管理器占用了 2% 的 CPU,而不是 1% 以下。此外,CPU 温度更高,好像它工作更努力,非常令人困惑,特别是因为新安装是干净的,并且之前安装了 a/v 之类的东西。我得出与您相同的结论,即 Windows 具有较高的多处理器开销。这意味着基于单处理器的应用程序在多核处理器上运行得更慢。
答案2
https://www.virtualbox.org/manual/ch03.html#settings-motherboard:
“启用 I/O APIC 是64 位客户操作系统所需,尤其是 Windows Vista;如果您想在虚拟机中使用多个虚拟 CPU,它也是必需的。但是,对于 Windows 以外的某些操作系统,对 I/O APIC 的软件支持并不可靠。此外,使用 I/O APIC 会稍微增加虚拟化的开销,因此会稍微降低客户操作系统的速度。警告从 Windows 2000 开始的所有 Windows 操作系统都会根据 I/O APIC 是否可用来安装不同的内核。与 ACPI 一样,因此在安装 Windows 客户操作系统后不能关闭 I/O APIC。但是,安装后将其打开不会产生任何影响。”