我们有一个基于 Linux 的构建系统,其中一个构建包含许多不同的嵌入式目标(启用了相应的不同驱动程序和功能集),每个目标都使用另一个单一的主源代码树构建。
与其尝试将我们的基于 make 的系统转换为对多进程更友好的系统,我们只想找到同时为所有这些目标启动构建的最佳方法。我不确定如何获得最佳性能。
我考虑了以下可能的解决方案:
- 许多单独的构建机器。缺点:共享代码的大量副本,或从(慢)共享驱动器工作。更多系统需要维护。
- 较少数量的多处理器机器(可能是双四核),具有快速条带化 RAID 本地存储。缺点:我不确定它将如何扩展。似乎体积会成为瓶颈,但我不知道这些天 Linux 处理 SMP 的能力如何。
- 类似的 SMP 机器,但带有运行 VMware 的管理程序或 Solaris 10。这是愚蠢的,还是会提供一些调度好处?缺点:没有解决存储瓶颈问题。
我打算坐下来尝试这些可能性,但我想检查一下我是否遗漏了什么。谢谢!
您是否正在运行
make -j
和创建并行作业?Sun对此有很好的指导。虚拟机管理程序的想法有点愚蠢。您需要速度和 I/O 性能,而单台 vmware 服务器将夺走您的东西。您可能希望设置尽可能多的内核和磁盘。这些将是构建系统的两个真正限制因素。
为什么不能以串行方式而不是并行方式运行它们是有原因的吗?走最简单的路线,而不是最简单的路线。
供将来参考:一个不错的替代品清单。
虚拟化和使用模板、一个代码库、很多选项 - 大获全胜 :)
您可以虚拟化和使用高速磁盘或转至固态存储。不过,固态的成本可能是一个限制因素。固态的数据容量也有限制。
在这种情况下,最好拥有快速的系统和良好的虚拟化软件。它简单易行且具有成本效益。