【问题标题】:LSF “order” resource stringLSF“订单”资源字符串
【发布时间】:2015-03-24 20:51:53
【问题描述】:

我试图将作业提交到 LSF 中使用最少的机器,使用

bsub -R "order[ut]"

它按预期工作,但所有作业(背靠背提交)最终都在同一个主机(使用最少的主机)中,因此机器负载很重,最终导致作业性能不佳。有没有办法将连续提交的作业分散到使用最少的机器上?或者一种计算机器上使用了多少个插槽的方法?

【问题讨论】:

    标签: linux lsf


    【解决方案1】:

    根据您的描述很难确定,但我猜您看到的是 LSF 调度周期的性质造成的影响。以下是关于订单字符串的 LSF 文档的摘录:

    http://www-01.ibm.com/support/knowledgecenter/SSETD4_9.1.3/lsf_admin/order_string.dita

    假设主机 h1 存在于一个集群中,并且有 110 个单位的消耗品 资源 'res' 而主机 h2 有 20 个此资源('res' 可以是 新的批处理内置资源槽,例如)。假设这两个 作业处于待处理状态,并由调度程序在同一调度中考虑 循环,job1会先被调度:

    Job1: bsub -R “maxmem>1000” -R “order[res] rusage[res=100]” -q q1 睡眠 10000

    Job2: bsub -R “mem

    在调度周期的早期,候选主机列表由 获取集群中的所有主机或任何列出的主机 询问主机列表 (-m) 并按顺序部分对它们进行排序 资源需求字符串。假设有序候选主机列表 订购后的工作如下所示:

    工作1:{h1, h7, h4, h10}

    工作 2:{h1, h2}

    这意味着 h1 最终成为候选主机的最高“分辨率”主机 两个工作的列表。仅在以后的调度中,每个作业将 分配要在其上运行的主机和来自这些主机的资源。

    假设 Job1 计划登陆主机 h1,因此将 分配了 100 个“资源”。那么当考虑 Job2 时,它也可能是 计划登陆主机 h1,因为它的候选主机列表仍在 看起来一样。也就是说,它没有考虑到 100 'res' 在同一调度周期内分配给 Job1。

    简而言之,您一次提交一堆作业并要求候选主机按资源“ut”排序,但在单个调度周期内,主机不会因为作业被调度给它们而重新排序。如果您将作业提交间隔开,以便将它们分别安排在不同的周期中,您会看到作业被分派到不同的主机。

    现在,该文档的页面还继续描述如何强制 LSF 为每个作业在周期内重新排序主机,只需添加一个“!”即可。在订单字符串中:

    bsub -R "order[!ut]"
    

    我会警告您,如果您的集群中有很多作业,这可能会显着减慢调度速度。

    此外,我不能 100% 确定这是否适用于资源“ut”(因为它的值不会随着作业的安排而改变),您可能想尝试内置资源“槽”我相信是在最近的版本中添加的:

    bsub -R "order[!slots]"
    

    编辑

    我的几个同事想出了另一种方法来避免这种行为,而无需使用“!” order 字符串中的符号,也就是将lsb.params 中的JOB_ACCEPT_INTERVAL 参数设置为1。

    这将执行每分钟向任何特定主机分派 1 个作业的限制,这将使 ut 资源有时间刷新和平衡主机之间的工作负载。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多