限制condor安排的并发进程数

时间:2015-11-25 22:33:18

标签: condor

我使用condor进行几个小时的~100次批量处理。完成这些过程后,我需要使用第一批结果开始下一批运行,并且此过程重复数十次。我的神鹰池是> 100个核心,我想将我的神鹰群集限制为一次只做100个进程,这样神鹰只在第一个进程完成后才开始处理下一个进程。这可能吗?

2 个答案:

答案 0 :(得分:1)

这听起来像你只是在运行一个检查点的工作,然后下一个工作读取该检查点并做一些事情并写出一个新的检查点等10次。我不确定为什么你需要按照你的方式分解它,为什么不只是有一个寻找检查点文件并使用它的包装器脚本,或者从头开始?

另一种选择是使用"要求"在您的提交文件中,仅列出可以运行您的作业的100台计算机或核心。类似的东西:

Requirements =  (machine == "astrolab01") || (machine == "astrolab02") || (machine == "astrolab03") 

将确保您不会同时运行超过3个作业。除非这些机器具有多个内核,否则您需要执行以下操作:

Requirements =  (name == "slot1@astrolab01") || (name == "slot1@astrolab02")

答案 1 :(得分:1)

您需要使用DAG管理器 - 这允许您定义作业之间的父子关系,以便您可以在开始第二个作业之前等待第一个作业的结果。

DAGman还有一个MAX_JOBS_RUNNING设置,可以为您限制活动作业的总数。

8.4手册的第2.10节中都记录了这一点。您可能需要使用某种类型的脚本来构建DAG文件,并且有一个位置可用于存储运行的中间结果 - 作业无法将数据直接从父级传递给子级。输出从第一次运行收集到工作目录,然后从工作目录发送到下一个作业。