执行前和执行后处理功能包括两种类型:
- 基于作业的执行前和执行后处理,适用于顺序作业并且仅在第一个执行主机上运行。
- 基于主机的执行前和执行后处理,适用于并行作业并在所有执行主机上运行。
- 保留无法在 LSF 中直接配置的资源,例如磁带驱动器和其他设备
- 除 LSF 直接支持的动作外,还做出作业启动决策
- 创建和删除作业的临时目录
- 根据预执行命令的退出码自定义调度
- 检查软件许可证的可用性
- 分配作业在 SMP 计算机上的特定处理器上运行
- 传输作业执行所需的数据文件
- 在作业执行前后修改系统配置文件
- 使用执行后命令清除执行前命令或作业留下的状态
任何可执行命令行都可以作为执行前或执行后命令。默认情况下,命令在与作业相同的用户帐户、环境、主目录和工作目录下运行。
当在应用程序配置文件或lsb.params中定义 JOB_INCLUDE_POSTPROC时,当作业处于 post exec 阶段(常规作业为 DONE 状态)时,该作业被视为处于 RUN 状态。
基于作业的执行前和执行后处理
可以在队列、应用程序和作业级别定义基于作业的预执行和执行后命令。
对于 UNIX 和 Linux,命令路径最多可包含 4094 个字符,对于 Windows,最多可包含 255 个字符,包括目录、文件名以及 %J (job_ID ) 和 %I ( index_ID ) 的扩展值。
当作业调整大小时,作业增长请求将被忽略。但是,可以处理作业缩减请求。无论哪种情况,LSF 都不会调用作业调整大小通知命令。
下图显示了基于作业的执行前和执行后处理的默认行为(未启用该功能):
![](https://i-blog.csdnimg.cn/blog_migrate/8948200a114557b0c389ab1357dc05b0.png)
![](https://i-blog.csdnimg.cn/blog_migrate/5200e5887e649494827abf6d6488887e.png)
下表提供了基于作业的执行前和执行后处理的范围:
适用性
|
细节
|
---|---|
操作系统 |
|
依赖关系 |
|
局限性 |
|
基于主机的执行前和执行后处理
基于主机的执行前和执行后处理与基于作业的执行前和执行后处理不同,它适用于并行作业(您也可以将此功能用于顺序作业)并且在所有执行主机上执行,而不仅仅是第一个执行主机。这样做的目的是在所有基于作业的预执行和其他依赖于基于主机的准备的预处理之前设置执行主机,并在基于作业的后执行和其他后处理之后清理执行主机。
此功能可以通过多种方式使用。例如:
- HPC 站点可以通过多种方式在实际启动作业之前检查系统运行状况,例如检查主机或节点状态、关键文件系统是否已挂载、infiniband 是否正在工作、所需的目录、文件、环境以及设置正确的用户权限等.)
- 管理员可以配置站点特定策略来运行基于主机的执行前和执行后处理,以设置对计算机节点的 ssh 访问。默认情况下,ssh 处于禁用状态。但是,通过基于主机的执行前和执行后处理,可以在作业生命周期期间启用对为作业分配的节点的 ssh 访问。这是在非第一执行主机上调试并行作业所必需的,并且不会影响整体集群安全策略。
- 管理员可以配置基于主机的执行前和执行后处理,以在每个主机上创建并随后删除临时工作目录。
您可以在应用程序级别和队列级别定义基于主机的执行前和执行后处理。还支持故障处理。
有两种方法可以为作业启用基于主机的执行前和执行后处理:
- 在 lsb.queues中配置HOST_PRE_EXEC和HOST_POST_EXEC。
- 在 lsb.applications中配置HOST_PRE_EXEC和HOST_POST_EXEC。
配置基于主机的执行前和执行后处理时,请注意以下事项:
- 仅 UNIX 支持基于主机的执行前和执行后处理。
- 基于主机的执行前和执行后处理不支持在输出中返回某些环境变量以及为作业设置这些环境变量。
- 如果作业处于基于主机的预执行处理阶段,sbatchd会拒绝任何不是终止信号的信号,并请求再次发送该信号。如果作业处于基于主机的执行后处理阶段,则无论JOB_INCLUDE_POSTPROC如何定义,作业信号都会被拒绝或忽略。
- 您不能将JOB_PREPROC_TIMEOUT或 JOB_POSTPROC_TIMEOUT的默认值用于基于主机的执行前和执行后处理。根据基于主机的执行前和执行后处理运行所需的时间配置一个值。
- 在基于主机的预执行处理完成之前,无法执行检查点。在此期间,sbatchd返回重试错误。
- 从 LSF 版本 9.1.2 开始,基于主机的执行前和执行后处理将不会在作业通过自动调整大小扩展到的已分配主机上执行。
- 基于主机的执行前和执行后处理将租入主机视为与本地主机相同。
- 如果将具有基于主机的执行前或执行后处理的作业分派到 Windows 主机,则该作业将失败,然后显示待处理原因。
- 由于基于主机的执行前和执行后处理未在作业级别定义,因此多集群转发和 XL作业不会获取本地队列和应用程序基于主机的执行前和执行后处理信息,而是遵循远程队列和应用程序配置。
- 仅 LSF 9.1.2 及后续版本支持基于主机的执行前和执行后处理功能。