【问题标题】:excluding nodes from qsub command under sge从 sge 下的 qsub 命令中排除节点
【发布时间】:2012-12-13 13:48:54
【问题描述】:

我有 200 多个作业需要提交到 sge 集群。我会将它们提交到两个问题中。其中一个问题有一台我不想提交作业的机器。我怎样才能排除那台机器?我发现唯一可能有用的是(假设 q1 可用的三个有效节点和 q2 的所有可用节点都是有效的):

qsub -q q1.q@n1 q1.q@n2 q1.q@n3 q2.q

【问题讨论】:

    标签: nodes qsub sungridengine


    【解决方案1】:

    假设您不想在其上运行它,则称为 n4 将以下内容添加到您的脚本中应该可以工作。

    #$ -l h=!n4
    

    如果您将 -l 选项添加到 qsub 命令行,而不是将其嵌入到提交的脚本中,大多数 shell 都需要引号引起来。

    【讨论】:

    • 我收到“qsub:提交错误(未知资源类型 Resource_List.h)”
    • 谢谢。你怎么能对两个主机名这样做? #$ -l h=!n4 h!=n5#$ -l h!=n4,n5 不起作用
    • h=!h4&!h5 或 h=!(h4|h5) 应该这样做。
    • -l h='!n4' 我。
    【解决方案2】:

    为此我找到的最佳方法是在您希望允许执行的节点上设置自定义资源,然后在提交作业时需要该资源。

    在 qmon 中,转到“复杂”配置并添加一个新属性。将名称设置为“my_allowed”,将快捷方式设置为“m_a”,类型设置为 BOOL,关系设置为 ==,requestable 设置为 Yes,consumable 设置为 No,然后“Add”它。提交对复杂配置的更改。

    从命令行执行下一步可能更容易,但您也可以在 qmon 中执行。您需要将您的消耗品添加到您将允许您的工作在其上运行的每个主机。在 qmon 中,您可以进入主机配置,选择执行主机,然后依次打开每个主机,单击耗材/固定属性选项卡并添加您刚刚在上面配置的新复合体,值为“True”。从命令行,您可以使用“qconf -sel”获取执行主机列表。此列表适用于传递给循环并找出您不希望包含的主机。做这样的事情:

    qconf -sel | grep -v host_to_exclude | while read host; do
        EDITOR="ed" qconf -me $h <<EOL
    /complex_values/s/$/,my_test=True/
    w
    q
    EOL
    done
    

    这使您可以以编程方式编辑主机(qconf 通常不允许,因为它想为您启动编辑器)。它通过将编辑器设置为“ed”来做到这一点(您必须确保安装了 ed 编辑器……尝试先手动运行它……输入“q”退出)。 ed 在它的标准输入上获取编辑命令列表,所以我们给它三个命令。第一个编辑带有 complex_values 的行以包含 my_test 值。第二个写出临时文件,第三个退出 ed。

    完成此操作后,使用需要新综合体的限制选项提交您的作业:

    qsub -q whatever -l my_test=True my_prog.sh
    

    -l 选项设置了一个限制,my_test=True 表示该作业只能在具有复杂 my_test 值为 True 的主机上运行。由于复合体不是消耗品,它仍然可以在每台主机上运行任意数量的作业(直到主机的插槽限制),但它会避免任何未将 my_test 复合体设置为 True 的主机.

    【讨论】:

      【解决方案3】:

      有一个很好的绕过方法。

      生成一个简单的 bash 文件:

      #!/bin/bash
      sleep 6000 #replace 6000 with any long period of time that will be enough to submit your jobs
      

      将此作业提交到您希望排除的节点,直到它们完全占据它。

      瞧,您的节点已排除。

      【讨论】:

      • 这是一个 hack,但唯一适合我的解决方案 (+1)。我尝试了十几个 qsub 变体,但它们要么没有区别,要么导致错误......
      • 这对于更大的共享集群来说是一个糟糕的建议。
      • 这与 -q 参数相结合以选择要排除的确切机器是合理的 hack IMO。
      • 这真是邪恶!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多