概述

在基础的 LSF 集群管理之上,IBM Spectrum LSF 提供了多项高级功能,用于处理复杂的调度需求、集成现代容器技术以及优化集群资源利用率。本文将重点介绍计算单元、容器集成、回填调度、GPU 调度增强、ELIM 参数配置及能源感知调度。


1. 计算单元 (Compute Units) - 拓扑感知调度

计算单元 (CU) 是 LSF 处理网络拓扑感知的核心机制。通过将主机组织成层级结构(如 Switch > Rack > Building),LSF 可以将需要大量通信的任务调度在物理距离更近的主机上。

配置步骤

  1. 定义 CU 类型:在 lsb.params 中指定层级。
    1
    
    COMPUTE_UNIT_TYPES = switch! rack building
    
  2. 构建拓扑结构:在 lsb.hostsComputeUnit 部分定义成员关系。
    1
    2
    3
    4
    5
    6
    
    Begin ComputeUnit
    NAME     TYPE       MEMBER
    s1       switch     (host01 host02)
    s2       switch     (host03 host04)
    r1       rack       (s1 s2)
    End ComputeUnit
    
  3. 作业提交:使用 cu 资源需求。
    1
    
    bsub -R "cu[type=rack:maxcus=1]" ./mpi_job
    

2. Docker 容器集成

LSF 可以原生管理 Docker 容器作业,将容器镜像作为作业运行环境,同时保留 LSF 的调度和资源控制能力。

配置关键:CONTAINER 参数

lsb.applicationslsb.queues 中定义 CONTAINER 参数:

1
2
3
4
Begin Application
NAME = docker_app
CONTAINER = docker[image(ubuntu:latest) options(--rm --net=host -v /data:/data)]
End Application

运行作业

用户提交时只需指定应用配置:

1
bsub -app docker_app ./my_script.sh

3. 回填调度 (Backfill Scheduling)

回填调度允许调度器在不延迟高优先级或大作业的前提下,利用其预留的空闲槽位运行小型、短时间的作业,从而提高系统吞吐量。

启用方式

lsb.queues 中为特定队列启用:

1
2
3
4
5
6
Begin Queue
QUEUE_NAME = normal
BACKFILL = Y
# 建议同时配置 RUNLIMIT 或 RUNTIME 以便调度器计算回填窗口
RUNLIMIT = 24:00
End Queue

4. GPU 调度进阶 (GPU_REQ)

在 LSF 10.1 中,传统的资源需求 (-R) 逐渐被更强大的 GPU_REQ 取代,支持更细粒度的主流 GPU 属性管理。

启用新语法

lsf.conf 中设置:

1
LSB_GPU_NEW_SYNTAX = extend

GPU_REQ 语法示例

在应用配置或作业提交时指定:

1
2
# 请求1个共享模式的 GPU,并开启 NVIDIA MPS
GPU_REQ = "num=1:mode=shared:mps=yes"

支持的参数包括:model (型号), gmem (显存), aff (亲和性), j_exclusive (独占) 等。


5. ELIM 参数配置 (ELIMARGS)

ELIM (External Load Information Manager) 是用户自定义资源收集器的核心。有时 ELIM 脚本需要接收命令行参数。

配置方法

lsf.cluster.<cluster_name> 文件的 Parameters 部分使用 ELIMARGS

1
2
3
4
Begin Parameters
...
ELIMARGS = "elim.custom_resource -v -i 30"
End Parameters

这使得 lim 在启动 ELIM 进程时,会自动传递指定的字符串作为命令行参数。


6. 能源感知调度 (Energy-Aware Scheduling)

LSF 能够监控作业的能耗,并根据策略调整 CPU 运行频率。

核心配置

  1. 启用频率管理:在 lsf.conf 中配置。
    1
    
    LSF_MANAGE_FREQUENCY = Y
    
  2. 能耗数据收集:启用相关的 Beat 服务。
    1
    
    LSF_ENABLE_BEAT_SERVICE = "energy"
    
  3. 应用策略:通过 LSB_ENERGY_AWARE 等参数控制自动频率选择。

管理员可以使用 bjobs -energy 查看单个作业的能耗统计。


总结

通过掌握上述高级功能,LSF 管理员可以显著提升集群的智能化水平:

  • CU 解决了多机通信的性能瓶颈。
  • Docker 集成 满足了开发环境一致性的需求。
  • Backfill 压榨了硬件资源的最后一丝剩余。
  • GPU_REQ 实现了对 AI 算力的精准控制。
  • Energy-Aware 在性能与环保之间取得了平衡。

掌握这些实战配置,是构建高性能、自动化 HPC 平台的核心基础。


参考资源