LSF架构图详解
提交作业的运行流程:
1、通过busb或者lsb_submit()接口提交作业到LSF。
2、为了访问LSF基础服务,提交的作业将继续通过包含LSF基础库信息的LSBLIB到达LIM。
3、LIM服务将作业的信息传递给集群的MAster LIM,各个节点上的LIM服务通过定期收集内置的12个负载索引,并将负载信息传递给 Master LIM。
4、Master LIM决定运行作业的最佳节点,并将信息返回给提交作业的主机LIM服务。
5、选择运行作业的节点信息将再次通过LSF 批处理库进行传递。
6、需要运行该作业的主机信息将返回给bsub或者lsb_submit。
7、为了进入批处理系统,bsub或者lsb_submit将作业发送给LSBLIB。
8、通过LSBLIB服务,作业被转交给在集群master 节点上的mbatchd服务。
9、mbatchd服务将作业放入合适的队列,等待合适的时机进行投递。在批处理队列中的用户作业由mbatchd(可以周期性的检查各候选节点的作业负载信息)进行控制。
10、当被执行的节点满足作业运行所需的资源时,mbatchd将会投递该作业,作业将被主机节点上的sbatchd接管。如果满足的节点有多个,mbatchd会挑选最优的节点。
11、当作业转交给sbatchd,sbatchd将会控制作业的运行,并将作业运行状态返回给mbatchd服务。sbatchd服务会创建一个子进程sbatchd去运行作业。
12、子sbatchd服务将作业交给RES服务。
13、RES服务创建运行作业所需的环境变量。
14、作业在该环境变量下进行运行。
15、作业的结果将发送给邮件系统。
16、邮件系统将作业结果转发给用户。
LSF中几种服务进程的简介
LIM服务-Load Information Manager
运行在集群的每个节点
定义集群的配置
确认主节点
授权静态server端主机、动态server端主机和固定客户端主机
从/dev/kmem收集内置资源负载信息并转发给管理端的LIM服务
将master和slave节点中ELIM服务收集到的资源负载信息传给master LIM服务。
PIM服务-进程信息管理
- 运行在集群的每个节点
- 负责收集运行在主机上的每一个进程的信息
- 手机的信息用于:
- 通过SBD执行负载阈值
- 通过MBD计算fairshare
- 通过LIM服务自动启动
RES服务-Remote Execution Server
- 运行在集群的每隔节点
- 提供快速、透明、安全的远程交互式作业运行
- 通过禁用RES进程,可以阻止交互式作业的提交
SBD服务-Slave batch Daemon
- 运行在集群的每隔节点
- 从MBD接收作业请求
- 负责执行负载阈值
- 维持主机上的作业状态
- 启动Master节点的MBD服务
Master batch Daemon(MBD)
- 运行在集群上的管理点
- 负责提供用户查询服务(bjobs,bhosts,etc)
- 接收作业请求(bsub)
- 负责集群系统全部的作业状态
- 将master LIM服务上的资源负载信息和排队信息发送给MBSCHD进行调度
- 从MBSCHD接受调度指令并通过SBD服务将作业投递到指定的主机上
- 保持作业的事务文件
- 管理队列
MBSCHD服务-LSF Scheduling Daemon
- 运行在集群的管理节点
- 从MBD服务接收资源负载信息和作业排队信息
- 根据作业需求、策略、资源做出调度决定
- 发送调度指令给MBD进行作业投递
- 由主机节点上的MBD进程自动启动
- MBSCHD服务挂了,会自动重启新的MBSCHD进程
- 读取lsf.conf文件以获取环境信息
配置文件所影响的服务
影响LIM、MBD、MBSCHD服务的文件
lsf.conf
ego.conf(一般不用)
影响LIM服务的文件
lsf.shared
lsf.cluster.[clustername]
影响MBD的服务
- lsb.params
- lsb.hosts
- lsb.users
- lsb.serviceclasses
- lsb.queues
- lsb.resources
- lsb.modules
- lsb.applications
lsb.* Configuration Files的功能