jservice#

服务进程#

jservice - AIP 的作业状态服务 (JSERVICE)

概要#

CB_SERVDIR/jservice [ -h ] [ -V ] [ -d env_dir] [ -debug_level]

描述#

JSERVICE 是一个运行在 AIP Master 主机上的服务器,仅提供“bjobs”命令的作业状态信息。

在作业吞吐量极高的环境中,它可以减轻 AIP 调度程序 cbsched 的负担,从而使 cbsched 有带宽来调度作业。

在作业吞吐量极高的环境中,还建议禁用 cbcrond,方法是在 /opt/skyformai/etc/jservice.yaml 中添加参数“cbcrond_enabled: no”。

jservice 服务由配置文件 /opt/skyformai/etc/jservice.yaml 控制。默认情况下,该服务未启用,即 该服务未运行。

要启用它,请在 jservice.yaml 中添加参数“jservice_enabled: yes”,然后在 AIP 主服务器上重启守护进程 cbjm,方法如下: 重启整个 AIP 服务:“systemctl restart aip”,或 重启 cbjm:“csadmin jmrestart”。

启用后,命令“bjobs”(cjobs 的符号链接)将开始联系 jservice 获取作业信息,而不是从 AIP 调度程序 cbsched 获取作业状态。

配置文件 /opt/skyformai/etc/jservice.yaml#

jservice 的行为由配置文件 /opt/skyformai/etc/jservice.yaml 控制。该文件包含以下参数:

jservice_enabled

值为“yes”表示 jservice 由 cbjm 在 Master 主机上自动启动。默认情况下,该参数为“no”,即禁用。

cbcrond_enabled

值为“yes”表示 cbcrond 由 cbjm 在 Master 主机上自动启动。默认情况下,该参数为“yes”。

jobinfo_interval

jservice 与 cbsched 同步作业状态的时间间隔(以秒为单位)。默认情况下,间隔为 30 秒。同步的数据来自cbsched定期输出的流数据,存放在/tmp/.aipestream下。 cbsched 输出的流数据的间隔由 cb.yaml 中的 estream_interval 参数指定,缺省为30秒。

jobclean_interval

jservice 执行作业清理周期的时间间隔(以秒为单位)。这是 jservice 清理内存中已完成作业的时间,这些作业的时间超过“keep_finishjob_period”(见下文)。默认情况下,该值为 600,即 10 分钟。

keep_finishjob_period

jservice 将已完成作业保留在其内存中的时长(以秒为单位)。超过此时间后,已完成作业将从 jservice 的内存中删除。默认情况下,持续时间为 4 小时,即 14400。

max_requests_on_fork

每次处理收到作业信息请求时(fork一个子进程),在一个子进程中处理最多的请求数。缺省为10,即一个子进程会最多并行处理10个作业信息请求。 这个值最多不能超过256。每个子进程中使用线程(thread)并行处理请求,每个线程会占用一个CPU核,最佳实践是这个值应该是master 主机的总CPU核数减去5,即保留5个核给调度器和操作系统。

timing_level

如果需要在日志中输出每次fork子进程处理请求的时间,这个值需要设成 1。缺省:没有关于时间信息的日志。

警告

这个值设置后日志会有大量输出,建议一般环境把它注释。修改jservice.yaml后可以运行命令 csadmin jsrestart 重启jservice。

use_estream

是否使用AIP的扩展stream数据。不使用时定期的作业数据同步会对调度器产生一定负载。

缺省:no (不使用)

选项#

-h

将命令用法打印到标准错误输出 (stderr) 并退出。

-V

将 AIP 发行版本打印到标准错误输出 (stderr) 并退出。

-d env_dir

从目录 env_dir 读取 jservice.yaml,而不是从

默认目录 /etcCB_ENVDIR 环境变量指定的目录读取。

-debug_level

设置调试级别(debug_level)。有效值为 2。如果指定,JSERVICE 将以调试模式运行。在调试模式下,服务器在前台运行,并将日志打印到标准错误输出 (stderr)。

文件#

CB_ENVDIR/jservice.yamlCB_ENVDIR/cb.yaml (cb.yaml)

控制#

只有集群管理员可以控制jservice。

重启命令:csadmin jsrestart

配置参数jservice.yaml修改后生效:csadmin jsreconfig