用于修改执行前和执行后处理的配置
配置参数通过以下方法修改执行前和执行后处理行为的各个方面:
- 在执行后处理完成之前阻止新作业启动
- 控制执行后处理可运行的时间长度
- 指定用于运行执行前和执行后命令的用户帐户
- 控制预执行重试次数
- 确定是否应将提供发布执行输出详细信息的电子邮件发送给提交作业的用户。 更多详情,请参阅LSB_POSTEXEC_SEND_MAIL。
基于作业和主机 |
仅基于作业 |
|---|---|
lsb.applications 和 lsb.params 中的 JOB_INCLUDE_POSTPROC lsb.applications 和 lsb.params 中的 MAX_PREEXEC_RETRY lsb.applications 和 lsb.params 中的 LOCAL_MAX_PREEXEC_RETRY lsb.applications, lsb.queues和 lsb.params 中的 LOCAL_MAX_PREEXEC_RETRY_ACTION lsb.applications 和 lsb.params 中的 REMOTE_MAX_PREEXEC_RETRY lsf.conf 中的 LSB_DISABLE_RERUN_POST_EXEC lsb.applications 和 lsb.params 中的 JOB_PREPROC_TIMEOUT lsb.applications 和 lsb.params 中的 JOB_POSTPROC_TIMEOUT lsf.sudoers 中的 LSB_PRE_POST_EXEC_USER lsf.conf 中的 LSB_POSTEXEC_SEND_MAIL |
lsb.params 中的 PREEXEC_EXCLUDE_HOST_EXIT_VALUES |
有关各参数的详细信息,请参阅IBM Spectrum LSF配置参考。
JOB_PREPROC_TIMEOUT 旨在保护系统在执行前处理期间不挂起。 当 LSF 检测到执行前处理的运行时间超过 JOB_PREPROC_TIMEOUT 值 (缺省值为无限) 时, LSF 将终止执行。 因此, LSF 管理员应确保将 JOB_PREPROC_TIMEOUT 设置为比任何执行前处理所需的时间更长的值。 还应将 JOB_POSTPROC_TIMEOUT 设置为一个值,该值使基于主机的执行后处理有足够的时间来运行。
要在新作业可以启动时修改的配置
当作业完成时, sbatchd 会向 mbatchd报告作业完成状态 DONE 或 EXIT 。 这将导致 LSF 释放与该作业相关联的资源,从而允许新作业在执行主机上启动,然后再从先前作业完成执行后处理。
在某些情况下,您可能希望防止新作业与执行后处理重叠。 可以在应用程序级别或作业级别配置阻止新作业在执行后处理完成之前启动。
在作业级别, bsub -w 选项允许您指定作业依赖关系; 关键字 post_done 和 post_err 导致 LSF 在启动另一个作业之前等待执行后处理完成。
文件 |
参数和语法 |
描述 |
|---|---|---|
lsb.applications lsb.params |
JOB_INCLUDE_POSTPROC=Y |
|
- sbatchd 将作业完成状态 (DONE 或 EXIT) 和执行后处理状态 (POST_DONE 或 POST_ERR) 同时发送到 mbatchd
- 作业保持处于 RUN 状态并保留其作业槽,直到执行后处理完成为止
- 作业重新排队在完成执行后处理后发生 (如果需要) ,而不是在作业本身完成时发生
- 对于作业历史记录和作业记帐,作业 CPU 和运行时间包括执行后处理 CPU 和运行时间
- 作业控制命令 bstop, bkill和 bresume 在执行后处理期间无效
- 如果主机在可重新运行的作业的执行后处理期间变得不可用,那么 mbatchd 会将该作业视为仍处于 RUN 状态,并重新运行该作业
- LSF 在执行后处理期间不会抢占作业
用于修改执行后处理时间的配置
文件 |
参数和语法 |
描述 |
|---|---|---|
lsb.applications lsb.params |
JOB_POSTPROC_TIMEOUT=分钟 |
|
用于修改执行前和执行后处理用户帐户的配置
文件 |
参数和语法 |
描述 |
|---|---|---|
lsf.sudoers |
LSB_PRE_POST_EXEC_USER =用户名 |
|
用于控制预执行重试次数的配置
缺省情况下,如果作业预执行失败,那么 LSF 会自动重试该作业。 作业保留在队列中,缺省情况下会重试 5 次预执行,以最大程度地降低对性能和吞吐量的任何影响。
限制在队列级别 (lsb.queues) 和应用程序级别 (lsb.applications) 配置集群范围 (lsb.params) 的 LSF 重试作业预执行的次数。 在 lsb.applications overrides lsb.queues和 lsb.queues overrides lsb.params 配置中执行前重试。
配置文件 |
参数和语法 |
行为 |
|---|---|---|
lsb.params |
LOCAL_MAX_PREEXEC_RETRY=整数 |
|
MAX_PREEXEC_RETRY=整数 |
|
|
REMOTE_MAX_PREEXEC_RETRY=整数 |
|
|
lsb.queues |
LOCAL_MAX_PREEXEC_RETRY=整数 |
|
MAX_PREEXEC_RETRY=整数 |
|
|
REMOTE_MAX_PREEXEC_RETRY=整数 |
|
|
lsb.applications |
LOCAL_MAX_PREEXEC_RETRY=整数 |
|
MAX_PREEXEC_RETRY=整数 |
|
|
REMOTE_MAX_PREEXEC_RETRY=整数 |
|
配置执行前重试时,如果作业执行前失败并以非零值退出,那么执行前重试次数将设置为 1。 达到预执行重试限制时,将暂挂处于 PSUSP 状态的作业。
重试预执行的次数包括队列级别,应用程序级别和作业级别的预执行命令规范。 配置执行前重试时,如果作业的队列级执行前重试时间 + 应用程序级执行前重试时间的总和大于执行前重试参数的值,或者如果其队列级执行前重试时间 + 作业级执行前重试时间的总和大于执行前重试参数的值,那么将暂挂作业。
当 LSF 重新启动并重新配置时,将恢复执行前重试限制。 LSF 在 lsb.events中重放 PRE_EXEC_START 或 JOB_STATUS 事件中的执行前重试限制。
用于在作业达到执行前重试限制后定义其缺省行为的配置
缺省情况下,如果 LSF 在本地集群上重试作业的执行前命令并达到执行前重试阈值 ( lsb.params, lsb.queues或 lsb.applications中的LOCAL_MAX_PREEXEC_RETRY ) ,那么 LSF 将暂挂该作业。
已达到执行前重试限制的作业的此缺省行为是在队列级别 (lsb.queues) 和应用程序级别 (lsb.applications) 配置的集群范围 (lsb.params)。 lsb.applications overrides lsb.queues中指定的行为, lsb.queues 将覆盖 lsb.params 配置。
配置文件 |
参数和语法 |
行为 |
|---|---|---|
lsb.params |
LOCAL_MAX_PREEXEC_RETRY_ACTION = 暂挂 | 退出 |
|
lsb.queues |
LOCAL_MAX_PREEXEC_RETRY_ACTION = 暂挂 | 退出 |
|
lsb.applications |
LOCAL_MAX_PREEXEC_RETRY_ACTION = 暂挂 | 退出 |
|