【问题标题】:Determine Load Status in qsub确定 qsub 中的负载状态
【发布时间】:2013-09-14 12:52:05
【问题描述】:

我正在用 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

【问题讨论】:

  • 你可以解析qstat -a的输出。
  • qstat 没有选项
  • 我们集群上的那个(2.5.12)可以。但无论如何,即使只是 qstat 也会显示所有排队的作业,因此您可以根据排队作业的数量及其运行时间来估计负载。
  • 同意如果我运行 qstat 我将获得所有信息但是将进程作为运行 qstat 并解析输出将非常耗时。我们是否有任何命令/选项可以帮助我们确定负载它将节省大量时间
  • 编写解析器会有些耗时,我怀疑运行它需要很长时间。我不了解现有的命令行工具;我们使用ganglia,但安装起来很费力。

标签: qsub


【解决方案1】:

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

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

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

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

【讨论】:

    【解决方案2】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-31
      • 1970-01-01
      • 2012-10-07
      • 1970-01-01
      • 2016-08-12
      • 1970-01-01
      • 2014-05-05
      • 1970-01-01
      相关资源
      最近更新 更多