LSF作业指定rusage资源预留的使用

目录

基本语法

示例

资源预留方法

多阶段资源预留


LSF使用bsub -R指定满足资源需求的主机来运行作业,资源需求字符串用于描述作业需要的资源。LSF资源需求字符串包括:select、order、rusage、span、same、cu和affinity等部分,每个部分都有不同的语法。这里我们只讨论资源使用字符串rusage。

rusage定义了作业的预期资源使用情况,它用于为作业指定预留资源,或者在运行交互式作业时将作业映射到主机并调整负载。

缺省情况下,LSF不为任何作业预留资源。因此,如果在同一台机器上运行的第二个作业没有任何内存限制或资源需求,调度器就无法阻止该作业消耗为第一个作业“保留”的资源。

如果rusage部分包含非消耗性资源,LSF将拒绝资源需求字符串。

基本语法

rusage[usage_string [, usage_string][|| usage_string] ...]

这里usage_string语法如下:

load_index=value [:load_index=value]... [:duration=minutes[m] | :duration=hours[h] | :duration=seconds[s] [:decay=0 | :decay=1]]

说明:默认单位为分钟。若要使用小时或秒作为单位,请在持续时间值后面加“h”或“s”。例如,duration=30表示30分钟,duration=30m也表示30分钟,duration=30h表示30小时,duration=30s表示30秒。

每个部分都必须键入方括号。每个资源需求部分之间必须有一个空格。

例如:

bsub -R "rusage[mem=100] || rusage[swap=100]" myjob

rusage字符串中的多个阶段允许不同的时间段有不同的资源预留需求。除最后阶段外的所有阶段的持续时间都必须指定,而衰减率都是可选的,如果省略,则假定为0。如果可选的最终持续时间为空,则最终资源需求将一直应用到作业完成。

示例

以下作业请求20M内存,并占用1个license 2分钟:

bsub -R "rusage[mem=20, license=1:duration=2]" myjob

以下作业需要20M的内存和50M的交换空间,持续1小时,同时需要1个license,持续2分钟:

bsub -R "rusage[mem=20:swp=50:duration=1h, license=1:duration=2]" myjob

以下作业请求50M的交换空间,并在2小时内线性减少预留量,同时需要1个license,持续2分钟:

bsub -R "rusage[swp=50:duration=2h:decay=1, license=1:duration=2]" myjob

下面的作业请求两个持续时间相同但衰减不同的资源:

bsub -R "rusage[mem=20:duration=30:decay=1, lic=1:duration=30]" myjob

在下面的示例中,同一个应用程序存在两个版本:1.5和2.0.1,app_lic_v15是1.5版本的license资源,app_lic_v201是2.0.1版本的license资源。

例1:提交使用app_lic_v201资源的作业:

bsub -R "rusage[app_lic_v201=1]" myjob

例2:优先尝试使用应用程序的2.0.1版本,如果没有,则尝试使用版本1.5:

bsub -R "rusage[app_lic_v201=1 || app_lic_v15=1]" myjob

如果不同版本的应用程序需要不同的系统资源,您可以在rusage字符串中指定其他资源。例如:要提交一个作业,app_lic_v15使用20M内存,app_lic_v201使用20M内存和50M交换空间:

bsub -R "rusage[mem=20:app_lic_v15=1 || mem=20:swp=50:app_lic_v201=1]" myjob

可以指定一个阈值,在进行分配之前所消耗的资源必须达到该阈值。例如:

bsub -R "rusage[bwidth=1:threshold=5]" myjob

资源预留方法

通过在数值后面使用/job、/host或/task关键字在资源使用字符串中指定资源预留方法,只能为消耗性资源指定资源预留方法。资源预留方式如下:

value/job

per-job资源预留。

value/host

per-host 资源预留。

value/task

per-task资源预留

语法:

resource_name=value/method:duration=value:decay=value

例如:

rusage[mem=10/host:duration=10]

表示指定在每一台执行机请求预留10M的memory,持续时间10分钟。

多阶段资源预留

rusage字符串中的多个阶段允许不同的时间段有不同的资源需求。除最后阶段外的所有阶段的持续时间都必须指定,而衰减率都是可选的,如果省略,则假定为0。如果可选的最终持续时间为空,则最终资源需求将一直应用到作业完成。

多阶段资源预留不可以增加资源,但可以指定在多个时间段内固定或减少资源预留。

多阶段memory资源语法:

rusage[multi_usage_string [, usage_string]...]

这里multi_usage_string是:

mem=(v1 [v2 … vn]):[duration=(t1 [t2 … tm])][:decay=(d1 [d2... dk])]

多阶段语法可以用于单阶段内存资源需求,也可以用于多个阶段。

多阶段资源预留不能随着时间的推移而增加。从一个阶段到下一个阶段的资源保留增加的作业提交将被拒绝。

例如:

bsub -R"rusage[mem=(200 300):duration=(2 3)]" myjob

指定内存预留从200M增加到300M,该作业将被拒绝。

提示:当使用多阶段mem资源预留需求时,可以为单阶段资源单独指定持续时间。

以下作业使用多阶段rusage字符串,第一阶段请求50M的内存,持续10分钟,第二阶段请求10M的内存:

bsub -R "rusage[mem=(50 10):duration=(10):decay=(0)]" myjob

以上所述是LSF提交作业rusage的一个简单的使用说明。更详细的文档可以参考官方文档:

IBM Documentation

欢迎关注下方微信公众号【HPC常青园】,共同交流HPC集群管理经验和最佳实践。如果您有关于HPC集群的具体需求,欢迎邮件沟通交流:hpc@ivyent.cn。

HPC常青园

  • 22
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ivyent

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值