等待已完成的工作

时间:2016-07-28 12:38:24

标签: cluster-computing hpc pbs qsub torque

一旦其他人完成,我就会启动一个pbs脚本。为此我使用这个命令:

$ job1=$(qsub job1.pbs)
$ jobN=$(qsub jobN.pbs)
$ qsub -W depend=afterok:$job1:$jobN join.pbs

在大多数情况下,这都有效。但是,如果我在job1和jobN已经完成时运行加入脚本,它将无限期地闲置,因为它正在等待已完成的作业完成。这听起来很疯狂,但这就是发生的事情。如果我运行qstat我可以清楚地看到我的加入工作正在举行('H')

$ qstat -u me
Job ID          Username Queue    Jobname    SessID NDS TSK Memory Time  S Time
--------------- -------- -------- ---------- ------ --- --- ------ ----- - -----
1990613            me    workq    join.pbs      --    1   1    --    --  H   -- 

但是,如果至少有一个作业仍在运行,而另一个作业已经完成,那么加入脚本将不会空闲并完成。

那么处理已经结束的工作的解决方案是什么?我们显然需要完成这项工作。

1 个答案:

答案 0 :(得分:0)

当连接作业启动时,服务器仍然需要知道所依赖的作业;如果其中任何一个已从qstat消失,那么您需要在keep_completed中增加qmgr。否则,当连接作业准备好运行时,依赖关系将永远不会得到满足,并且保持永远不会被释放。

要检查:$ qmgr -c 'print server keep_completed'

添加/修改:$ qmgr -c 'set server keep_completed=300'

(我也相信你可以在队列上设置keep_completed。)