用于修改执行前和执行后处理的配置

配置参数通过以下方法修改执行前和执行后处理行为的各个方面:

  • 在执行后处理完成之前阻止新作业启动
  • 控制执行后处理可运行的时间长度
  • 指定用于运行执行前和执行后命令的用户帐户
  • 控制预执行重试次数
  • 确定是否应将提供发布执行输出详细信息的电子邮件发送给提交作业的用户。 更多详情,请参阅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报告作业完成状态 DONEEXIT 。 这将导致 LSF 释放与该作业相关联的资源,从而允许新作业在执行主机上启动,然后再从先前作业完成执行后处理。

在某些情况下,您可能希望防止新作业与执行后处理重叠。 可以在应用程序级别或作业级别配置阻止新作业在执行后处理完成之前启动。

在作业级别, bsub -w 选项允许您指定作业依赖关系; 关键字 post_donepost_err 导致 LSF 在启动另一个作业之前等待执行后处理完成。

在应用程序级别:

文件

参数和语法

描述

lsb.applications

lsb.params

JOB_INCLUDE_POSTPROC=Y

  • 允许在 LSF 报告作业完成状态 DONEEXIT 之前完成执行后处理

  • 阻止新作业在主机上启动,直到在该主机上完成执行后处理


  • sbatchd 将作业完成状态 (DONEEXIT) 和执行后处理状态 (POST_DONEPOST_ERR) 同时发送到 mbatchd
  • 作业保持处于 RUN 状态并保留其作业槽,直到执行后处理完成为止
  • 作业重新排队在完成执行后处理后发生 (如果需要) ,而不是在作业本身完成时发生
  • 对于作业历史记录和作业记帐,作业 CPU 和运行时间包括执行后处理 CPU 和运行时间
  • 作业控制命令 bstopbkillbresume 在执行后处理期间无效
  • 如果主机在可重新运行的作业的执行后处理期间变得不可用,那么 mbatchd 会将该作业视为仍处于 RUN 状态,并重新运行该作业
  • LSF 在执行后处理期间不会抢占作业

用于修改执行后处理时间的配置

在应用程序级别配置了控制执行后处理可运行的时间长度。

文件

参数和语法

描述

lsb.applications

lsb.params

JOB_POSTPROC_TIMEOUT=分钟

  • 指定执行后处理可以运行的时间长度 (以分钟计)。

  • 指定的值必须大于零。

  • 如果执行后处理花费的时间超过指定的值,那么 sbatchd 会报告执行后失败-状态为 POST_ERR。 在 UNIX 和 Linux上,它会终止作业的预执行进程的整个进程组。 在 Windows 上,只有在超时到期时才会终止预执行命令的父进程,不会终止预执行命令的子进程。

  • 如果 JOB_INCLUDE_POSTPROC=Ysbatchd 终止执行后进程组,那么执行后处理 CPU 时间设置为零,并且作业的 CPU 时间不包括执行后 CPU 时间。


用于修改执行前和执行后处理用户帐户的配置

指定在系统级别配置运行执行前和执行后命令的用户帐户。 缺省情况下,执行前和执行后命令都在提交作业的用户的帐户下运行。

文件

参数和语法

描述

lsf.sudoers

LSB_PRE_POST_EXEC_USER

=用户名

  • 指定用于运行执行前和执行后命令的用户帐户 (仅限 UNIX)

  • 此参数仅适用于在队列级别配置的执行前和执行后命令; 在应用程序或作业级别定义的执行前命令在提交作业的用户的帐户下运行

  • 如果执行前或执行后命令在 UNIX 主机上执行需要 root 许可权的特权操作,请指定值 root

  • 必须在集群中的所有 UNIX 主机上编辑 lsf.sudoers 文件,并指定相同的用户帐户


用于控制预执行重试次数的配置

缺省情况下,如果作业预执行失败,那么 LSF 会自动重试该作业。 作业保留在队列中,缺省情况下会重试 5 次预执行,以最大程度地降低对性能和吞吐量的任何影响。

限制在队列级别 (lsb.queues) 和应用程序级别 (lsb.applications) 配置集群范围 (lsb.params) 的 LSF 重试作业预执行的次数。 在 lsb.applications overrides lsb.queueslsb.queues overrides lsb.params 配置中执行前重试。


配置文件

参数和语法

行为

lsb.params

LOCAL_MAX_PREEXEC_RETRY=整数

  • 控制尝试在本地集群上执行作业的预执行命令的最大次数。

  • 指定大于 0 的整数

    缺省情况下,重试次数不受限制。

MAX_PREEXEC_RETRY=整数

  • 控制在远程集群上尝试作业执行前命令的最大次数。

  • 指定大于 0 的整数

    缺省情况下,重试次数为 5。

REMOTE_MAX_PREEXEC_RETRY=整数

  • 控制在远程集群上尝试作业执行前命令的最大次数。

    等效于 MAX_PREEXEC_RETRY

  • 指定大于 0 的整数

    缺省情况下,重试次数为 5。

lsb.queues

LOCAL_MAX_PREEXEC_RETRY=整数

  • 控制尝试在本地集群上执行作业的预执行命令的最大次数。

  • 指定大于 0 的整数

    缺省情况下,重试次数不受限制。

MAX_PREEXEC_RETRY=整数

  • 控制在远程集群上尝试作业执行前命令的最大次数。

  • 指定大于 0 的整数

    缺省情况下,重试次数为 5。

REMOTE_MAX_PREEXEC_RETRY=整数

  • 控制在远程集群上尝试作业执行前命令的最大次数。

    等效于 MAX_PREEXEC_RETRY

  • 指定大于 0 的整数

    缺省情况下,重试次数为 5。

lsb.applications

LOCAL_MAX_PREEXEC_RETRY=整数

  • 控制尝试在本地集群上执行作业的预执行命令的最大次数。

  • 指定大于 0 的整数

    缺省情况下,重试次数不受限制。

MAX_PREEXEC_RETRY=整数

  • 控制在远程集群上尝试作业执行前命令的最大次数。

  • 指定大于 0 的整数

    缺省情况下,重试次数为 5。

REMOTE_MAX_PREEXEC_RETRY=整数

  • 控制在远程集群上尝试作业执行前命令的最大次数。

    等效于 MAX_PREEXEC_RETRY

  • 指定大于 0 的整数

    缺省情况下,重试次数为 5。


配置执行前重试时,如果作业执行前失败并以非零值退出,那么执行前重试次数将设置为 1。 达到预执行重试限制时,将暂挂处于 PSUSP 状态的作业。

重试预执行的次数包括队列级别,应用程序级别和作业级别的预执行命令规范。 配置执行前重试时,如果作业的队列级执行前重试时间 + 应用程序级执行前重试时间的总和大于执行前重试参数的值,或者如果其队列级执行前重试时间 + 作业级执行前重试时间的总和大于执行前重试参数的值,那么将暂挂作业。

当 LSF 重新启动并重新配置时,将恢复执行前重试限制。 LSF 在 lsb.events中重放 PRE_EXEC_START 或 JOB_STATUS 事件中的执行前重试限制。

用于在作业达到执行前重试限制后定义其缺省行为的配置

缺省情况下,如果 LSF 在本地集群上重试作业的执行前命令并达到执行前重试阈值 ( lsb.paramslsb.queueslsb.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 = 暂挂 | 退出

  • 指定已达到最大执行前重试限制的作业 (在本地集群上) 的缺省行为。
  • 如果设置为 SUSPEND ,那么将暂挂作业并将其状态设置为 PSUSP。

    如果设置为 EXIT ,那么作业状态将设置为 EXIT ,并且退出代码与上次执行前失败退出代码相同。

    缺省情况下,作业处于暂挂状态。

lsb.queues

LOCAL_MAX_PREEXEC_RETRY_ACTION = 暂挂 | 退出

  • 指定已达到最大执行前重试限制的作业 (在本地集群上) 的缺省行为。
  • 如果设置为 SUSPEND ,那么将暂挂作业并将其状态设置为 PSUSP。

    如果设置为 EXIT ,那么作业状态将设置为 EXIT ,并且退出代码与上次执行前失败退出代码相同。

    缺省情况下,未定义此值。

lsb.applications

LOCAL_MAX_PREEXEC_RETRY_ACTION = 暂挂 | 退出

  • 指定已达到最大执行前重试限制的作业 (在本地集群上) 的缺省行为。
  • 如果设置为 SUSPEND ,那么将暂挂作业并将其状态设置为 PSUSP。

    如果设置为 EXIT ,那么作业状态将设置为 EXIT ,并且退出代码与上次执行前失败退出代码相同。

    缺省情况下,未定义此值。