2

我正在用 python 编写脚本,向 qsub 提交多个作业,但我们需要确定 qsub 上的负载。如果队列中有更多作业或 qsub 上的负载高,我需要通知用户并运行作业本地环境。我已经检查了命令页面,但无法获得有用的信息。

qstat [options]
        [-ext]                            view additional attributes
        [-explain a|c|A|E]                show reason for c(onfiguration ambiguous), a(larm), suspend A(larm), E(rror) state
        [-f]                              full output
        [-fjc]                            full output grouped according to job class instances
        [-F [resource_attributes]]        full output and show (selected) resources of queue(s)
        [-g {c}]                          display cluster queue summary
        [-g {d}]                          display all job-array tasks (do not group)
        [-g {t}]                          display all parallel job tasks (do not group)
        [-help]                           print this help
        [-j job_identifier_list ]         show scheduler job information
        [-l resource_list]                request the given resources
        [-ne]                             hide empty queues
        [-ncb]                            suppress additional binding specific parameters
        [-pe pe_list]                     select only queues with one of these parallel environments
        [-nenv]                           do not request job environment
        [-njd]                            do not show details about foreign jobs
        [-q wc_queue_list]                print information on given queue
        [-qs {a|c|d|o|s|u|A|C|D|E|S}]     selects queues, which are in the given state(s)
        [-r]                              show requested resources of job(s)
        [-s {p|r|s|z|hu|ho|hs|hd|hj|ha|h|a}] show pending, running, suspended, zombie jobs
4

2 回答 2

2

理想的解决方案是使用调度程序,例如 Moab 或 Maui(我认为 Maui 可以做到这一点),它可以智能地将节点分配给作业,包括如果集群中的节点已经处于高负载状态,则不使用它们。通常,调度程序提供的策略允许您处理典型的 HPC 场景,例如这个场景。(为了充分披露,我目前是销售 Moab 的公司的工程师 - Maui 可以免费使用)

如果您希望通过脚本执行此操作,pbsnodes -a 会报告集群中节点的平均负载。它位于以下格式的较大状态字符串中:

status = attr=[val][,attr2=[val]...]

您要查找的属性是 loadave,因此,如果您将 qsub 包装在调用 pbsnodes(或已从 pbsnodes 缓存结果)的脚本中以获取此值,然后 qsubs 作业或在本地环境中运行它会起作用。对我来说,使用调度器似乎更容易。

于 2013-09-16T22:55:37.387 回答
0

这看起来像一个太阳网格引擎(或衍生产品)qstat。

您可以请求 Grid Engine 不启动该作业,除非它可以(或多或少)立即运行qsub -now n. 如果您不希望它在高负载的机器上运行,您可以根据集群的配置方式向 qsub 请求 load_avg、load_long、load_medium 或 load_short va -l 选项。

列出排队的作业qstat -u '*' -g d -s p

您可以选择添加-xml以获取该格式的输出

于 2013-10-18T09:01:19.037 回答