并行的麻烦使得当一个人完成时并不总是开始另一个工作

时间:2008-08-29 22:19:16

标签: makefile

我正在研究一个带有四个逻辑CPS的系统(两个双核CPU,如果重要的话)。我正在使用make来并行化十二个平行可并行化的任务,并从cron中完成。

调用如下:

make -k -j 4 -l 3.99 -C [dir] [12 targets]

我遇到的麻烦是,有时候一个作业会完成,但下一个作业将无法启动,即使它不应该由负载平均限制器停止。每个目标大约需要四个小时才能完成,我想知道这是否可能是问题的一部分。

编辑:有时目标确实失败但我使用-k选项让其余的make仍然运行。我没有注意到任何失败的工作和下一个工作没有开始的相关性。

3 个答案:

答案 0 :(得分:1)

我放弃'-l'

如果你计划运行系统就是这个构建我认为 -j 4可以做你想要的。

根据我的记忆,如果你还有其他东西在运行(crond?),那么平均负载可以超过4。

GNU make ref

答案 1 :(得分:0)

是否认为其中一个目标失败了?如果是这样,它将在运行的作业完成后停止make。即使发生错误,也可以使用-k告诉它继续。

答案 2 :(得分:0)

@ BCS

我99.9%确定-l不会导致问题,因为我可以观察机器上的负载平均值,它下降到大约三,有时低到一(!)而不启动下一个工作