如何在作业提交期间动态选择PBS队列

时间:2014-07-15 13:18:29

标签: bash shell scripting job-scheduling pbs

我在远程集群中运行了很多小型计算工作,其中作业提交由PBS管理。通常在PBS(bash)脚本中,我通过命令

指定我想要提交作业的队列

#PBS -q <queue_name>

我需要选择的作业队列取决于特定队列的负载。每次提交作业之前,我都会通过终端

上的命令对此进行分析

qstat -q

它为我提供了如下所示的输出

Queue            Memory CPU Time Walltime Node  Run Que Lm  State
---------------- ------ -------- -------- ----  --- --- --  -----
queue1           --      --    03:00:00   --    0   2 --   E R
queue2           --      --    06:00:00   --    8   6 --   E R

我想基于两个约束

通过作业脚本自动选择队列
  1. 所选队列的壁垒时间必须大于指定的作业时间。作业时间通过命令#PBS -l walltime=02:30:00指定。
  2. 队列必须至少没有。 Que中的作业,如上面的输出所示。
  3. 我无法识别我需要在终端中使用哪些工具来帮助我自动选择队列

1 个答案:

答案 0 :(得分:0)

您可以将qsub提交包装在另一个脚本中,该脚本将运行qstat -q,解析输出,然后根据请求的walltime和每个队列中有多少活动作业选择队列。然后,该脚本可以提交作业并将-q <name of desired queue>添加到qsub命令的末尾。

但是,您似乎正在手动尝试执行一些调度程序 - 使用适当的策略 - 为您做的事情。为什么需要动态切换队列?更好的设置是让队列基本上对作业进行分类 - 就像您已经在使用walltime一样 - 然后允许调度程序适当地运行作业。用户需要仔细选择队列的任何设置对我来说都有点怀疑。