最佳的并行硬件/软件解决方案?

时间:2009-06-12 15:29:58

标签: build makefile smp

我们有一个基于Linux的构建系统,其中构建包含许多不同的嵌入式目标(启用了相应的驱动程序和功能集),每个目标都使用另一个主源树构建。

我们希望找到同时为所有这些目标启动构建的最佳方法,而不是尝试将基于make的系统转换为更加多进程的系统。我不确定的是如何获得最佳表现。

我考虑过以下可能的解决方案:

  • 很多单独的构建机器。缺点:共享代码的大量副本,或者从(慢速)共享驱动器开始工作。更多系统要维护。
  • 较少数量的多处理器计算机(可能是双四核处理器),具有快速条带化RAID本地存储。缺点:我不确定它将如何扩展。似乎该卷将成为瓶颈,但我不知道Linux如何处理SMP这些天。
  • 类似的SMP计算机,但运行VMware的虚拟机管理程序或Solaris 10。这是愚蠢的,还是会提供一些安排好处?缺点:未解决存储瓶颈问题。

我打算坐下来尝试这些可能性,但我想检查一下我是否错过了什么。谢谢!

3 个答案:

答案 0 :(得分:1)

就软件解决方案而言,我可以推荐Icecream。它由SUSE维护,并以distcc为基础。

我们在以前的公司非常成功地使用了它,它的构建要求与你描述的类似。

答案 1 :(得分:0)

如果您对快速增量性能感兴趣,那么计算需要重建的文件的成本将占用实际编译时间,这将对机器之间的高效I / O提出更高的要求。

但是,如果你最感兴趣的是快速完全重建(例如每晚构建),那么你可能更好地将源代码树发送到每个构建从服务器,或者甚至让每个构建从服务器检查它自己的副本来自源头控制。像Hudson这样的CI系统将有助于管理每个从构建服务器。

答案 2 :(得分:0)

如果您的makefile足够完整且结构良好,如果您的构建计算机有足够的内存,-j标志也可能有助于克服I / O瓶颈。这样可以使多个独立的任务并行运行,这样您的CPU理想情况下永远不会阻塞等待I / O.通常,我通过允许比计算机中的CPU更多的任务来找到好的结果。

从您的问题中不清楚您当前的makefile是否不适合这种情况,或者您是否只是想跳到与制作完全不同的东西。