并行操作的麻烦使得不一定总是在完成一项工作后就开始另一项工作
时间:2020-03-05 18:45:16 来源:igfitidea点击:
我正在使用具有四个逻辑CPS(如果需要的话,两个双核CPU)的系统。我正在使用make来并行化12个琐碎的可并行化任务,并通过cron进行。
调用看起来像:
make -k -j 4 -l 3.99 -C [dir] [12 targets]
我遇到的麻烦是,有时一项工作会完成,但是即使不应由平均负载限制器停止,下一项也不会启动。每个目标大约需要四个小时才能完成,我想知道这是否可能是问题的一部分。
编辑:有时目标确实失败,但是我使用-k选项使其余的make仍然运行。我还没有注意到与作业失败和下一个作业没有开始相关的任何信息。
解决方案
回答
是否认为目标之一失败了?如果是这样,它将在正在运行的作业完成后停止make。即使发生错误,也可以使用-k使其继续。
回答
我会丢掉'-l'
如果我们打算运行该系统,则我认为-j 4可以满足要求。
根据我的记忆,如果还有其他运行(crond?),则平均负载可能会超过4.
GNU make ref
回答
@BCS
我有99.9%的把握确定-l不会引起问题,因为我可以观察机器上的平均负载,并且平均负载下降到大约3,有时甚至低至一个(!),而无需开始下一个工作。