我们有一台旧的 Windows XP 服务器,在 2.6 GHz Intel CPU 上运行 Filemaker 数据库,但该服务器坏了。它已被一台带有两个 2.4 GHz Xeon CPU 和 5 GB RAM 的机器取代,该机器原生运行 Ubuntu 11.04,Windows 作为 VirtualBox 客户机运行。2GB RAM 已专用于 Windows 客户机。
当然,这些旧的 Xeon CPU 没有 VT-x 扩展,因此我并不指望能够为 VirtualBox 客户机添加 CPU,但 Filemaker 数据库的运行速度至少比在旧服务器上慢 2-3 倍。我认为利用四个可用 CPU 中的一个 2.4GHz CPU 不会产生如此惊人的差异。
我还希望能够继续使用此设置,因为这也意味着我们能够将我们的 Linux 服务器从机架中移除,该服务器运行在速度更慢的硬件上(但这并不意味着其工作对系统的要求很高)。
所以我的问题是:为什么这么慢?我能做些什么来改变这种情况?或者我现在应该放弃并寻找更合适的硬件?
请注意:据我了解,“新”机器应该慢 1% 左右理论上,所以请不要告诉我这“应该”没问题。我需要更具体的答案(例如,“我以前试过这个,你应该做 X”),因为在现实世界中,它似乎慢了 50% 左右。我打算将“虚拟”CPU 归咎于单核处理器上的多线程,以及 Xeon 和 Pentium 4 CPU 之间 CPU 架构的差异。
答案1
这些 CPU 应该有 VT,因此如果您的 BIOS 不允许您打开它,请移至另一个允许您打开 VT 的盒子。您不应该尝试运行没有 VT 的 Windows 客户机。
数据库通常受两个因素限制。首先是磁盘速度,其次是 RAM 的可用性,用于缓存从磁盘读取的数据。旧机器是否可能针对数据库服务进行了优化,配备了快速硬盘,而您现在使用的服务器配备了较慢的台式机硬盘?如果客户服务器有 2 G 可用内存,则听起来您的 RAM 数量合理,除非这台机器的需求非常高。有多少用户同时访问它?
如果您只是克隆 Windows 硬盘来创建 VM,则可能存在一些配置设置,这会让事情变得困难。旧机器有 2 个核心吗?如果是,那么测试为 VM 提供 2 个核心是个好主意,因为 XP 或 Filemaker 可能配置为需要这样。
答案2
从速度上看,在 Pentium-4 上的 VirtualBox 上运行 XP 实际上是没问题的,只要它不依赖于繁重的磁盘 IO。无论有没有 VT 扩展,您的 Xeon 都应该能够胜任这项任务。问题在于磁盘 IO。
如果您可以从高速文件服务器安装 Samba 共享,并且 FileMaker 乐意使用它来存储数据,那么这将会大大提高速度。
另外,请确保虚拟机中安装了 VirtualBox 驱动程序。如果没有,安装它们应该可以大大提高速度。
如果可以的话,请将 VM 的 .vdi 文件放在它自己的驱动器上。这样可以避免一些 IO 开销。即使您将 filemaker 文件放在快速的 samba 共享上,Windows 也会一直读取和写入(有人交换文件吗?)。
您可能只想为 VM 提供一个虚拟 CPU;前面的评论者是对的,在这种情况下添加更多虚拟 CPU 可能会减慢速度,而不是加快速度。
祝你好运。
答案3
我个人发现,虽然 Virtual Box 是一款很棒的产品,但与裸机相比,它的某些部分的性能根本不太好。
第一步是尝试找出性能瓶颈在哪里。是磁盘 I/O 还是网络 I/O?
如果您注意到网络 I/O 较差,请考虑使用 VB 的半虚拟化驱动程序。
尽管 VB 的最新版本已经有了显著的改进,但半虚拟化驱动程序是获得最佳性能的途径。
还要注意数据库应用程序大量使用磁盘。您的磁盘可能不是本机驱动器,对吧?更像是文件系统上的文件,因此开销更大。
考虑使用来自客户的原始磁盘。参见此处:http://www.virtualbox.org/manual/ch09.html
在高级存储配置下。希望这对您有所帮助。
答案4
我有一个带有多个 CPU 的 Windows XP 客户机,它也很慢。我怀疑 Virtualbox 的 IO APIC 实现很慢。我在与您的配置类似的配置上找到了一些基准测试(甚至使用时间也差不多):http://niccolofavari.com/virtualbox-make-windows-xp-guest-more-than-50-faster-with-these-tips
您可能必须从头开始重新安装只有一个 CPU 的 VM;我认为 XP 在支持 SMP 配置时需要 IO APIC。
此外,如果您使用一个较新的 CPU 而不是这两个较旧的 CPU,您可能会获得性能提升,因为每个时钟周期的工作量将会增加。