部署参数表#
通用配置#
参数名 |
说明 |
默认值 |
备注 |
|---|---|---|---|
|
本机 ip。 |
|
选填。若不配置,将自动获取当前机器的 ip。 |
|
数据面总可用 CPU(单位: |
|
选填。yr_master 默认占用 |
|
部署路径(支持相对路径,或者绝对路径)。 |
|
选填。建议指定目录,并确保空目录(yr start 启动时未配置该参数将默认使用 |
|
是否使能多 master 部署。 |
无参 |
选填。开启后,etcd 集群 ip 和端口需要提前传入,一个节点最多允许拉起 1 个 master。 |
|
数据面总可用内存(单位:MB)。 |
|
选填(yr_master 默认 |
|
数据面标识。 |
内部生成 |
选填。如手动配置,请保证数据面 ID 唯一。 |
|
数据面数据系统可用内存(单位:MB)。 |
|
选填,yr_master 默认 |
|
控制面组件启动 IP、端口信息输出文件路径。 |
|
选填。默认输出在部署目录下,yr_agent 不需要配置。 |
|
是否打开 ds-worker 节点唯一。 |
无参 |
选填。 |
|
函数包 services.yaml 路径。 |
|
选填。建议配置绝对路径,并确保文件存在,否则可能无法正确加载函数元数据。 |
|
是否打开 function-proxy 节点唯一。 |
无参参 |
选填。 |
|
启动 master 节点。 |
无参 |
必填。yr_master 启动默认加此参数。 |
|
控制面组件启动 IP、端口信息。 |
|
部署从节点时必填,部署主节点时不填。优先级高于直接配置 etcd_ip、master_ip 等。 |
|
控制面组件 IP。 |
|
选填。若配置了 |
|
数据系统 ds-worker 预留 cpu 核数。 |
|
选填。 |
|
是否开启进程状态收集,记录日志。 |
|
选填,取值: |
|
进程状态收集间隔(s)。 |
|
选填。status_collect_enable 为 |
|
是否开启 trace。 |
|
选填,取值: |
|
是否开启 metrics。 |
|
选填,取值: |
|
metrics 配置,预期是 json 字符串。 |
|
选填,格式参照 metrics_config_file。 |
|
metrics 配置文件,预期是绝对路径。 |
|
选填。 |
|
设置拉取资源的周期(单位:ms)。 |
|
选填。 |
|
数据面自定义资源设置,预期是 json 字符串。 |
|
选填。 |
|
etcd 集群地址。 |
本机 IP |
选填。传入格式如 ip1,ip2(端口根据 etcd_port,etcd_peer_port 参数确定);或 ip1:port1,ip2:port2(peer 端口根据 etcd_peer_port 参数确定);或 ip1:port1:peer_port1,ip2:port2:peer_port2。 |
|
阻塞模式。 |
|
选填。启用阻塞模式时,部署脚本进程不会退出。 |
|
etcd 部署模式。 |
|
选填。取值 |
|
etcd key 前缀配置,用于多套集群对接同一个 etcd 集群。 |
|
选填。配置不能包含空格,建议不同的集群使用不同的前缀。 |
|
数据面自定义标签。 |
|
选填。 |
node_id 默认脚本内自动生成,生成格式
${hostName}-${PID},PID 为部署脚本进程(deploy.sh) ID。services_path 默认值为
/home/sn/config/services.yaml,建议部署环境前确保该文件存在。master_info_output 默认输出在部署目录下,文件名:master.info。
cpu_reserved 只有当前数据面需要启动 ds-worker 的时候才会进行扣减,最终可用 CPU 为 cpu_num - 1000*cpu_reserved (如果该值小于
0,则忽略 cpu_reserved 参数)。ds_worker_unique_enable 如不配置,则一个数据面拉起一个 ds-worker;若配置,单节点数据面共用一个。
function_proxy_unique_enable 如不配置,则一个数据面拉起一个 function-proxy;若配置,单节点数据面共用一个。
custom_resources,预期 json 字符串。遵从
key : str value : double格式,若不满足则忽略对应资源配置,重名则被覆盖。labels,预期 json 字符串。遵从
key : str value : str格式,若不满足则忽略对应标签配置,重名则被覆盖。block,当前在非 master 模式时,不会落盘
/tmp/yr_sessions/yr_current_master_info文件,暂不支持 SDK 的无参自动初始化。
日志配置#
参数名 |
说明 |
默认值 |
备注 |
|---|---|---|---|
|
全局日志级别。 |
|
选填,取值: |
|
日志根目录配置。 |
|
选填,绝对路径。 |
|
function system 日志级别。 |
|
选填,取值: |
|
function system 日志子目录。 |
|
选填,配置值不能包含 |
|
function system 是否开启日志压缩。 |
|
选填,取值: |
|
function system 滚动日志配置,单个日志文件大小(单位:MB)。 |
|
选填,值类型为 int。当输入值小于 |
|
function system 滚动日志,保留最大文件数。 |
|
选填,值类型为 int。当输入值小于 |
|
function system 滚动日志,保留最大天数。 |
|
选填,值类型为 int。当输入值小于 |
|
组件日志缓存时间(单位:s)。 |
|
选填,值类型为 int。当输入值小于 |
|
组件缓存最大的日志条数,超过则落盘。 |
|
选填,值类型为 int。当输入值小于 |
|
function system 异步记录日志线程数。 |
|
选填,值类型为 int。当输入值小于 |
|
组件日志是否同时输出到标准错误输出。 |
|
选填。 |
|
runtime 日志级别。 |
|
选填。 |
|
runtime 日志压缩阈值(单位:MB)。 |
|
选填。 |
|
runtime 日志压缩保留文件数。 |
|
选填。 |
|
runtime 日志子目录。 |
|
选填,配置值不能包含 |
|
数据系统日志级别。 |
|
选填,取值: |
|
数据系统日志子目录。 |
|
选填,配置值不能包含 |
|
数据系统组件单个日志文件最大大小(单位:MB)。 |
|
选填。 |
|
数据系统组件压缩日志文件保留最大文件数量 |
|
选填。 |
|
数据系统是否开启资源日志监控。 |
|
选填。 |
|
etcd 日志子目录。 |
|
选填,配置值不能包含 |
|
runtime 标准输出日志导出方式。 |
|
选填,runtime 标准输出日志导出方式。取值: |
|
开启 runtime 日志分进程落盘。 |
|
选填,为 |
|
开启 runtime 标准输出日志的滚动压缩。 |
|
选填。仅在 runtime 日志分进程落盘时生效,会同时开始标准输出的日志的滚动和压缩。 |
${deploy_path}为部署脚本指定的部署路径。${NODE_ID}为数据面组件的节点标识,可以通过传参指定(yr_agent.sh -n xx),如未指定,则脚本内生成。log_root 配置为
default时,对于 yr_master 启动默认日志目录为${deploy_path}/log,yr_agent 启动默认日志目录${deploy_path}/${NODE_ID}/log。配置指定的日志根目录/子目录,对于已存在的目录,需要保证当前用户有读写权限,建议权限设置不大于
750。目录不存在情况下,新建目录。--runtime_std_rolling_enable依赖开源软件 logrotate。如需此功能,需用户预先安装 logrotate 工具。默认开启压缩。会使用runtime_log_rolling_max_size,runtime_log_rolling_max_files配置 logrotate 使用的轮转压缩参数,每5s 调用一次。注意:由于 logrotate 限制,压缩文件大小并不能严格保证为runtime_log_rolling_max_size大小,会根据用户日志输出情况存在波动。另外,由于 logrotate 本身限制,存在日志丢失可能,该选项与 log-to-driver 功能混用可能导致部分日志无法正常回传到 driver 侧。
端口配置#
参数名 |
说明 |
默认值 |
备注 |
|---|---|---|---|
|
端口分配策略。 |
|
选填。 |
|
控制面分配端口范围最小值。 |
|
选填。当 port_policy 配置为 |
|
控制面分配端口范围最大值。 |
|
选填。当 port_policy 配置为 |
|
数据面分配端口范围最小值。 |
|
选填。当 port_policy 配置为 |
|
数据面分配端口范围最大值。 |
|
选填。当 port_policy 配置为 |
|
function-agent 监听端口。 |
|
选填。当 port_policy 配置为 |
|
function-proxy 监听端口。 |
|
选填。当 port_policy 配置为 |
|
function-proxy 监听端口,用于 driver 注册。 |
|
选填。当 port_policy 配置为 |
|
global scheduler 监听端口。 |
|
选填。对于启动控制面组件,当 port_policy 配置为 |
|
ds-master 监听端口。 |
|
选填。当 port_policy 配置为 |
|
ds-worker 监听端口。 |
|
选填。当 port_policy 配置为 |
|
是否禁用 nc 工具进行端口探测,防止组件端口冲突。 |
无参 |
选填。默认不配置此参数。 |
Note
如果手动配置端口,需要自行保证端口不会冲突,并且端口在有效范围内。
function system 配置#
参数名 |
说明 |
默认值 |
备注 |
|---|---|---|---|
|
function-proxy 开启端口,支持 driver 直连。 |
|
选填,取值: |
|
状态存储类型。 |
|
选填,取值: |
|
函数实例支持请求最小 cpu(单位: |
|
选填。 |
|
函数实例支持请求最小 memory(单位:MB)。 |
|
选填。 |
|
函数实例支持请求最大 cpu(单位: |
|
选填。最大值: |
|
函数实例支持请求最大 memory(单位:MB)。 |
|
选填。最大值: |
|
metric 收集类型。 |
|
选填。取值: |
|
是否开启进程合并部署。 |
|
选填。runtime-manager 与 function-agent 组件进程合并部署,取值: |
|
调度是否容忍异常。 |
|
选填。 |
|
系统超时时间(单位:ms)。 |
|
选填。大于 |
|
采集 npu 信息模式。 |
|
选填。取值: |
|
是否采集 gpu 信息。 |
|
选填。 |
|
function-agent litebus 线程数。 |
|
选填。 |
|
function-proxy litebus 线程数。 |
|
选填。 |
|
function-master litebus 线程数。 |
|
选填。 |
|
function agent 别名。 |
|
选填。 |
|
是否打开 function proxy 的 perf 打印。 |
|
选填。 |
|
是否打开 meta store。 |
|
选填。 |
|
是否打开 function master 和 function proxy 的 jemalloc。 |
|
选填。 |
|
runtime 是否启动 massif。 |
|
选填。 |
|
function-proxy 是否开启部分 watch。 |
|
选填。 |
|
是否打开 meta store 持久化到 etcd 以支持 meta store 的数据可靠性。打开后支持 function master 重启容灾。 |
|
选填。 |
|
meta store 运行模式。local 模式:数据保存在本地;etcd 模式:数据保存在 etcd 中。 |
|
选填,取值: |
|
大于 |
|
选填。 |
|
为 |
|
选填。 |
|
使能调度抢占功能(高优先级实例可以抢占低优先级被配置为可抢占的实例),仅 maxPriority > 0 生效。 |
|
选填。 |
|
local scheduler 调度插件启用列表。 |
默认开启所有调度插件。 |
选填,支持 |
|
domain scheduler 调度插件启用列表。 |
默认开启所有调度插件。 |
选填,支持 |
|
meta store 持久化到 etcd 允许最大请求并发数,当需要持久化的请求数超过该值后,会进行限流,延迟持久化。 |
|
选填,大于 |
|
meta store 持久化到 etcd 一次性最多允许的条数,采用分批次持久化。 |
|
选填,大于 |
|
函数系统组件健康检查超时时间(单位:秒)。 |
|
选填,大于 |
|
函数系统组件健康检查重试间隔(单位:秒)。 |
|
选填,大于等于 |
|
函数系统组件健康检查重试次数。 |
|
选填,大于 |
npu_collection_mode:count 模式只采集 NPU 卡数量信息;hbm 模式采集 NPU 卡数量以及 HBM 容量等信息;sfmd 模式采集 NPU 卡数量、HBM 容量以及 NPU 卡 IP 信息;topo 模式采集 NPU 卡数量、HBM 容量以及 NPU 卡 topo 信息;all 模式采集以上所有 NPU 信息;off 模式不采集任何 NPU 信息。
local_schedule_plugins 和 domain_schedule_plugins:用户自定义插件列表时,建议两个参数使用一致的调度插件列表,例如:–local_schedule_plugins=‘[“Default”, “Heterogeneous”]’ –domain_schedule_plugins=‘[“Default”, “Heterogeneous”]’。
runtime 配置#
参数名 |
说明 |
默认值 |
备注 |
|---|---|---|---|
|
runtime 初始端口。 |
|
选填,当 port_policy 配置为 |
|
是否开启 function-proxy 与 runtime 心跳。 |
|
选填,取值: |
|
心跳超时时间(单位:ms)。 |
|
选填。 |
|
心跳超时最大次数。 |
|
选填。 |
|
runtime 端口数量。 |
|
选填。 |
|
是否开启 recover。 |
|
选填,取值: |
|
init call 超时时间(单位:s)。 |
|
选填。 |
|
首次连接 runtime 超时时间(单位:s)。 |
|
选填。 |
|
传输到 runtime 数据格式是否为 proto,LibRuntime 版本需要开启。 |
|
选填,取值: |
|
使能通过 runtime-manager 继承 env 来创建 runtime 进程。 |
|
选填。 |
|
runtime 直连,会从 runtime 端口数量里为 runtime 直连分配 server 端口。 |
|
选填。 |
|
runtime 内存检测时间间隔,单位:毫秒(ms)。 |
|
选填,最低支持 100ms 检测,检测越频繁会导致 CPU 底噪过高。用户需知该特性 10ms 间隔的检测频率约引入 60~100m CPU 的底噪,100ms 间隔的检测频率约引入 30m CPU 的底噪,挤占 runtime 能使用的资源。进程部署,没有资源隔离的情况下,共用宿主机的资源限制,该 CPU 底噪影响可能并不明显。 |
|
是否开启基于 runtime 进程内存使用情况检测超过配置内存大小并 kill。 |
|
选填。 |
|
基于进程内存使用配置运行时 OOM kill 的控制限(单位:MB)。如 limit=-5,设置的内存大小 -5 MB(例如 300m-128Mi 的函数,内存上限为 123MB),主动预防 OOM |
|
选填,对于进程部署,当系统负载不高时,可以适当设置控制限为正数,例如 300m-128Mi 的函数,limit=10,设置的内存大小 +10 MB,单个函数内存上限为 138MB,允许函数超分使用内存,提高函数性能和系统资源利用率。 |
|
内存连续检测异常点的次数。参考控制图中的 3σ 原则。 |
|
选填。 |
|
Java runtime 自定义 JVM 参数。 |
|
选填。 |
|
支持用户配置优雅退出(SIGINT->SIGKILL)的超时时间(单位:s),默认立即删除,资源回收。 |
|
选填。 |
|
支持用户配置 runtime 函数的 HOME 环境变量。 |
当为空时,使用 function_agent/runtime_manager 组件部署时的操作系统 HOME 环境变量。 |
若用户函数所属用户与 function_agent/runtime_manager 组件部署时的操作系统 HOME 环境变量仍有区别,需要指定该参数方便用户函数内使用 HOME 环境变量。 |
|
是否开启 runtime 实例 Debug 模式。 |
|
选填,取值: |
对于 Python runtime 和 posix-custom-runtime 函数,默认设置环境变量
PYTHONUNBUFFERED = 1,便于用户函数日志实时打印。enable_inherit_env:使能情况下,LD_LIBRARY_PATH、PYTHONPATH 及 PATH 将以追加的方式被 runtime 继承,POSIX_LISTEN_ADDR、POD_IP、YR_RUNTIME_ID、INSTANCE_ID、DATA_SYSTEM_ADDR、DRIVER_SERVER_PORT、HOME、HOST_IP、FUNCTION_LIB_PATH、LAYER_LIB_PATH、CLUSTER_ID、NODE_ID 等以及其他与用户自定义同名的环境变量则不会被继承,请妥善配置环境变量避免冲突。
runtime_direct_connection_enable: 使能情况下,1 个 runtime 占用 1 个端口数量。若开启 runtime 的 server 翻转功能, 复用 server 翻转分配的端口。 runtime-manager 会给 runtime 传递 2 个环境变量,
RUNTIME_DIRECT_CONNECTION_ENABLE表示 runtime 是否开启 runtime 直连,DERICT_RUNTIME_SERVER_PORT表示该 runtime 直连 server 使用的端口。runtime_default_config 配置参考:
--runtime_default_config="{\"java1.8\": ["-XX:InitialRAMPercentage=35.0", "-XX:+UseConcMarkSweepGC", "-XX:+CMSClassUnloadingEnabled", "-XX:+CMSIncrementalMode", "-XX:+CMSScavengeBeforeRemark", "-XX:+UseCMSInitiatingOccupancyOnly", "-XX:CMSInitiatingOccupancyFraction=70", "-XX:CMSFullGCsBeforeCompaction=5", "-XX:MaxGCPauseMillis=200", "-XX:+ExplicitGCInvokesConcurrent", "-XX:+ExplicitGCInvokesConcurrentAndUnloadsClasses"]", \"java11\": ["-XX:+UseG1GC", "-XX:MaxRAMPercentage=80.0", "-XX:+TieredCompilation"], \"java17\": ["-XX:+UseZGC", "-XX:+AlwaysPreTouch", "-XX:+UseCountedLoopSafepoints", "-XX:+TieredCompilation", "--add-opens=java.base/java.util=ALL-UNNAMED", "--add-opens=java.base/java.lang=ALL-UNNAMED", "--add-opens=java.base/java.net=ALL-UNNAMED", "--add-opens=java.base/java.io=ALL-UNNAMED", "--add-opens=java.base/java.math=ALL-UNNAMED", "--add-opens=java.base/java.time=ALL-UNNAMED", "--add-opens=java.base/java.text=ALL-UNNAMED", "--enable-preview"], \"java21\": ["-XX:+UseZGC", "-XX:+ZGenerational", "-XX:+AlwaysPreTouch", "-XX:+UseCountedLoopSafepoints", "-XX:+TieredCompilation", "--add-opens=java.base/java.util=ALL-UNNAMED", "--add-opens=java.base/java.lang=ALL-UNNAMED", "--add-opens=java.base/java.net=ALL-UNNAMED", "--add-opens=java.base/java.io=ALL-UNNAMED", "--add-opens=java.base/java.math=ALL-UNNAMED", "--add-opens=java.base/java.time=ALL-UNNAMED", "--add-opens=java.base/java.text=ALL-UNNAMED", "--enable-preview"]}"。
data system 配置#
参数名 |
说明 |
默认值 |
备注 |
|---|---|---|---|
|
是否内存不足的情况下写磁盘。 |
|
选填,取值: |
|
写入磁盘路径。 |
选填,spill_enable 为 |
|
|
写入磁盘大小限制(单位:MB)。 |
|
选填。 |
|
rpc 线程数量。 |
|
选填。 |
|
ds-worker 与 ds-master 之间心跳的超时时间(秒),当心跳超时时 ds-master 会将 ds-worker 的资源清理掉。 |
|
选填。 |
|
ds-client 跟 ds-worker 之间心跳的超时时间(秒),当心跳超时时 ds-worker 会将 ds-client 的资源清理掉。 |
|
选填。 |
|
数据系统节点超时时间(单位:s)。 |
|
选填。 |
|
数据系统心跳超时时间(单位:ms)。 |
|
选填。 |
|
单个数据系统 worker 最大 client 数。 |
|
选填。 |
|
数据系统 worker 内存恢复时间(单位:s)。 |
|
选填。 |
|
数据系统 worker 是否使能分布式 master。 |
|
选填,取值: |
|
数据系统 l2 cache 后端类型。 |
|
选填,取值: |
|
l2 cache 选择为 sfs 时,指定 sfs 路径。 |
|
选填。 |
|
数据系统是否开启无损退出模式。开启后 ds-worker 退出前会迁移数据到其它的 ds-worker 上。如果没有可用的 ds-worker 节点,直接关闭,此时数据仍然会丢失。 |
|
选填。 |
|
数据面数据系统使用 ZMQ 通信时的消息分片大小(单位:byte)。 |
|
选填。 |
|
是否开启共享内存大页内存功能,它可以提高内存访问,减少页表的开销。 |
|
选填,取值: |
|
由于 Kubernetes(k8s) 的资源计算策略,共享内存有时会被计算两次,这可能会导致客户端 OOM 崩溃。为了解决这个问题,我们使用了 fallocate 来链接客户端和工作节点的共享内存,从而纠正内存计算错误。缺省情况下,fallocate 是使能的。启用 fallocate 会降低内存分配的效率。 |
|
选填,取值: |
|
是否启用透明大页(ransparent Huge Page,THP)功能,启用透明大页可以提高性能,减少页表开销,但也可能导致 Pod 内存使用增加。 |
|
选填,取值: |
|
每个租户的共享内存分配器数量。多分配器可以提高第一次分配共享内存的性能,但每个分配器会多使用一个 fd,导致 fd 资源使用量上升。 |
|
选填,取值范围: |
${install_path}为数据面的安装路径。
etcd 配置#
参数名 |
说明 |
默认值 |
备注 |
|---|---|---|---|
|
etcd ip。 |
|
选填,部署控制面组件,默认为本地 IP。 |
|
etcd 端口。 |
|
选填。 |
|
etcd 集群交互端口。 |
|
选填。 |
|
etcd 鉴权类型。 |
|
选填,取值: |
|
经过 CA 签名的证书位置。 |
|
选填,etcd_auth_type 配置为 |
|
CA 机构私钥位置。 |
|
选填,etcd_auth_type 配置为 |
|
鉴权根证书位置。 |
|
选填,etcd_auth_type 配置为 |
|
etcd 客户端的签名证书位置。 |
|
选填,etcd_auth_type 配置为 |
|
etcd 客户端的密钥位置。 |
|
选填,etcd_auth_type 配置为 |
|
是否开启 etcd proxy。 |
|
选填,取值: |
|
proxy 数量。 |
|
选填。 |
|
proxy 端口。 |
|
选填。 |
|
是否禁止 fsync。 |
|
选填。 |
|
etcd 压缩的 revision 数量阈值。 |
|
选填。 |
|
etcd TLS 证书域名。 |
|
用于 etcd TLS 证书校验,需要与实际的证书保存一致。 |
安全配置#
启动脚本配置参数如下:
参数名 |
说明 |
默认值 |
备注 |
|---|---|---|---|
|
etcd 鉴权类型。 |
|
建议配置为 |
|
etcd 证书目录。 |
|
配置绝对路径,根据实际路径配置。 |
|
etcd CA 证书文件名。 |
|
可保持默认配置。 |
|
etcd 服务端证书文件名。 |
|
可保持默认配置。 |
|
etcd 服务端私钥文件名。 |
|
可保持默认配置。 |
|
etcd 客户端证书文件名。 |
|
可保持默认配置。 |
|
etcd 客户端私钥文件名。 |
|
可保持默认配置。 |
|
函数系统组件是否开启 TLS。 |
|
指定配置为 |
|
函数系统组件证书目录。 |
|
配置绝对路径,根据实际路径配置。 |
|
函数系统组件 CA 证书文件名。 |
|
可保持默认配置。 |
|
函数系统组件证书文件名。 |
|
可保持默认配置。 |
|
函数系统组件证书私钥文件名。 |
|
可保持默认配置。 |
|
数据系统组件是否开启鉴权。 |
|
指定配置为 |
|
数据系统 curve 证书目录。 |
|
配置绝对路径,根据实际路径配置。 |
|
数据系统与 runtime 是否开启认证。 |
|
指定配置为 |
|
数据系统与 runtime 是否开启加密。 |
|
指定配置为 |
|
runtime 检测数据系统异常的超时时间,单位:秒(s)。 |
|
可保持默认配置。 |
|
是否开启 function-proxy 与数据系统间的连接认证。 |
|
指定配置为 |
|
function-proxy 与数据系统间的认证类型。 |
|
可选的配置类型: |