昇腾社区首页
中文
注册

进程启动配置文件

以某应用进程启动为例,详细的进程启动配置内容如下,其中各参数项的含义请参考表1

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
test_app:
    bin_path: "/home/test_app"
    depends: []
    uid: 1000
    gid: 1000
    arguments: ["1", "0", "topic_name", "3", "0", "0", "0", "1", "0","__name:=listener"]
    env:
        env1: "xxx1"
        env2: "xxx2"
    restart: "on-failure"
    term_time_out: 10000
    is_force_term: false
    core_affinity: [1,2]
    res_group_name: "OTHER"
    nice: -10
    sharepool_groups:
        GroupName_A: alloc    # 代表有alloc write read free权限
        GroupName_B: rw       # 代表有write read free权限
        GroupName_C: ro       # 代表有read free权限
    cpuset: "AICPU/DEV1"

    # 各owner自定义字段,下面为DataMaster的扩展字段
    is_ros_node: true
    is_auto_boot: false
    is_reporting: true
表1 进程启动配置文件参数

参数类型

说明

test_app

应用名称,需保证全局唯一,用户可自定义。

  • 当应用是hiva Open节点时,需保证该名称和NodeName相同。
  • AppName中不能携带“#”字符。

bin_path

二进制路径,类型为字符串,需保证是绝对路径,必填项。

depends

应用启动时的依赖项,类型为列表,列表项为字符串,默认值为空。例如depends: ["TestApp1", "TestApp2"],列表项为其他应用的名称,表示启动时需依赖这些应用。

uid

应用uid信息,类型为整形,有效值为无符号整形(≥0的整数),uid为0时代表root,必填项。

gid

应用gid信息,类型为整形,有效值为无符号整形(≥0的整数),gid为0时代表root,必填项。

arguments

应用启动时的参数,类型为列表,列表项为字符串,默认值为空。例如arguments: ["1", "test"]。

env

环境变量信息,默认为空。

restart

当应用退出时是否重启,类型为字符串,有效值为no、on-failure、on-forever、on-until-succeed,默认值为no。

  • no:表示无论应用怎么退出,均不进行重启。
  • on-failure:表示当应用异常退出时,进行重启;在任意60s窗口期内对异常退出进程重拉5次,若60s内有第6次异常退出不再重拉。
  • on-forever:表示当应用异常退出时,进行重启。
  • on-until-succeed:非常驻进程标识,运行成功后退出,不再重启;重拉机制同on-failure。
  • on-until-succeed注意事项:
    • 非常驻进程必须配置此参数,常驻进程不允许配置此参数。
    • 将退出码为0作为非常驻进程正常退出标志。
    • 非常驻进程不允许依赖其他进程,即depends参数必须为空;若配置依赖,则管理面启动失败。

term_time_out

应用被终止时的超时时间,类型为整形,单位是ms,默认值为60000。

  • 当ProcMgr发送终止信号(15的信号)进行停止应用时,若过了时间应用还未被停止,则称为ProcMgr结束应用超时。
  • 该参数与is_force_term取值相关,详见“is_force_term”说明。

is_force_term

当应用结束失败时,是否需要ProcMgr强制应用退出,类型为bool,默认值为false。

  • 当is_force_term设为true时,一旦ProcMgr结束应用超时,强制应用退出(使用9的信号)。
  • 当is_force_term设为false时,不进行强制退出,向owner返回应用结束失败信息。

core_affinity

应用亲核属性设置,类型为列表,列表项为数字,数字代表核编号,默认值为空。例如core_affinity:[1, 2] : 应用进程绑定在核1、2上。

  • 亲核属性只能配置CtrlCPU划分的核编号,例如CtrlCPU为0-2,亲核属性只能配置0到2区间(包括0和2)中的核编号。
  • CtrlCPU划分查询方法cat /sys/fs/cgroup/cpuset/CtrlCPU/cpuset.cpus
  • 如果配置了cpuset组,则以cpuset组的cpuset.cpus限制范围生效,超出不生效。
说明:

如果配置了非CtrlCPU的配置,则进程启动失败。

res_group_name

应用所属资源组名称,类型为字符串,有效值为env.cfg中配置的其中一个,默认为空。

nice

配置APP进程的优先级,范围[-20, 19],默认值为0。

sharepool_groups

共享内存的进程组的权限配置。

  • 一个进程有且只能拥有一个组的alloc权限。
  • 只有数据面APP配置了才会生效(DataMaster管理的进程)。
  • 如果只配置了GroupName,但没有给该组配置权限,则默认该组无效。
  • 如果不配置该参数,应用进程有默认组的alloc权限。
说明:
  • alloc:代表有alloc、write、read、free权限。
  • rw:代表有write、read、free权限。
  • ro:代表有read、free权限。

cpuset

配置应用所属的cpuset,类型为字符串,有效值为系统提前创建的cpuset,默认为空。

is_ros_node

应用是否ros节点,类型为bool,默认值为false。如果是ros节点,应用默认通过Hiva Open框架上报运行状态给DataMaster,此时is_reporting的设置不起作用。

is_reporting

应用是否上报运行状态(running)给DataMaster,类型为bool,默认值为false。仅当is_ros_node设为false时,该参数生效。

  • 当is_reporting为true时,需要应用自己上报running状态给DataMaster。
  • 当is_reporting为false时,应用的running状态由ProcMgr上报给DataMaster(ProcMgr fork子进程后,检测到子进程启动后,上报应用running给owner,该上报时机相较于应用自己上报要早)。

is_auto_boot

是否随系统启动自启动应用。