[IBM Spectrum LSF DOC]命令与配置参考速查
|
wanlinwang
|
11 min read
本文提供IBM Spectrum LSF常用命令、配置参数和环境变量的快速参考,便于管理员和用户日常查阅。
核心用户命令
作业提交和管理
| 命令 |
用途 |
常用选项 |
bsub |
提交批处理作业 |
-q 队列, -n 核心数, -J 作业名, -o 输出文件 |
bjobs |
查看作业状态 |
-a 所有作业, -l 详细信息, -u 用户, -p 挂起原因 |
bkill |
终止作业 |
-s 信号, -r 作业ID范围 |
bstop |
暂停作业 |
作业ID |
bresume |
恢复作业 |
作业ID |
bpeek |
查看作业输出 |
-f 实时跟踪 |
bhist |
作业历史 |
-l 详细, -a 所有 |
bacct |
作业会计 |
-l 详细资源使用 |
bmod |
修改作业参数 |
-q 改队列, -n 改核心数 |
集群信息查询
| 命令 |
用途 |
说明 |
bhosts |
查看主机状态 |
显示主机负载和可用资源 |
bqueues |
查看队列信息 |
显示队列状态和限制 |
lsid |
集群标识 |
显示集群名和Master主机 |
lsload |
主机负载 |
实时负载指标 |
lshosts |
主机配置 |
静态主机信息 |
lsinfo |
资源定义 |
显示可用资源类型 |
busers |
用户信息 |
用户和用户组 |
交互式任务
| 命令 |
用途 |
示例 |
lsrun |
远程执行 |
lsrun -m hostA command |
lsgrun |
组播执行 |
lsgrun -m "host[1-5]" uptime |
lsplace |
查找可用主机 |
lsplace -n 4 |
核心管理命令
集群管理 (lsadmin)
1
2
3
4
5
6
7
| lsadmin limstartup # 启动LIM
lsadmin limshutdown # 关闭LIM
lsadmin limrestart # 重启LIM
lsadmin reconfig # 重新加载lsf.shared/lsf.cluster
lsadmin ckconfig # 检查配置语法
lsadmin limlock # 锁定集群
lsadmin limunlock # 解锁集群
|
批处理管理 (badmin)
1
2
3
4
5
6
7
8
9
| badmin hstartup # 启动mbatchd
badmin hshutdown # 关闭mbatchd
badmin mbdrestart # 重启mbatchd
badmin reconfig # 重新加载lsb.*配置
badmin ckconfig # 检查配置语法
badmin qopen <queue> # 打开队列
badmin qclose <queue> # 关闭队列
badmin hopen <host> # 打开主机
badmin hclose <host> # 关闭主机
|
关键配置文件
lsf.conf - 全局配置
1
2
3
4
5
6
7
8
9
| LSF_TOP=/opt/ibm/lsf # 安装目录
LSF_CONF=/opt/ibm/lsf/conf/lsf.conf # 配置文件路径
LSF_ENVDIR=/opt/ibm/lsf/conf # 配置目录
LSF_SERVERDIR=/opt/ibm/lsf/10.1/linux3.10-glibc2.17-x86_64/etc
LSF_BINDIR=/opt/ibm/lsf/10.1/linux3.10-glibc2.17-x86_64/bin
LSF_LOGDIR=/opt/ibm/lsf/log # 日志目录
LSF_MAIL_PROG=/usr/bin/mail # 邮件程序
LSB_MAILTO=lsfadmin # 默认收件人
LSF_MASTER_LIST="master01 master02" # 主控列表
|
lsb.params - 批处理参数
1
2
3
4
5
6
7
| MBD_SLEEP_TIME=10 # mbatchd调度间隔(秒)
JOB_ACCEPT_INTERVAL=1 # 作业接受间隔(秒)
MAX_JOB_NUM=100000 # 最大作业数
DEFAULT_QUEUE=normal # 默认队列
MAX_SBD_FAIL=3 # sbatchd失败重试
PREEMPTION_POLICY=user_grp # 抢占策略
JOB_TERMINATE_INTERVAL=10 # 作业终止间隔
|
lsb.queues - 队列配置模板
1
2
3
4
5
6
7
8
9
10
11
12
13
| Begin Queue
QUEUE_NAME = normal
PRIORITY = 30 # 队列优先级(0-100)
NICE = 20 # Unix nice值
USERS = all # 允许的用户
HOSTS = all # 允许的主机
RUN_WINDOW = () # 运行时间窗口
DESCRIPTION = Normal priority queue
RUNLIMIT = 24:00 # 运行时长限制
MEMLIMIT = 64G # 内存限制
CPULIMIT = 48:00 # CPU时间限制
PROCESSLIMIT = 256 # 进程数限制
End Queue
|
lsb.hosts - 主机配置
1
2
3
4
5
| Begin Host
HOST_NAME MXJ r15s r1m r15m tmp DISPATCH_WINDOW
compute01 20 - - - - ()
compute02 20 - - - - (5:18:00-8:00) # 时间窗口
End Host
|
lsb.users - 用户配置
1
2
3
4
5
6
7
8
9
10
11
12
| Begin UserGroup
GROUP_NAME USERS
admin (admin1 admin2)
developers (dev1 dev2 dev3)
End UserGroup
Begin User
USER_NAME MAX_JOBS SHARES MAX_PEND
admin 100 30 200
developers 50 20 100
default 20 10 50
End User
|
环境变量
核心环境变量
1
2
3
4
5
6
7
8
9
10
| LSF_ENVDIR # 配置文件目录
LSF_BINDIR # LSF命令目录
LSF_SERVERDIR # LSF守护进程目录
LSF_LOGDIR # 日志目录
LSB_JOBID # 当前作业ID(在作业脚本中可用)
LSB_JOBINDEX # 作业阵列索引
LSB_HOSTS # 分配的主机列表
LSB_MCPU_HOSTS # 主机和CPU分配
LSB_QUEUE # 作业所在队列
LSB_JOBNAME # 作业名称
|
设置环境
1
2
3
4
5
6
| # 在profile中设置
source /opt/ibm/lsf/conf/profile.lsf
# 或手动设置
export LSF_ENVDIR=/opt/ibm/lsf/conf
export PATH=$LSF_BINDIR:$PATH
|
资源需求字符串语法
select 选择表达式
1
2
3
4
5
6
7
8
9
10
11
| # 选择有足够内存的主机
-R "select[mem>8000]"
# 选择特定类型主机
-R "select[type==linux]"
# 组合条件
-R "select[mem>16000 && tmp>10000]"
# 使用资源
-R "select[gpu>0]"
|
rusage 资源使用
1
2
3
4
5
6
7
8
| # 请求每进程内存
-R "rusage[mem=4000]"
# 请求临时空间
-R "rusage[tmp=10000]"
# 请求许可证
-R "rusage[license_tool=1]"
|
span 分布策略
1
2
3
4
5
6
7
8
| # 所有进程在同一主机
-R "span[hosts=1]"
# 每主机固定进程数
-R "span[ptile=16]"
# 平衡分布
-R "span[slots]"
|
作业状态码
| 状态 |
含义 |
说明 |
| PEND |
Pending |
挂起等待调度 |
| RUN |
Running |
正在运行 |
| DONE |
Done |
成功完成 |
| EXIT |
Exited |
异常退出 |
| SSUSP |
System Suspended |
系统挂起 |
| USUSP |
User Suspended |
用户挂起 |
| PSUSP |
Pending Suspended |
挂起作业被暂停 |
| WAIT |
Waiting |
等待依赖满足 |
| ZOMBI |
Zombie |
僵尸状态 |
常用bsub选项速查
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
| # 基本提交
bsub ./job.sh
# 队列和资源
bsub -q normal -n 16 ./job.sh
# 内存请求
bsub -R "rusage[mem=8000]" ./job.sh
# 作业名称和输出
bsub -J "my_job" -o output.%J -e error.%J ./job.sh
# 作业依赖
bsub -w "done(12345)" ./next_job.sh
# 作业阵列
bsub -J "array[1-100]" ./process.sh
# 并行作业
bsub -n 32 -R "span[ptile=16]" mpirun ./mpi_app
# 交互式作业
bsub -Is bash
# 邮件通知
bsub -u user@example.com -N ./long_job.sh
# 时间限制
bsub -W 2:00 ./short_job.sh # 2小时墙钟时间
# GPU作业
bsub -gpu "num=2" ./cuda_app
|
常用bjobs选项速查
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
| # 查看当前作业
bjobs
# 所有作业(包括历史)
bjobs -a
# 特定用户
bjobs -u username
# 详细信息
bjobs -l 12345
# 挂起原因
bjobs -p
# JSON输出
bjobs -json
# 自定义格式
bjobs -o "jobid user stat queue exec_host"
# 宽格式输出
bjobs -w
|
日志文件位置
| 日志文件 |
内容 |
位置 |
| lim.log.主机名 |
LIM日志 |
$LSF_LOGDIR/ |
| res.log.主机名 |
RES日志 |
$LSF_LOGDIR/ |
| mbatchd.log.主机名 |
mbatchd日志 |
$LSF_LOGDIR/ |
| mbschd.log.主机名 |
mbschd调度日志 |
$LSF_LOGDIR/ |
| sbatchd.log.主机名 |
sbatchd日志 |
$LSF_LOGDIR/ |
| lsb.events |
作业事件日志 |
$LSF_LOGDIR/ |
| lsb.acct |
作业会计日志 |
$LSF_LOGDIR/ |
端口配置
1
2
3
4
5
| # lsf.conf中配置
LSF_LIM_PORT=7869 # LIM端口
LSB_MBD_PORT=6878 # mbatchd端口
LSB_SBD_PORT=6879 # sbatchd端口
LSF_AUTH_DAEMONS=9988 # 认证端口
|
许可证管理
1
2
3
4
5
6
7
8
| # 查看许可证资源
lsinfo -R
# 提交需要许可证的作业
bsub -R "rusage[vcs_license=1]" ./simulation
# 查看许可证使用
bjobs -R "rusage[vcs_license>0]"
|
故障排查速查
检查集群健康
1
2
3
4
5
| lsid # 集群基本信息
badmin showstatus # mbatchd状态
lsadmin limstatus # LIM状态
bhosts # 主机状态
bqueues # 队列状态
|
查看作业问题
1
2
3
4
| bjobs -p 12345 # 挂起原因
bhist -l 12345 # 作业历史
bacct -l 12345 # 资源使用
bpeek 12345 # 查看输出
|
日志检查
1
2
| tail -f $LSF_LOGDIR/mbatchd.log.master # mbatchd日志
tail -f $LSF_LOGDIR/lsb.events # 作业事件
|
性能调优参数
1
2
3
4
5
6
| # lsb.params
MBD_SLEEP_TIME=10 # 调度周期,降低减少延迟
SBD_SLEEP_TIME=30 # sbatchd报告周期
JOB_INCLUDE_POSTPROC=Y # 后处理脚本支持
MAX_JOB_ARRAY_SIZE=10000 # 最大作业阵列大小
PREEMPT_FOR=RUNLIMIT|MEMLIMIT # 抢占触发条件
|
快速参考卡片
新用户5分钟上手
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| # 1. 提交作业
bsub ./my_script.sh
# 2. 查看状态
bjobs
# 3. 查看输出
bpeek <JOB_ID>
# 4. 终止作业
bkill <JOB_ID>
# 5. 查看历史
bhist
|
管理员日常检查
1
2
3
4
5
6
| # 早晨检查清单
lsid # 集群运行?
badmin showstatus # Master健康?
bhosts | grep -v ok # 有问题主机?
bjobs -p | head # 为什么挂起?
tail $LSF_LOGDIR/mbatchd.log.* # 有错误?
|
总结
本参考文档涵盖了LSF的核心命令、配置参数和常用模式。建议将常用命令添加到shell别名或快速启动脚本中,以提高日常工作效率。
完整的命令参考请查阅LSF命令参考手册。
参考资源:
Support the Creator
If you found this article helpful, consider supporting.