我正在尝试在最多支持 688 个作业的 SGE(Sun Grid Engine)集群上运行 qsub 作业。我想知道是否有任何方法可以找出集群上当前正在运行的作业总数,以便我可以根据当前集群负载提交作业。

我计划做类似的事情:休眠1分钟,再次检查集群中的作业数量是否< 688,然后进一步提交作业。

只是为了澄清我的问题涉及了解集群上提交的作业总数,而不仅仅是我当前提交的作业。

提前致谢。

有帮助吗?

解决方案

可以使用qstat列出所有用户的作业;具有awkwc的功能可用于在群集中查找群集的总数:

qstat -u "*" | awk '{if ($5 == "r" || $5 == "qw") print $0;}' | wc -l
.

上面的命令还考虑了排队的作业,并等待在计算节点上安排。

但是,群集sysadmins可能禁止用户检查不属于它们的作业。您可以通过运行来验证您是否可以查看其他用户的作业:

qstat -u "*"
.

如果您知道另一个用户正在运行作业,但在运行上面的命令时无法看到它,那么它很可能是sys管理员禁用该选项。

事后:从我的理解中,你只是一个常规的集群用户 - 你为什么甚至打扰这种方式就会提交工作。为什么不刚提交所需的所有作业,如果群集无法安排工作,则将它们放在qw状态下,并在SGE感觉是最合适的时间时安排它们。

其他提示

根据集群的配置方式,使用作业数组(-t 选项 qsub)将绕过这个限制。

我对单个用户可以提交的最大作业数设置了类似的限制。此限制适用于个别实例 qsub 并且不是单个作业数组提交可能有许多任务(该限制是通过另一个配置变量设置的, max_aj_tasks).

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top