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,而不是从
默认目录 /etc 或 CB_ENVDIR 环境变量指定的目录读取。
- -debug_level
设置调试级别(debug_level)。有效值为 2。如果指定,JSERVICE 将以调试模式运行。在调试模式下,服务器在前台运行,并将日志打印到标准错误输出 (stderr)。
文件#
CB_ENVDIR/jservice.yaml 和 CB_ENVDIR/cb.yaml (cb.yaml)
控制#
只有集群管理员可以控制jservice。
重启命令:csadmin jsrestart
配置参数jservice.yaml修改后生效:csadmin jsreconfig