我们正在研究虚拟化我们的 C++ Build 服务器。
主要原因是我们目前使用的工具链(除了 Visual Studio 中的构建本身之外)只能在 Windows XP(或 2003Server)上正常运行,次要原因是管理方便(只需克隆一个图像并准备在不同的硬件上运行)。
最后,设置应该很可能是每个硬件盒一个 VM,因为共享硬件对于 C++ 构建来说毫无意义,因为它无论如何都会最大限度地利用 CPU 和磁盘。
一位同事做了一些初步测试在他的开发工作站上,而且非常糟糕:
他测量了我们 Visual C++ 8(Visual Studio 2005)解决方案的完整构建时间如下:
- Windows 7 桌面版/本机版:约 16 分钟
- 带有虚拟磁盘的 Vmware Workstation,客户机是 Windows XP:~1h21min(500%!!!)
- Vmware WS 直接访问专用物理磁盘且限制为 4 个核心:~42 分钟(260%!!)
按照这样的时间安排,我们当然不会采用虚拟方式!
我们现在问自己,我们的测量是否做出了错误的假设。
- 我们是否弄乱了某些设置,导致 C++ 构建速度如此缓慢?
- 我们是否应该测试 ESX(i)(?) 而不是 Workstation?
- 我们还应该期待什么吗微软 Hyper-V?(因为我们的 IT 部门更喜欢这样。)
并没有真正完全帮助的相关问题:
答案1
我们是否弄乱了某些设置,导致 C++ 构建速度如此缓慢?
可能不是,VMWare Workstation 不是适合这项工作的工具。
我们是否应该测试 ESX(i)(?) 而不是 Workstation?
是的,它会比 Workstation 更好,虽然仍然比裸机慢,但要好得多。
我们还对 MS Hyper-V 有什么期待吗?(因为我们的 IT 部门更喜欢这样。)
如果您愿意,性能大致与 ESXi 相当,有些更快,有些更慢 - 请随意尝试一下。
答案2
客户机内部的性能统计数据 (Perfmon、性能监视器等) 表明其瓶颈是什么?虚拟机管理程序操作系统对于等效统计数据有何看法?
您使用的是半虚拟化驱动程序还是模拟驱动程序?
您正在测试的 PC 是否具有 IO 虚拟化扩展以及基本虚拟加速?它们是否已启用 BIOS?
答案3
虚拟化并不总是合适的……但是……您没有告诉我们开发人员工作站的任何规格。它有多少内存?有多少个核心?
您是否使用 /MP 标志运行编译?
虚拟机是否配置为内存过量使用?内存气球驱动程序是否启动过?主机操作系统上还运行着什么?(例如,您的测试虚拟机是否运行着防病毒软件,主机工作站也是如此?)
我肯定会在 ESXi 上进行测试 - 该虚拟机管理程序非常高效,并且将作为虚拟机的主机提供更好的性能。但您仍然必须应对内存和 CPU 占用问题。