IBM Spectrum LSF 核心守护进程详解

概述

IBM Spectrum LSF(原 Platform LSF)是一个高性能的分布式集群管理系统,其核心功能依赖于四个关键守护进程:limresmbatchdsbatchd。它们协同工作,实现资源监控、作业调度和任务执行。


1. LIM (Load Information Manager)

核心作用

资源监控与信息聚合
实时收集集群节点的负载数据并维护全局资源状态。

详细功能

  • 资源监控
    • 周期性采集指标(默认间隔 5 秒):
      • CPU 使用率
      • 内存占用
      • 磁盘 I/O
      • 运行的作业数量
    • 通过 mbatchd 将数据上报至主节点
  • 存活检测
    • 心跳机制:每 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)和后处理脚本
  • 资源隔离
    • 使用 cgroupsulimit 限制资源:
      # 内存限制示例
      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)

核心作用

全局作业调度与管理
作为调度核心,管理作业队列并执行调度策略。

功能细节

  • 作业调度
    • 调度策略优先级:
      1. 队列优先级
      2. 作业提交时间
      3. 资源匹配度
    • 动态负载均衡:
      # 负载阈值配置示例(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 堆栈)可显著提升排障效率。

通过深入理解各守护进程的职责和协作机制,管理员可以有效优化集群性能并快速定位问题根源。

posted on 2025-04-17 14:17  LeeHang  阅读(114)  评论(0)    收藏  举报