关于makefile:并行make带来的问题并不总是在完成一项任务时就开始

关于makefile:并行make带来的问题并不总是在完成一项任务时就开始

Trouble with parallel make not always starting another job when one finishes

我正在使用具有四个逻辑CPS(如果需要的话,两个双核CPU)的系统。 我正在使用make来并行化12个琐碎的可并行化任务,并通过cron进行。

调用看起来像:

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

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

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


我会放弃'-l'

如果您计划运行的系统是此构建,我认为-j 4可以满足您的要求。

根据我的记忆,如果还有其他运行(crond?),则平均负载可能会超过4。

GNU make ref


@BCS

我有99.9%的把握确定-l不会引起问题,因为我可以观察机器上的平均负载,并且平均负载下降到大约3,有时甚至低至一个(!),而无需开始下一个工作。


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


推荐阅读