配置 mbatchd 以使用多线程

在支持线程编程的 UNIX 平台上,您可以更改缺省 mbatchd 行为,以在使用 bjobs 命令时使用多线程并提高查询请求的性能。 多线程对于具有许多作业和频繁查询请求的繁忙集群很有用。 这可能会间接提高总体 mbatchd 性能。

关于本任务

缺省情况下, mbatchd 使用 lsf.conf 文件中的参数 LSB_MBD_PORT 定义的端口,或者在系统服务数据库中查找端口号以与 LIM 和作业请求命令进行通信。

它使用此端口号来接收来自客户机的查询请求。

对于接收到的每个查询服务请求, mbatchd 会派生一个子代 mbatchd 来为该请求提供服务。 每个子 mbatchd 都将处理请求,然后退出。

mbatchdlsf.conf 文件中具有由参数 LSB_QUERY_PORT 指定的专用端口时,它会派生子 mbatchd ,然后创建线程以处理 bjobs 查询请求。

一旦 mbatchd 派生了子代 mbatchd,子代 mbatchd 就会接管并侦听端口以处理更多 bjobs 查询请求。 对于每个查询请求,子级 mbatchd 会创建一个线程来处理该请求。

如果在 lsf.conf中指定 LSB_QUERY_ENH=Y ,那么批处理查询多线程将扩展到除以下命令以外的所有 mbatchd 查询命令:

  • bread
  • bstatus
  • tspeek

mbatchd 继续侦听由 LSB_QUERY_PORT 指定的端口号,并创建用于服务请求的线程,直到作业状态更改,提交新作业或在 lsb.params 中的 MBD_REFRESH_TIME 中指定的时间过去为止。 对于已更改状态的暂挂作业 (例如,由自动孤立作业终止功能导致的从 PEND 到 EXIT) ,将仅根据 MBD_REFRESH_TIME 参数配置的时间来创建新的子 mbatchd

指定时间间隔 (以秒计) , mbatchd 将派生新的子代 mbatchd 以处理查询请求,从而使发送回客户机的信息保持更新。 子 mbatchd 处理创建线程的查询请求。

MBD_REFRESH_TIME 具有以下语法:

MBD_REFRESH_TIME= [min_refresh_time]

其中 min_refresh_time 定义子代 mbatchd 处理查询将停留的最短时间 (以秒计)。 有效范围为 0-300。 缺省值为 5 秒。

  • If MBD_REFRESH_TIME is < 分钟刷新时间, the child mbatchd exits at MBD_REFRESH_TIME even if the job changes status or a new job is submitted before MBD_REFRESH_TIME expires.
  • 如果 MBD_REFRESH_TIME> min_refresh_time
    • 如果作业在 min_refresh_time 之前更改了状态或提交了新作业,那么子 mbatchd 将在 min_refresh_time 退出
    • 当作业更改状态或提交新作业时,子 mbatchd 将在 min_refresh_time 后退出
  • 如果 MBD_REFRESH_TIME> min_refresh_time ,并且未提交任何作业更改状态或新作业,那么子代 mbatchd 将在 MBD_REFRESH_TIME 退出

min_refresh_time 的缺省值为 10 秒。

如果将多线程查询支持扩展至批处理查询请求 (通过在 lsf.conf中指定 LSB_QUERY_ENH=Y ) ,那么在集群中运行以下任何命令时,子代 mbatchd 也将退出:

  • bconf
  • badmin reconfig
  • badmin 命令,用于更改队列的状态 (badmin qopenbadmin qclosebadmin qactbadmin qinact)
  • 用于更改主机状态的 badmin 命令 (badmin hopenbadmin hclose)
  • badmin perfmon start

如果使用 bjobs 命令而未获取最新信息,那么您可能希望减小 lsb.params 中 MBD_REFRESH_TIME 或 min_refresh_time 的值,以使后续作业查询可能获取新提交的作业信息。

注: 降低 MBD_REFRESH_TIME 或 min_refresh_time 的值会增加 mbatchd 上的负载,并可能对性能产生负面影响。

过程

  1. 通过在 lsf.conf中设置 LSB_QUERY_PORT ,为 mbatchd 指定查询专用端口。
  2. 可选: 通过在 lsb.params中设置 MBD_REFRESH_TIME 来设置时间间隔,以指示何时派生新的子代 mbatchd 。 MBD_REFRESH_TIME 的缺省值为 5 秒,有效值为 0-300 秒。
  3. 可选: lsb.params 中使用 NEWJOB_REFRESH=Y 使子级 mbatchd 能够从父级 mbatchd获取最新的新作业信息。