【问题标题】:Dynamically Submit Qsub Jobs on SGE cluster based on cluster load根据集群负载在 SGE 集群上动态提交 Qsub 作业
【发布时间】:2014-07-29 17:09:08
【问题描述】:

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

我打算这样做:睡眠 1 分钟,然后再次检查集群中的作业数是否

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

提前致谢。

【问题讨论】:

    标签: linux job-scheduling sungridengine qsub


    【解决方案1】:

    您可以使用qstat列出所有用户的工作;这与awkwc 可用于找出集群上的作业总数:

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

    上述命令还考虑了在计算节点上排队等待调度的作业。

    但是,集群系统管理员可能不允许用户检查不属于他们的作业。您可以通过运行来验证是否可以看到其他用户的作业:

    qstat -u "*"
    

    如果您知道另一个用户正在运行作业,但在运行上述命令时看不到它,则很可能是系统管理员禁用了该选项。

    事后思考:据我了解,你只是一个普通的集群用户——你为什么还要费心以这种方式提交作业。您为什么不直接提交您想要的所有作业,如果集群无法安排您的作业,它只会将它们置于qw 状态,并在 SGE 认为最合适的时间安排它们。

    【讨论】:

    • 嗯,是的,这应该是这样做的方法,但集群有 2 个限制。一个是每个用户 300 个作业限制和 688 个集群限制,尽管用户不应该关心集群限制(因为这是排队/等待选项的原因,)我正在处理的集群不允许用户提交如果有超过 688 个工作岗位。因此 qsub 失败,这就是我尝试使用此选项作为解决此问题的方法的原因。
    • 啊哈——你应该考虑使用该脚本与crontab
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-08-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-14
      • 1970-01-01
      相关资源
      最近更新 更多