[IBM Spectrum LSF DOC]集群管理指南
Dec 17, 2025
|
wanlinwang
|
14 min read
本文全面介绍IBM Spectrum LSF集群的日常管理任务,包括集群配置、队列管理、资源控制、用户管理和性能监控等核心管理职责。
LSF管理概述
LSF管理员的主要职责包括:
集群配置 :定义主机、队列和资源
策略管理 :配置调度策略和资源分配
用户管理 :用户组、公平共享和配额
监控维护 :集群健康检查和性能优化
故障排除 :诊断和解决集群问题
核心管理命令
集群管理命令:lsadmin
lsadmin用于管理LSF守护进程和主机:
1
2
3
4
5
6
7
8
9
10
11
# 启动LIM守护进程
lsadmin limstartup
# 重启LIM
lsadmin limrestart
# 查看LIM状态
lsadmin ckconfig
# 重新加载配置
lsadmin reconfig
批处理管理命令:badmin
badmin用于管理批处理系统:
1
2
3
4
5
6
7
8
9
10
11
# 启动mbatchd和mbschd
badmin hstartup
# 重启批处理守护进程
badmin mbdrestart
# 重新加载配置
badmin reconfig
# 检查配置
badmin ckconfig
主机管理
添加主机到集群
1. 更新lsf.shared
1
2
3
# $LSF_ENVDIR/lsf.shared
ClusterName Servers Clients
cluster1 master01 master02 ( all clients)
2. 更新lsf.cluster.cluster1
1
2
3
# 定义新主机
HOSTNAME model type server RESOURCES
compute10 ! ! 1 ( linux mem)
3. 在新主机上安装LSF
参见安装指南 。
4. 启动LSF守护进程
1
2
3
# 在新主机上
lsadmin limstartup
badmin hstartup
5. 验证
1
2
bhosts compute10
lsload compute10
主机状态管理
1
2
3
4
5
6
7
8
9
10
11
# 关闭主机(不接受新作业)
badmin hclose compute10
# 打开主机
badmin hopen compute10
# 禁用主机(停止调度)
badmin hshutdown compute10
# 重新启用主机
badmin hstartup compute10
主机组(Host Groups)
在lsf.cluster中定义:
1
2
3
4
5
Begin HostGroup
GROUP_NAME GROUP_MEMBER
compute_nodes (compute[01-20])
gpu_nodes (gpu[01-10])
End HostGroup
使用主机组:
1
bsub -m "gpu_nodes" ./gpu_app
队列管理
队列配置:lsb.queues
队列是LSF调度的基本单位。典型队列配置:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Begin Queue
QUEUE_NAME = normal
PRIORITY = 30
NICE = 20
RUN_WINDOW = 8:00-18:00 # 运行时间窗口
USERS = all
HOSTS = all
```bash
DESCRIPTION = Normal priority queue
End Queue
Begin Queue
QUEUE_NAME = urgent
PRIORITY = 50
NICE = 0
RUN_WINDOW = () # 24小时
USERS = admin_group
HOSTS = all
MAX_JOBS = 10 # 最大作业数
RUNLIMIT = 2:00 # 2小时运行限制
DESCRIPTION = High priority urgent queue
End Queue
队列优先级
PRIORITY :越高越优先(范围0-100)
NICE :Unix nice值,影响作业CPU优先级
队列资源限制
1
2
3
4
5
6
7
8
9
Begin Queue
QUEUE_NAME = bigmem
HOSTS = bigmem[01-05]
RES_REQ = select[mem>64000] # 仅接受大内存主机
MEMLIMIT = 128G # 作业内存限制
CPULIMIT = 48:00 # CPU时间限制(小时:分钟)
RUNLIMIT = 24:00 # 运行时长限制
PROCESSLIMIT = 128 # 进程数限制
End Queue
队列管理命令
1
2
3
4
5
6
7
8
9
10
11
12
13
# 查看所有队列
bqueues
# 查看队列详细信息
bqueues -l normal
# 打开/关闭队列
badmin qopen normal
badmin qclose normal
# 激活/停用队列
badmin qact normal
badmin qinact normal
队列状态:
Open :接受新作业
Closed :不接受新作业
Active :调度挂起的作业
Inactive :不调度作业
用户和用户组管理
用户组配置:lsb.users
1
2
3
4
5
6
Begin UserGroup
GROUP_NAME USERS
admin_group (admin1 admin2 admin3)
dev_team (developer1 developer2)
guest_users (guest1 guest2)
End UserGroup
公平共享(Fair Share)
确保不同用户组获得公平的资源份额:
1
2
3
4
5
6
7
Begin User
USER_NAME MAX_JOBS SHARES
admin_group 100 30
dev_team 50 20
guest_users 10 5
default 20 10
End User
MAX_JOBS :用户最大并发作业数
SHARES :公平共享权重
用户限额(User Limits)
1
2
3
4
5
6
# 在lsb.users中配置
Begin User
USER_NAME MAX_JOBS MAX_PEND MAX_CPU
john 50 100 500
team_a 200 500 2000
End User
资源定义和管理
静态资源
在lsf.shared中定义:
1
2
3
4
5
6
Begin Resource
RESOURCENAME TYPE INTERVAL INCREASING DESCRIPTION
mem Numeric () Y Memory (MB)
tmp Numeric () Y Temp space (MB)
license_tool Numeric () N Tool licenses
End Resource
动态资源
通过ELIM(External Load Information Manager)脚本报告:
1
2
3
4
5
6
7
8
#!/bin/sh
# elim.gpu
echo "BEGIN"
nvidia-smi --query-gpu = index --format = csv,noheader | \
while read gpu_id; do
echo "1 gpu_ $gpu_id 1"
done
echo "END"
配置ELIM:
1
2
# lsf.conf
LSF_ELIM_ARGS="$LSF_SERVERDIR/elim.gpu"
资源需求字符串
用户通过-R选项指定资源需求:
1
2
3
4
5
6
7
8
# 请求GPU资源
bsub -R "select[gpu_0>0]" ./cuda_app
# 请求许可证
bsub -R "rusage[license_tool=1]" ./licensed_app
# 组合条件
bsub -R "select[mem>16000 && linux] rusage[tmp=10000]" ./my_job
配置文件详解
主要配置文件
文件
用途
修改后重载命令
lsf.conf
全局LSF配置
lsadmin reconfig
lsf.shared
跨集群共享配置(主机类型、资源)
lsadmin reconfig
lsf.cluster.名称
集群特定配置(主机定义)
lsadmin reconfig
lsb.params
批处理系统参数
badmin reconfig
lsb.queues
队列定义
badmin reconfig
lsb.hosts
执行主机配置
badmin reconfig
lsb.users
用户和用户组
badmin reconfig
lsb.resources
资源定义
badmin reconfig
配置变更流程
编辑配置文件
检查语法 :badmin ckconfig 或 lsadmin ckconfig
重新加载 :badmin reconfig 或 lsadmin reconfig
验证 :检查日志和执行测试
重要 :重新加载配置不会影响正在运行的作业。
集群监控
实时监控
1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 主机负载
lsload
# 主机状态
bhosts
# 队列状态
bqueues
# 作业统计
bjobs -sum
# 集群摘要
bsummary
日志文件
关键日志位置($LSF_LOGDIR):
日志文件
内容
lim.log.主机名
LIM日志
mbatchd.log.主机名
mbatchd日志
mbschd.log.主机名
mbschd日志
lsb.events
作业事件日志
lsb.acct
作业会计日志
监控作业负载
1
2
3
4
5
6
7
8
# 按队列统计
bjobs -sum -q normal
# 按用户统计
bjobs -sum -u all
# 查看集群利用率
bhosts -w | awk '{sum+=$4} END {print sum " slots used"}'
调度策略
抢占式调度
允许高优先级作业抢占低优先级作业:
1
2
3
4
5
6
7
8
9
10
# lsb.queues
Begin Queue
QUEUE_NAME = high_priority
PREEMPTION = PREEMPTABLE[low_priority]
End Queue
Begin Queue
QUEUE_NAME = low_priority
PREEMPTABLE = YES
End Queue
回填调度(Backfilling)
1
2
# lsb.params
BACKFILL_POLICY=1
允许小作业在不延迟大作业的前提下提前运行。
作业预留(Reservation)
1
2
# 为作业预留资源
bsub -U "reservation_id" -J reserved_job ./critical_task
性能调优
mbatchd参数调优
1
2
3
4
# lsb.params
MBD_SLEEP_TIME = 10 # mbatchd调度间隔(秒)
JOB_ACCEPT_INTERVAL = 1 # 作业接受间隔
MAX_SBD_FAIL = 3 # sbatchd失败重试次数
作业调度优化
1
2
# 限制队列中的挂起作业数,减少调度开销
badmin qmod -W 1000 normal # 最多1000个挂起作业
数据库优化
定期清理作业历史:
1
2
3
4
5
# 归档旧事件日志
mv $LSF_LOGDIR /lsb.events $LSF_LOGDIR /lsb.events.old
# 重启mbatchd生成新日志
badmin mbdrestart
高可用性和故障转移
多主控配置
1
2
3
# lsf.conf
LSF_MASTER_LIST="master01 master02 master03"
LSF_GET_CONF=lim
Primary Master故障时自动切换到Secondary
所有Master需访问共享LSF_ENVDIR
手动切换主控
1
2
# 在secondary master上
badmin hstartup -f
故障主机处理
1
2
3
4
5
6
7
8
9
# 1. 关闭故障主机
badmin hclose failed_host
# 2. 迁移作业到其他主机
bmig <job_id> target_host
# 3. 修复后重新启用
badmin hopen failed_host
badmin hstartup failed_host
安全管理
认证配置
1
2
3
# lsf.conf
LSB_AUTH=eauth # 使用增强认证
LSF_AUTH_DAEMONS="eauth"
访问控制
1
2
3
4
5
# lsb.hosts
Begin Host
HOST_NAME MXJ r1m DISPATCH_WINDOW # Jobs
compute10 4 () (5:18:00-20:00) # 时间窗口控制
End Host
审计日志
LSF自动记录:
查看审计:
1
grep "badmin" $LSF_LOGDIR /mbatchd.log.*
集群维护
滚动维护
对主机进行维护而不停止整个集群:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 1. 关闭主机调度
badmin hclose compute10
# 2. 等待运行中作业完成
watch "bjobs -m compute10"
# 3. 停止LSF服务
badmin hshutdown compute10
# 4. 执行维护(硬件更换、OS更新等)
# 5. 重新启动LSF
badmin hstartup compute10
badmin hopen compute10
升级期间的管理
参见安装升级指南 中的滚动升级章节。
定期维护任务
每日 :
每周 :
每月 :
归档日志文件
审查用户配额
性能基准测试
配置备份
故障排查
常见问题诊断
作业无法提交
1
2
3
4
5
6
7
8
9
10
# 检查mbatchd状态
badmin showstatus
# 检查mbatchd日志
tail -f $LSF_LOGDIR /mbatchd.log.*
# 常见原因:
# - mbatchd未运行
# - 队列关闭或不活动
# - 用户达到限额
作业不调度
1
2
3
4
5
6
7
8
9
# 查看挂起原因
bjobs -p
# 检查资源可用性
bhosts
lsload
# 检查队列状态
bqueues -l queue_name
主机无响应
1
2
3
4
5
6
7
8
# 检查LIM状态
lsadmin limstatus
# 重启LIM
ssh problematic_host lsadmin limrestart
# 如无法登录,从Master重启
badmin hrestart problematic_host
调试模式
启用详细日志:
1
2
3
4
5
# 设置环境变量
export LSF_LOG_MASK = LOG_DEBUG
# 或在启动时指定
LSF_LOG_MASK = LOG_DEBUG badmin mbdrestart
最佳实践
1. 配置管理
使用版本控制(Git)管理配置文件
在测试环境验证配置变更
记录所有配置更改
2. 容量规划
定期审查资源利用率
基于增长趋势规划扩容
监控队列等待时长
3. 性能监控
使用LSF RTM(Enterprise Manager)进行可视化监控
设置告警阈值
建立性能基线
4. 备份策略
1
2
3
4
5
# 自动化配置备份脚本
#!/bin/bash
BACKUP_DIR = /backup/lsf_config
DATE = $( date +%Y%m%d)
tar czf $BACKUP_DIR /lsf_config_$DATE .tar.gz $LSF_ENVDIR
5. 文档化
维护集群拓扑文档
记录硬件配置
编写运维手册
记录故障处理流程
总结
LSF集群管理是一项系统性工程,涉及配置管理、性能调优、故障排查和日常维护等多个方面。通过合理的队列设计、资源策略和监控机制,管理员可以确保LSF集群高效、稳定地运行,为用户提供优质的计算服务。
掌握lsadmin和badmin等核心管理命令,熟悉配置文件结构,并建立完善的监控和备份机制,是成为优秀LSF管理员的基础。
参考资源 :
Support the Creator
If you found this article helpful, consider supporting.