我在远程集群中运行了很多小型计算工作,其中作业提交由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
我想基于两个约束
通过作业脚本自动选择队列#PBS -l walltime=02:30:00
指定。我无法识别我需要在终端中使用哪些工具来帮助我自动选择队列
答案 0 :(得分:0)
您可以将qsub提交包装在另一个脚本中,该脚本将运行qstat -q,解析输出,然后根据请求的walltime和每个队列中有多少活动作业选择队列。然后,该脚本可以提交作业并将-q <name of desired queue>
添加到qsub
命令的末尾。
但是,您似乎正在手动尝试执行一些调度程序 - 使用适当的策略 - 为您做的事情。为什么需要动态切换队列?更好的设置是让队列基本上对作业进行分类 - 就像您已经在使用walltime一样 - 然后允许调度程序适当地运行作业。用户需要仔细选择队列的任何设置对我来说都有点怀疑。