概述

本文介绍如何在 LSF 集群中定义站点特定的外部资源,用于调度目的。LSF 支持三种类型的外部资源:

类型 说明 示例
Boolean(布尔) 表示主机是否具有某特性 bigmem(大内存主机)
String(字符串) 表示主机的某个属性值 switch=s1(网络交换机)
Numeric(数值) 表示可计数的资源 appA=4(应用许可证数量)

配置步骤

步骤一:在 lsf.shared 中定义资源

lsf.shared 文件中定义外部资源,至少需要指定 RESOURCENAMEDESCRIPTION

1
2
3
4
5
6
Begin Resource
RESOURCENAME  TYPE    INTERVAL INCREASING  DESCRIPTION       
   bigmem     Boolean ()       ()          (Hosts with very big memory)
   switch     String  ()       ()          (network switch)
   appA       Numeric ()       N           (Application Licenses)
End Resource

字段说明

字段 说明
RESOURCENAME 资源名称
TYPE 资源类型:Boolean、String 或 Numeric
INTERVAL 动态资源的更新间隔(静态资源留空)
INCREASING 数值资源是否递增(Y/N)
DESCRIPTION 资源描述

注意:对于动态资源,必须使用 INTERVAL 定义更新频率。

步骤二:在 lsf.cluster 中为主机分配资源

lsf.cluster.<cluster_name> 文件的 Host 部分的 RESOURCES 列定义主机资源:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
Begin Host
HOSTNAME  model    type        server r1m  mem  swp   RESOURCES   
fatnode   !        !           1      3.5   ()   ()   (bigmem appA=4)
s1node1   !        !           1      3.5   ()   ()   (switch=s1)
s1node2   !        !           1      3.5   ()   ()   (switch=s1)
s1node3   !        !           1      3.5   ()   ()   (switch=s1)
s1node4   !        !           1      3.5   ()   ()   (switch=s1)
s2node1   !        !           1      3.5   ()   ()   (switch=s2)
s2node2   !        !           1      3.5   ()   ()   (switch=s2)
s4node1   !        !           1      3.5   ()   ()   (switch=s4)
s4node2   !        !           1      3.5   ()   ()   (switch=s4)
s4node3   !        !           1      3.5   ()   ()   (switch=s4)
s4node4   !        !           1      3.5   ()   ()   (switch=s4)
End Host

资源赋值语法

资源类型 语法 示例
Boolean 直接使用资源名 bigmem
String 资源名=值 switch=s1
Numeric 资源名=值 appA=4

步骤三:重新配置并验证

1
2
3
4
5
# 重新配置 LIM
lsadmin reconfig

# 重启 mbatchd
badmin mbdrestart

验证配置

查看主机资源:

1
2
3
$ lshosts fatnode
HOST_NAME    type    model     cpuf  ncpus  maxmem maxswp server RESOURCES
fatnode      X86_64  Intel_EM  60.0  16     128G   32G    Yes    (bigmem)

查看所有外部资源:

1
2
3
4
5
6
7
8
9
$ lshosts -s
RESOURCE                                VALUE       LOCATION
switch                                     s1        s1node1
switch                                     s1        s1node2
switch                                     s1        s1node3
switch                                     s1        s1node4
...
switch                                     s4        s4node4
appA                                        4        fatnode

使用示例

定义资源后,用户可以在作业资源需求中使用这些资源。

示例一:在特定主机上运行

请求4个槽位,在 fatnode 主机上运行:

1
bsub -n 4 -R "select[bigmem] span[hosts=1]" myjob

示例二:在同一交换机下运行

请求8个槽位,必须在同一交换机下的主机上运行:

1
bsub -n 8 -R "same[switch]" myjob

应用场景

  1. 大内存节点标识:使用布尔资源标记特殊硬件配置的节点
  2. 网络拓扑感知调度:使用字符串资源标记交换机,实现 same[switch] 调度
  3. 软件许可证管理:使用数值资源跟踪应用许可证数量
  4. GPU 节点标识:标记配备 GPU 的节点

参考资料

  1. IBM Documentation - Defining external host-based resources
  2. IBM Documentation - Best practices and tips for LSF