配置 mbatchd 以使用多线程
在支持线程编程的 UNIX 平台上,您可以更改缺省 mbatchd 行为,以在使用 bjobs 命令时使用多线程并提高查询请求的性能。 多线程对于具有许多作业和频繁查询请求的繁忙集群很有用。 这可能会间接提高总体 mbatchd 性能。
关于本任务
缺省情况下, mbatchd 使用 lsf.conf 文件中的参数 LSB_MBD_PORT 定义的端口,或者在系统服务数据库中查找端口号以与 LIM 和作业请求命令进行通信。
它使用此端口号来接收来自客户机的查询请求。
对于接收到的每个查询服务请求, mbatchd 会派生一个子代 mbatchd 来为该请求提供服务。 每个子 mbatchd 都将处理请求,然后退出。
当 mbatchd 在 lsf.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 qopen, badmin qclose, badmin qact和 badmin qinact)
- 用于更改主机状态的 badmin 命令 (badmin hopen 和 badmin hclose)
- badmin perfmon start
如果使用 bjobs 命令而未获取最新信息,那么您可能希望减小 lsb.params 中 MBD_REFRESH_TIME 或 min_refresh_time 的值,以使后续作业查询可能获取新提交的作业信息。
过程
- 通过在 lsf.conf中设置 LSB_QUERY_PORT ,为 mbatchd 指定查询专用端口。
- 可选: 通过在 lsb.params中设置 MBD_REFRESH_TIME 来设置时间间隔,以指示何时派生新的子代 mbatchd 。 MBD_REFRESH_TIME 的缺省值为 5 秒,有效值为 0-300 秒。
- 可选: 在 lsb.params 中使用 NEWJOB_REFRESH=Y 使子级 mbatchd 能够从父级 mbatchd获取最新的新作业信息。