IBM Spectrum LSF 核心守护进程详解
概述
IBM Spectrum LSF(原 Platform LSF)是一个高性能的分布式集群管理系统,其核心功能依赖于四个关键守护进程:lim、res、mbatchd 和 sbatchd。它们协同工作,实现资源监控、作业调度和任务执行。
1. LIM (Load Information Manager)
核心作用
资源监控与信息聚合
实时收集集群节点的负载数据并维护全局资源状态。
详细功能
- 资源监控
- 周期性采集指标(默认间隔 5 秒):
- CPU 使用率
- 内存占用
- 磁盘 I/O
- 运行的作业数量
- 通过
mbatchd将数据上报至主节点
- 周期性采集指标(默认间隔 5 秒):
- 存活检测
- 心跳机制:每 15 秒向主节点发送心跳信号
- 超时处理:300 秒未收到心跳则标记节点为不可用
- 配置同步
- 自动同步主节点的配置文件:
lsf.conf(集群参数)lsb.hosts(主机分组定义)
- 自动同步主节点的配置文件:
日志与排障
- 日志路径
/var/log/lsf/lim.log.<主机名> - 常见错误
LIM 007: Configuration checksum mismatch # 配置不一致 LIM 015: Host unreachable # 节点通信失败
2. RES (Remote Execution Server)
核心作用
作业执行与本地资源管理
在计算节点上启动、监控作业进程并处理任务生命周期。
关键功能
- 作业执行
- 调用本地 Shell 执行作业脚本
- 支持预处理(
LSF_JOB_PRE_INIT)和后处理脚本
- 资源隔离
- 使用
cgroups或ulimit限制资源:# 内存限制示例 cgcreate -g memory:/LSF/job_123 cgset -r memory.limit_in_bytes=4G /LSF/job_123
- 使用
- 信号处理
SIGSTOP:暂停作业(bstop)SIGCONT:恢复作业(bresume)SIGKILL:强制终止作业(bkill -r)
日志与排障
- 日志路径
/var/log/lsf/res.log.<主机名> - 典型问题
RES: Permission denied /tmp/lsf_${jobid} # 权限配置错误 RES: Exec format error # 脚本解释器路径错误
3. mbatchd (Master Batch Daemon)
核心作用
全局作业调度与管理
作为调度核心,管理作业队列并执行调度策略。
功能细节
- 作业调度
- 调度策略优先级:
- 队列优先级
- 作业提交时间
- 资源匹配度
- 动态负载均衡:
# 负载阈值配置示例(lsb.hosts) hostA ! (cpu>80 || mem>90)
- 调度策略优先级:
- 依赖管理
- 支持复杂依赖条件:
bsub -w "done(jobA) && ended(jobB)" ./script.sh
- 支持复杂依赖条件:
日志与排障
- 日志路径
/var/log/lsf/mbatchd.log.<主机名> - 关键日志条目
Dispatch job 12345 to hostA # 作业分发记录 Job 12345: PEND (No license) # 许可证不足
4. sbatchd (Slave Batch Daemon)
核心作用
计算节点作业代理
接收主节点指令并协调本地资源执行作业。
核心机制
- 资源预留
- 内存锁定:防止内存交换(
mlockall) - CPU 绑定:NUMA 感知的任务分配
- 内存锁定:防止内存交换(
- 状态上报
- 实时反馈作业状态:
START: 作业启动RUN: 运行中EXIT: 异常退出
- 实时反馈作业状态:
日志与排障
- 日志路径
/var/log/lsf/sbatchd.log.<主机名> - 常见错误
sbatchd: Failed to contact mbatchd # 主节点通信中断 sbatchd: Resource reservation failed # 资源不足
协作流程示例
作业提交流程
sequenceDiagram
participant User
participant mbatchd
participant sbatchd
participant res
participant lim
User->>mbatchd: bsub -n 4 ./job.sh
mbatchd->>mbatchd: 解析资源需求
mbatchd->>sbatchd: 分配作业到 hostA
sbatchd->>res: 执行作业脚本
res->>lim: 上报资源使用
lim->>mbatchd: 更新集群状态
mbatchd->>User: 返回 JobID
关键运维命令
进程管理
# 检查守护进程状态
ps -ef | grep -E 'lim|res|mbatchd|sbatchd'
# 重启服务
lsadmin limrestart # 重启 LIM
badmin mbdrestart # 重启 mbatchd
badmin hrestart # 重启整个集群
日志监控
# 实时查看调度决策
tail -f /var/log/lsf/mbatchd.log.*
# 筛选错误日志
grep -E 'ERROR|WARN' /var/log/lsf/*.log.*
故障排查指南
常见问题诊断
| 现象 | 检查点 | 解决措施 |
|---|---|---|
| 作业长时间 PEND | mbatchd 调度日志 |
调整队列优先级或资源阈值 |
| 作业启动失败 | res.log 权限/路径错误 |
验证执行脚本权限和环境变量 |
| 节点显示不可用 | lim.log 心跳状态 |
检查网络连接或手动重启 LIM |
| 资源分配冲突 | sbatchd.log 资源预留记录 |
检查主机资源配置或作业约束条件 |
提示:配置集中式日志存储(如 ELK 堆栈)可显著提升排障效率。
通过深入理解各守护进程的职责和协作机制,管理员可以有效优化集群性能并快速定位问题根源。
浙公网安备 33010602011771号