> For the complete documentation index, see [llms.txt](https://baiyongan.gitbook.io/lsf-handbook/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://baiyongan.gitbook.io/lsf-handbook/part-ii-ji-chu-cao-zuo-pian/user_fundations/inside_workload_management/job_lifecycle.md).

# 作业生命周期

LSF 作业经历几种状态，从作业提交开始，到调度，执行和最终返回作业结果。

![an LSF job lifecycle](https://www.ibm.com/support/knowledgecenter/SSWRJV_10.1.0/lsf_foundations/job_cycle_new.jpg)

## 1. 提交一个作业

您可以使用 **bsub** 命令从 LSF 客户端或服务器提交作业。

如果在提交作业时未指定队列，则该作业将提交到默认队列。

作业在等待调度时被排在队列中。 等待的作业处于 PEND 状态。 如果在配置文件lsb.params中定义了 **MAX\_INFO\_DIRS** 参数，则该作业将保存在 LSF\_SHAREDIR/cluster\_name/logdir/info/ 目录中的作业文件中，或者在其子目录之一中。

* **作业 ID**

  提交作业时，LSF 为每个作业分配唯一的作业 ID。
* **作业名**

  您还可以使用 **bsub**的 **-J** 选项为作业分配一个任意名称。 与作业 ID 不同，作业名称不一定是唯一的。

## 2. 调度该作业

* 1 主批处理守护程序（**mbatchd**）查看队列中的作业，然后将要调度的作业，发送到主批处理调度程序守护程序（**mbschd**）。 作业以预设的时间间隔进行调度（由配置文件 lsb.params 中的参数 **JOB\_SCHEDULING\_INTERVAL** 定义）。
* 2 **mbschd** 根据以下内容评估作业并制定计划决策：
  * 作业优先级
  * 调度策略
  * 可用资源
* 3 **mbschd** 选择作业可以运行的最佳主机，并将其决策发送回 **mbatchd**。资源信息由主负载信息管理器（LIM）以预设的时间间隔，从服务器主机上的 LIM 上收集。 主 LIM 将此信息传达给 **mbatchd**，后者又将其传达给 **mbschd** 以支持调度决策。

## 3. 分配该作业

**mbatchd** 收到调度决策后，便立即将作业分配给主机。

## 4. 运行该作业

从属批处理守护程序（**sbatchd**）具有以下功能：

* 1 从 **mbatchd** 接收请求。
* 2 为作业创建一个子 **sbatchd** 。
* 3 创建执行环境。
* 4 通过使用远程执行服务器（res）启动作业。

  LSF 将执行环境从提交主机复制到执行主机：

  * 作业所需的环境变量
  * 作业开始运行的工作目录
  * 其他与系统有关的环境设置
    * 在 UNIX 和 Linux 上，资源限制和 umask
    * 在 Windows，桌面和 Windows 根目录

      作业在提交该作业的用户帐户下运行，并且状态为 RUN。

## 5. 返回结果

作业完成后，如果作业完成没有任何问题，则会被分配为 "DONE" 状态。 如果错误导致作业无法完成，则会为该作业分配 "EXIT" 状态。

**sbatchd** 传递作业信息，例如错误信息，并输出到 **mbatchd**。

## 6. 向客户发送 email

**mbatchd** 通过电子邮件将作业输出，作业错误和作业信息返回给提交主机。 使用 **bsub** 的 **-o** 和 **-e** 选项将作业输出和错误发送到文件。

作业报告通过电子邮件发送给 LSF 客户端，其中包括以下信息：

* 作业信息:
  * CPU 使用
  * 内存使用
  * 提交作业的帐户名称
* 作业输出
* 错误
