概述
在基础的 LSF 集群管理之上,IBM Spectrum LSF 提供了多项高级功能,用于处理复杂的调度需求、集成现代容器技术以及优化集群资源利用率。本文将重点介绍计算单元、容器集成、回填调度、GPU 调度增强、ELIM 参数配置及能源感知调度。
1. 计算单元 (Compute Units) - 拓扑感知调度
计算单元 (CU) 是 LSF 处理网络拓扑感知的核心机制。通过将主机组织成层级结构(如 Switch > Rack > Building),LSF 可以将需要大量通信的任务调度在物理距离更近的主机上。
配置步骤
- 定义 CU 类型:在
lsb.params中指定层级。1
COMPUTE_UNIT_TYPES = switch! rack building - 构建拓扑结构:在
lsb.hosts的ComputeUnit部分定义成员关系。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
- 作业提交:使用
cu资源需求。1
bsub -R "cu[type=rack:maxcus=1]" ./mpi_job
2. Docker 容器集成
LSF 可以原生管理 Docker 容器作业,将容器镜像作为作业运行环境,同时保留 LSF 的调度和资源控制能力。
配置关键:CONTAINER 参数
在 lsb.applications 或 lsb.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 运行频率。
核心配置
- 启用频率管理:在
lsf.conf中配置。1
LSF_MANAGE_FREQUENCY = Y - 能耗数据收集:启用相关的 Beat 服务。
1
LSF_ENABLE_BEAT_SERVICE = "energy"
- 应用策略:通过
LSB_ENERGY_AWARE等参数控制自动频率选择。
管理员可以使用 bjobs -energy 查看单个作业的能耗统计。
总结
通过掌握上述高级功能,LSF 管理员可以显著提升集群的智能化水平:
- CU 解决了多机通信的性能瓶颈。
- Docker 集成 满足了开发环境一致性的需求。
- Backfill 压榨了硬件资源的最后一丝剩余。
- GPU_REQ 实现了对 AI 算力的精准控制。
- Energy-Aware 在性能与环保之间取得了平衡。
掌握这些实战配置,是构建高性能、自动化 HPC 平台的核心基础。
参考资源: