我不知道答案,但你應該在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