2. 参数配置手册
2.1 应用配置参数表
2.1.1 app-parameters参数表
参数名称 |
含义 |
|---|---|
initial_status |
‘RUNNING’ / ‘INITIAL’ / ‘PAUSED’ |
main_router |
主路由模块名 |
default_idle_polls |
所属module的缺省的空闲轮询次数 |
is_cluster_admin |
|
default_sleep_count |
各模块sleep_count的默认值 |
global_directories |
全局目录列表,用于所属模块的读写数据量分类统计。(local/global/tmpfs) |
slot_group |
map形式的多节点的多module-slot配置,用于新增节点的slot自动创建。例:’{“module0”:n0,”module1”,n1}’ |
2.1.2 module-arguments参数表
| 参数名 | 标准环境变量 | 含义 |
|---|---|---|
| grpc_server | GRPC_SERVER | controld的服务端点(endpoint),${ip_addr}:${port},port缺省值为50051 |
| code_path | 模块代码的目录,通过容器的数据卷Volume映射到容器内/app/bin | |
| local_ip_index | LOCAL_IP_INDEX | hostname -I'返回IP地址列表,该参数指定列表中的第n个IP地址作为本机IP地址。 (agent中暂未使用?) |
| CLUSTER | 所在的集群名 (与CLUSTER_NAME、_CLUSTER的区别?) | |
| PLAT_MODULE_NAME | 当前module名称 | |
| MODULE_ID | module-id | |
| FROM_MODULE | module-name | |
| FROM_IP | from-ip | |
| SINK_MODULE | 缺省sink_module的名称 | |
| IS_SINGULARITY | 容器引擎为singularity或apptainer | |
| task_max_seconds | PLAT_TASK_MAX_SECONDS | 每个task运行中超时设置的秒数,若运行时间超过该时限,task运行中断,返回超时码124;全局超时返回123。 |
| task_min_seconds | PLAT_TASK_MIN_SECONDS | 每个task运行的最小秒数,若运行时间连续多次低于此值,则判定slot为GREEDY异常,并退出 |
| poll_interval_seconds | PLAT_POLL_INTERVAL_SECONDS | Slot 检查新任务的轮询间隔。slot睡眠并定期检查task可用,该参数指定以秒计的时间间隔,缺省值为6秒。 |
| max_idle_polls | PLAT_MAX_IDLE_POLLS | Slot 在退出前可进行的最大空闲轮询次数。slot退出前的最多睡眠次数。缺省值为100(10分钟) |
| dir_quota_gb | PLAT_DIR_QUOTA_GB | 标准流控参数,目录本身的容量配额限制。用于指定目录以GB计的最大空间。格式为: '{"/dir-1":10,"/dir-2":100}' |
| free_space_gb | PLAT_FREE_SPACE_GB | 标准流控参数,目录所在磁盘需要保留的最小空间。用于指定目录所在分区以GB计的最小保留空间。格式为'{"/dir-3":10,"/dir-4":100}' |
| heartbeat_seconds | PLAT_HEARTBEAT_SECONDS | 以秒计的心跳间隔,缺省值为60;若为非正整数,则禁用心跳操作 |
| output_text_size | PLAT_OUTPUT_TEXT_SIZE | task运行记录t_task_exec中,大文本字段(stdout/stderr/auxout)的最大字节数。缺省值为65535,最大值可以为10MB(for varchar) 或1GB(for text) |
| text_trunc_mode | PLAT_TEXT_TRUNC_MODE | HEAD'/'TAIL', default value is 'HEAD',头截断,保留末尾部分 |
| timezone_mode | HOST'/'UTC'/'NONE' | |
| slot_options | 逗号分隔的slot选项 | |
| - always_running | PLAT_ALWAYS_RUNNING | 设定slot一直运行,不主动退出(一般仅用于调试) |
| - reserved_on_exit | slot退出后,保留容器,以便排错。(docker-only,命令行去掉--rm) | |
| - tmpfs_workdir | TMPFS_WORKDIR | 用tmpfs文件系统存放工作目录/work(针对docker,解析后的命令行加上--tmpfs /work;针对singularity,解析后增加环境变量TMPFS_WORKDIR=yes) |
| - disable_local_mapping | 不生成本地根目录到容器内/local_data_root的映射 | |
| - disable_data_mapping | 不生成集群数据目录到容器内/cluster_data_root的映射 | |
| - slot_on_head | 在头节点上生成单个slot实例 |
2.1.3 module-parameters参数表
| 参数名 | 说明 |
|---|---|
| priority | 优先级(暂未使用) |
| key_group_regex | 从消息中提取分组的正则表达式 (改名为group_regex?) |
| key_group_index | 分组排序的编号 (改名为group_index?) |
| task_dist_mode | task分发模式,'HOST-BOUND'/'SLOT-BOUND'/'DEFAULT' |
| start_task | 给定初始消息,若为'FILE:{filename}',则将文件中每一行作为一个初始消息 |
| initial_task_status | task的初始状态,'READY'/'INITIAL' |
| initial_slot_status | slot的初始状态,'READY'/'OFF' |
| retry_rules | 基于退出码的重试规则"['exit_code_1:num_retries',...,'exit_code_n:num_retries']"。num_retries缺省值为1,退出码通配符为'*'。拟修改格式为{"exit_code_1":num_retries',...,"exit_code_n":num_retries} |
| slot_recoverable | 'yes',支持将出错后已退出的slot从'ERROR'设置为'READY',以支持slot级重试 (以slot_max_retries替换?,TIMED-OUT/GREEDY分别处理) |
| slot_max_retries | slot状态从'TIMED-OUT'设置为'READY'的重试次数(?) |
| slot_timeout_minutes | 若slot未正常启动,则一直处于'STARTING'状态。设置以分钟计的timeout,到期后将状态转换为'TIMEOUT'。缺省值为15分钟。对于不允许重复启动的slot实例(用GPU等),可设置较大值。 |
| task_global_timeout_scale | 若外部原因(slot异常退出等)导致task一直处于运行状态(状态码-3)。通过全局超时设置,恢复task状态码为123。该值为相对task_max_seconds的倍数,缺省值为2.0。全局退出设定返回码123。 拟改为task_timeout_scale_factor ? |
| router_index | 多主路由实例的应用中,指定当前module发给第n个主路由。缺省值为0,通常设置值>0,以指定特定main-router实例 |
| pod_id | 标识本module属于pod管理,若消息来源的pod也有相同的pod_id,则所有task标识为采用本地计算(task_dist_mode为HOST_BOUND) |
| task_dedup_cache_ttl_minutes | 任务去重缓存的生存时间,在高负载时需设置。设定重复task-id检测的cache过期时间(分钟数),缺省值为30分钟,清除时间为n+1分钟。避免出现同一task的多次分发。通常情况下,其时间需大于task_max_seconds的值。 |
| task_batch_size | 批量获取任务的数量。设置slot单批次读取的最大消息数,缺省值为1。针对运行时长在5秒以内的任务,可设置批量读取消息,避免读取频繁而导致server端过载、数据不一致。 |
| visible | 在流水线逻辑图中是否可见。缺省值为'yes' |
| task_id_in_headers | 'no'/'yes',该模块中task的headers中,包含task_id值。 |
| node_progress_gap | 标准流控参数,针对指定module同一组内node间运行同步,最快node与最慢node间的运行的task最大差值,其值为整数。在对应slot生成时,自动创建对应信号量,其名称为node_progress:${mod_name}:${hostname},初值为0。该参数格式示例为{"prefix1":4,"node_prefix2":6}。该参数拟替换为node_progress_max_gap? |
| vtask_role | 'head' / 'core' / 'tail',vtask处理中当前的角色,仅针对非路由模块有效。head是vtask处理的起始模块;tail是结束模块;core是算法模块。 |
| vtask_size | 标准流控参数,定义可同时处于就绪/运行状态的vtask 数量上限,在app解析时,创建对应信号量及初值。 用于全局vtask流控的信号量名为: vtask_size:${mod_name};用于SLOT-BOUND的vtask流控信号量名为: slot_vtask_size:${mod_name}:${slot_id}:${slot_seq};用于HOST-BOUND的vtask流控信号量名为: host_vtask_size:${mod_name}:${hostname} |
| vtask_size_sema_copy | 'no' / 'yes'。为vtask_size信号量生成一个拷贝,用于编程控制。拷贝信号量名称为原始信号量前加冒号:,初值与原始信号量相同。 |
2.1.4 task-headers标准参数表
| 参数名称 | 含义 |
|---|---|
| to_ip | 当前task的待处理主机ip |
| to_host | 当前task的待处理主机名(t_host主键) |
| from_ip | 生成task的主机ip |
| from_ip_last | 若from_module为主路由,主机ip |
| from_host | 生成task的主机名(t_host主键) |
| from_module | 生成task的模块名 |
| from_module_last | 若from_module为主路由,主路由之前的from_module |
| from_cluster | 跨集群应用的上一集群名 |
| to_slot | SLOT-BOUND模块中当前task的待处理slot_id |
| to_slot_index | 以本机seq表示的slot_id |
| repeatable | 缺省task在指定时间内不可重复分发,缺省值可通过module的task_cache_expired_minutes参数定制;在retry操作、特定场景下,需支持消息的重复分发,则设为该参数'yes' |
其中,from_ip、from_module、from_module_last等,由系统自动生成。
针对HOST-BOUND的模块,需在代码中设定to_host;或通过模块的pod_id相等来设定。
针对SLOT-BOUND的模块,需在代码中设定to_slot
task-header可自定义参数,其中 _开头的参数表示标准传递参数;_vtask_开头的参数为vtask参数,由系统维护。
2.2 资源配置参数表
2.2.1 cluster-parameters参数表
参数名称 |
含义 |
|---|---|
data_root |
容器内/cluster_data_root目录(改为data_root?) |
code_dir |
未使用 |
uname |
ssh登录用户名 |
port |
ssh登录用户名 |
pghost |
postgres连接信息,${pg_ip}[:${port}],缺省端口号5432 |
grpc_server |
controld连接信息,${controld_ip}[:${port}],缺省端口号50051 |
remote_pghost |
供跨集群应用远端路由连接的postgres的连接信息 |
remote_grpc_server |
供跨集群应用远端路由连接的controld连接信息 |
remote_check_mode |
‘ip’:精确IP比对,测试集群、同网段多集群;’subnet’:子网匹配,生产集群、跨网段部署。 |
initial_status |
‘ON’/’OFF’ |
2.2.2 host-parameters参数表
| 参数名称 | 含义 |
|---|---|
| uname | ssh登录用户名 |
| port | ssh的端口号 |
| node_slot | 该节点node-agent的slot号 |
| group_id | 该节点所属节点组的编号 |
| slurm_node | 在slurm调度系统中对应的节点编号 |
| reg_time | 在scalebox中注册时间 |
| slot_module_id | 在slurm调度系统中,node-agent的slurm module id |
| default_runtime | 缺省容器引擎,'docker'/'singularity'/'podman' |
| use_home_tmp | 针对不允许/tmp下运行程序的节点(I/O节点),以$HOME/tmp代替 /tmp作为远程启动slot的临时目录。 |
| ssh_cepher | 'aes128-gcm@openssh.com' / 'aes256-gcm@openssh.com' / 'chacha20-poly1305@openssh.com' |
2.2.3 slot-parameters参数表
| 参数名称 | 含义 |
|---|---|
| reg_time | 注册时间 |
| last_access | 最后访问时间 |
| group_prefix | slot的分组前缀,在HOST-BOUND模块中的分组slot |
2.3 环境变量参考
模块编程的标准环境变量表
| 环境变量名 | 说明 |
|---|---|
| ACTION_CHECK | 自定义准入控制脚本(check)的路径。若返回值为0,OK;非0,准入受限。 |
| ACTION_RUN | 自定义主算法脚本(run)的路径 |
| ACTION_SETUP | 自定义初始设置脚本(setup)的路径。若返回值为0,OK;非0,初始化失败,设置当前slot状态为ERROR。 |
| ACTION_TEARDOWN | 自定义结束退出脚本(teardown)的路径。过返回值为0,OK;非0,退出失败,设置当前slot为ERROR。 |
| APP_ID | |
| MODULE_ID | |
| SLOT_ID | |
| CLUSTER | CLUSTER |
| WORK_DIR | 本地工作目录,缺省为/work |
| LOG_LEVEL | 'info'/'debug'/'trace',trace原则上仅用于单模块调试、排错。 |
| LOCAL_IP | 本机IP地址 |
| FROM_IP | headers中已包含? |
| FROM_MODULE | headers中已包含? |
| SINK_MODULE | 路由应用的非路由模块指向路由模块;无路由应用指向下一个模块。 |
| GRPC_SERVER | server端的grpc地址,格式:server_name[:port],缺省port为50051。 |
| PGHOST | PGHOST, query job-attr-set from db |
| IS_SINGULARITY | IS_SINGULARITY |
| LOCAL_SHMDIR | 本地tmpfs下工作目录(/dev/shm) |
| LOCAL_TMPDIR | 本地/tmp下工作目录 |
| TMPDIR_GROUP | TMPDIR中分组号(数字) |
| TMPFS_WORKDIR | 本地工作目录设置使用tmpfs,以提高大文件加载性能 |
| SLOT_ROLE | ''/'group',组计算模式中的组slot,可跨节点获取组内所有task |
PLAT_ 开头的所有环境变量,用户程序无需访问。