我正在尝试在支持最多688个作业的SGE(Sun Grid Engine)群集上运行qsub作业。我想知道是否有任何方法可以找出当前在群集上运行的作业总数,以便我可以根据当前群集负载提交作业。
我计划执行以下操作:睡眠1分钟,然后再次检查群集中的作业数是否为< 688然后再提交工作。
只是为了澄清我的问题,关于知道集群上提交的作业总数,而不仅仅是我目前提交的作业。
提前致谢。
答案 0 :(得分:1)
您可以使用qstat
列出所有用户的工作;使用awk
和wc
可以查找群集中的作业总数:
qstat -u "*" | awk '{if ($5 == "r" || $5 == "qw") print $0;}' | wc -l
上述命令还会考虑排队等待在计算节点上进行调度的作业。
但是,群集系统管理员可能会禁止用户检查不属于他们的作业。您可以通过运行来验证是否可以查看其他用户的作业:
qstat -u "*"
如果您知道另一个用户正在运行某个作业并且在运行上述命令时看不到它,则很可能是sys管理员禁用了该选项。
事后想想:从我的理解来看,你只是一个普通的集群用户 - 为什么你甚至不愿意以这种方式提交工作。为什么不提交所需的所有作业,如果群集无法安排作业,只需将它们置于qw
状态,并在SGE认为最合适的时间安排它们。
答案 1 :(得分:0)
根据群集的配置方式,使用作业数组(-t
的{{1}}选项)可以达到此限制。
我为单个用户可以提交的最大作业数设置了类似的限制。此限制适用于qsub
的单个实例,而不是单个作业数组提交的潜在许多任务(该限制是通过另一个配置变量qsub
设置的)。