我不知道答案,但你应该在Condor Users邮件列表上提出这个问题。支持Condor中的DAG功能的人员将对其进行监控并作出响应。有关订阅信息,请参见this page。这是相当低的流量。
在Condor的同一主机上将两个作业保持在一起,而不事先将它们锁定到特定主机,DAG或没有DAG,通常相当困难。我实际上想不出一种真正可行的方法来让B在C或C之前开始B之前开始。如果你愿意强制B必须始终在C之前开始,那么你可以参与工作B的一部分当它开始运行时,请修改Job C的ClassAd的Requirements部分,以便它具有“Machine ==”字符串,其中是机器B的名称。这还需要提交作业C,直到B正在运行,B还将作为其启动工作的一部分发布。
这是相当复杂的...
所以我只是有一个想法:你可以用秃鹰的动态startd /插槽的功能和折叠您的DAG达到你想要的东西。在当前有两个单独节点B和C的DAG中,您可以将它折叠到一个节点B'中,该节点在机器上启动时可同时运行B和C.作为工作要求的一部分,您注意到它需要一台机器上的2个CPU。切换你的startd以使用动态插槽配置,以便机器公布其所有资源,而不仅仅是静态分配的插槽。现在,您一直在一台机器上同时运行B和C.如果在有大量单CPU作业的队列中有几个多CPU作业,那么动态插槽会遇到一些问题,但这至少是一个更容易解决的问题。
另一种选择是用一个特殊的职业属性标记B”:
MultiCPUJob = True
而就在机器上的插槽1个目标是:
Requirements = Slot == 1 && ...your other requirements...
而且有说静态插槽startd政策,“如果一个MultiCPUJob = True的作业试图在我的插槽1上运行,抢先于该机器上第2个插槽中的任何作业,因为我知道这个作业需要2个核心/ CPU”。
这是效率低下的,但可以用任何版本的Condor过去的6.8.x来完成。我实际上在我自己的静态分区农场中使用这种类型的设置,所以如果一项工作需要一台机器来进行基准测试,那么它可能会发生,而无需重新配置机器。
如果您有兴趣了解更多关于抢先选项的信息,请告诉我们,我可以指出您在condor-user列表存档中进一步阅读配置。
好伎俩,我采用了一种相似和简单的方法,最后:作业B和D都在同一个脚本中运行,但D等待C在共享驱动器上的已知位置创建一个文件。 – 2010-09-06 06:50:16