UBSE 配置说明
配置原则说明
UBS Engine的配置能力通过文件的方式暴露。
UBS Engine配置文件采用ini文件格式:
由节(section)、键(key)和值(value)构成。
配置文件包含多个 section,每个 section 包含多个键值对,section 独自为一行,其名称由中括号包围( [ 和 ])。
每个键值对用等号(=)进行连接;左边为键,作为配置项的名称;右边为值,作为配置项内容。
配置项设计,确保所有节点配置相同。
配置者需要在所有节点修改配置项,并重启各节点UBS Engine进程。
UBS Engine配置文件样例如下:
[ubse.log]
# Log level. The value can be DEBUG, INFO (default value), WARN, ERROR, or CRIT. Any invalid value will be reset to INFO.
log.level=INFO
# Size of the log file to be wrapped, in MB. The value range is [2, 20]. Any invalid value will be reset to 20.
log.max.fileSize=20
# Maximum number of log files that can be wrapped. The value range is [1, 200]. Any invalid value will be reset to 20.
log.fileNums=20
# Maximum number of logs that can be cached in the log buffer. If the number of cached logs exceeds the value, the earliest logs are overwritten. Value range: [64,4096]. Any invalid value will be reset to 4096.
log.queue.maxItem=4096
# Syslog switch.The value can be true or false(default value). Any invalid value will be reset to false.
log.sys.open=false
# Syslog type.The value can be kern, user(default value), mail, daemon, auth, syslog, lpr, news, uucp, cron, authpriv, ftp, or local0~7. Any invalid value will be reset to user.
log.sys.type=user
[ubse.election]
# Interval at which the Master node sends heartbeat messages, in milliseconds. The value range is from 1000 to 60000. Any invalid value will be reset to 2000.
heartbeat.timeInterval=2000
# Threshold for the number of lost standby node heartbeats. The value ranges from 3 to 20. Any invalid value will default to 3.
heartbeat.lostThreshold=3
# Configure the list of candidate master node IDs (comma-separated). When this is configured with at least one valid node ID, only the nodes in this list are allowed to become master, and the election.candidate switch above does not take effect. When this item is not configured, empty, or invalid, it is treated as not configured and the election.candidate switch is used instead. This item is disabled by default.
# NOTE: All nodes in the cluster must use the same configuration value.
# election.candidateNodes=1,2,3log日志配置说明
section取值:[ubse.log]
配置项说明
| 序号 | 参数 | 说明 | 取值 |
|---|---|---|---|
| 1 | log.level | 日志级别。 | 默认值:INFO 取值范围如下:
|
| 2 | log.max.fileSize | 绕接日志文件的大小。 | 默认值:20 单位:MB 取值范围:[2, 20] 参数配置取值范围之外或错误值都会被重置为默认值。 |
| 3 | log.fileNums | 日志文件最大绕接数量。 | 默认值:20 取值范围:[1, 200] 参数配置取值范围之外或错误值都会被重置为默认值。 |
| 4 | log.queue.maxItem | 日志缓冲区最大缓存量条数。如果超过该值,则覆盖最初的日志。 | 默认值:4096 单位:条 取值范围:[64, 4096] 参数配置取值范围之外或错误值都会被重置为4096。 |
| 5 | log.sys.open | syslog记录日志开关。 | 默认值:false 取值范围:[true,false] 参数配置取值范围之外或错误值都会被重置为默认值。 |
| 6 | log.sys.type | syslog记录日志类型。 | 默认值:user 取值范围: kern, user(default value), mail, daemon, auth, syslog, lpr, news, uucp, cron, authpriv, ftp, or local0~7. 参数配置取值范围之外或错误值都会被重置为默认值。 该配置记录日志规则与syslog的rsyslog.conf一致,部分类型需要用户自配。 |
ha选举配置说明
section取值:[ubse.election]
配置项说明
| 序号 | 参数 | 说明 | 取值 |
|---|---|---|---|
| 1 | heartbeat.timeInterval | 发送心跳间隔时间,单位毫秒。 | 默认值:2000 单位:毫秒 取值范围:[1000, 60000] 参数配置取值范围之外的值会被重置为默认值。 |
| 2 | heartbeat.lostThreshold | 备节点心跳丢失次数阈值。 | 默认值:3 取值范围:[3, 20] 参数配置取值范围之外的值会被重置为默认值。 |
| 3 | election.candidate | 节点是否参与选主。 | 默认值:true 取值范围:[true,false] 如果取值超过范围,则取默认值true。 |
| 4 | election.candidateNodes | 候选主节点ID列表(逗号分隔)。 ⚠ 集群内所有节点该配置项必须配置一致。 | 默认值:用#注释(不配置) 配置且非空时,仅列表内节点可升主,election.candidate 开关不再生效; 未配置/为空/解析非法时,该配置不生效,election.candidate 生效。 |
| 5 | election.wait | 节点是否等待最小节点发起选主。 | 默认值:true 取值范围:[true,false] 如果取值超过范围,则取默认值true。 |
rpc通信配置说明
section取值:[ubse.rpc]
配置项说明
| 序号 | 参数 | 说明 | 取值 |
|---|---|---|---|
| 1 | request.timeout | rpc通信接口的超时时间 | 默认值:60 单位:秒 取值范围:[0,65535] 如果取值超过范围,则取默认值60。 |
| 2 | cluster.ipList | rpc使用TCP协议时的集群各节点ip地址 | 默认值:用#注释 打开此配置时(取消注释),使用TCP通信,此配置注释时使用urma通信。 TCP通信参考值:192.168.100.100-192.168.100.103 上述参考值等同于配置192.168.100.100,192.168.100.101,192.168.100.102,192.168.100.103 |
| 3 | cert.use | rpc安全证书能力开关 | 默认值:true(开启证书能力) 取值范围:true、false 如果取值超过范围,则取默认值true。 |
证书 otherName OID 传 nodeId 示例: 开启 cert.use=true 后,需导入本节点身份证书;证书 SAN 的 otherName(OID 1.3.6.1.4.1.2011.999.1,UTF8String)值必须等于本节点 nodeId,否则握手被拒。第三方/自建 CA 完整生成示例见 ubse_security_description.md:证书 otherName OID 传 nodeId 示例。
UBFM对接配置说明
section取值:[ubse.ubfm]
配置项说明
| 序号 | 参数 | 说明 | 取值 | 备注 |
|---|---|---|---|---|
| 1 | ubse.server.port | UBSE暴露给UBM的通信端口,在该端口开启HTTPS服务。 | 默认值:用#注释 取值范围:[1024, 65535] 如果取值超过范围,则取值为8082。 | UBM和UBSE共部署在host主机时,ubm.server.cid用#注释,UBSE与UBM使用UDS通信,此配置项不生效;高安部署模式下,ubm.server.cid配置开启,UBSE与UBM使用HTTPS通信,此配置项生效。 |
| 2 | ubm.server.port | UBM暴露的通信端口,UBSE通过该端口与UBM进行HTTPS交互。 | 默认值:用#注释 取值范围:[1024, 65535] 如果取值超过范围,则取值为8799。 | UBM和UBSE共部署在host主机时,ubm.server.cid用#注释,UBSE与UBM使用UDS通信,此配置项不生效;高安部署模式下,ubm.server.cid配置开启,UBSE与UBM使用HTTPS通信,此配置项生效。 |
| 3 | ubm.server.cid | 高安场景UBM所在机密虚机的地址。 | 默认值:用#注释 打开此配置时(取消注释),与UBM使用HTTPS通信,此配置注释时与UBM使用UDS通信。 取值范围:[0, 2^32-1] 如果取值超过范围,则不使能高安模式。 |
|
| 4 | ubm.server.hostname | ubm主机标识,要和ubm侧的服务端证书中主题备用名称(SAN)或通用名称(CN)字段包含的主机标识其中之一一致。如果不一致Ubse启动发生异常,功能不可用。 | 默认值:用#注释 取值范围:有效的DNS主机名,配置非法值会被重置为默认值localhost。 | 仅高安场景生效。 校验失败,Ubse启动发生异常,功能不可用,UBSE与UBM使用HTTPS通信,此配置项生效,需要确保生效的主机名能被DNS解析到ip地址127.0.0.1上。 |
VSOCK代理配置说明
section取值:[ubse.proxy]
配置项说明:
| 序号 | 参数 | 说明 | 取值 | 备注 |
|---|---|---|---|---|
| 1 | proxy.server.cid | VSOCK通信的上下文标识符(CID),用于标识卸载OS与Hypervisor OS(Host)上UBSE服务端之间的通信。 | 默认值:用#注释 取值范围:[0, 2^32-1] 常见取值:1( VMADDR_CID_LOCAL)或指定CID。 |
|
| 2 | proxy.server.port | VSOCK管理面通信的指定端口号,UBSE服务端需在该端口上侦听,以允许卸载OS侧的ubsectl命令正确代理。 | 默认值:用#注释 取值范围:[1024, 65535] 参考值:5423 |
|
VSOCK代理配置说明
section取值:[ubse.proxy]
配置项说明:
| 序号 | 参数 | 说明 | 取值 | 备注 |
|---|---|---|---|---|
| 1 | proxy.server.cid | VSOCK通信的上下文标识符(CID),用于标识卸载OS与Hypervisor OS(Host)上UBSE服务端之间的通信。 | 默认值:用#注释 取值范围:[0, 2^32-1] 常见取值:1( VMADDR_CID_LOCAL)或指定CID。 | - 云卸载场景下使用,配置为UBSE服务端所在Hypervisor侧的CID。 - 配置错误的CID会导致VSOCK通信连接失败。 - 所有节点的配置需保持一致。 |
| 2 | proxy.server.port | VSOCK管理面通信的指定端口号,UBSE服务端需在该端口上监听,以允许卸载OS侧的ubsectl命令正确代理。 | 默认值:用#注释 取值范围:[1024, 65535] 参考值:5423 | - 该端口必须与UBSE服务端监听的VSOCK端口一致。 - 所有节点的配置需保持一致。 |
内存池化配置说明
section取值:[ubse.memory]
配置项说明
| 序号 | 参数 | 说明 | 取值 | 备注 |
|---|---|---|---|---|
| 1 | obmm.memory.block.size | 芯片表项内存拆分粒度大小。 | 默认值:用#注释 单位:MB 取值范围:[4, 4096] 参数取值必须是2的整数倍。 | 管理员可按需修改配置文件,增加该配置,当该配置被定义时以配置文件为准。 校验规则:
预上线场景(ubse.preonline.enable配置项为true)建议配置为UB Memory decoder表中entry粒度的整数倍,entry粒度默认为2G。 |
| 2 | isLender | 当前节点是否可以作为内存借出节点。 | 默认值:true 取值范围:[true,false] 如果取值超过范围,则取默认值true。 | — |
| 3 | ubse.preonline.enable | 是否开启预上线能力。 | 默认值:false 取值范围:[true,false] 如果取值超过范围,则取默认值false。 |
|
| 4 | ubse.preonline.size | 预上线的内存大小。 | 默认值:4096 单位:MB 取值范围:[128, 262144] 参数取值必须是128的整数倍,取值超过范围则取默认值4096。 |
|
| 5 | api.timeout | API接口调用的超时时间。 | 默认值:1800 单位:秒 取值范围:[1,3600] 如果取值超过范围,则取默认值1800。 |
|
| 6 | lender.balance | 算法是否使用借出 NUMA 均衡模式。 | 默认值:false 取值范围:[true,false] 如果取值超过范围,则取默认值false。 |
|
| 7 | group | 同一个组里的节点可以相互借用。 | 默认值:用#注释(所有节点在同一个组里) |
|
| 8 | provider | 指定节点专用于借出。 | 默认值:用#注释(所有节点均可借出) |
|
| 9 | radius.lender | 借出节点的内存借用半径。 | 默认值:用#注释(不限制) 取值范围:[0, 65535] 如果取值超过范围,则取默认值65535(不限制)。 |
|
| 10 | radius.borrow | 借入节点的内存借用半径。 | 默认值:用#注释(不限制) 取值范围:[0, 65535] 如果取值超过范围,则取默认值65535(不限制)。 |
|
| 11 | obmm.memory.offline.timeout | obmm_unimport操作超时时间。 | 默认值:用#注释 单位:秒 取值范围:[10, 1800] |
|
| 12 | scheduler.mode | 内存调度模式,控制 socket NUMA 选择策略。 | 默认值:free-priority 取值范围:free-priority / reliability-priority / performance-priority 如果取值超过范围,则取默认值free-priority。 |
|
| 13 | bandwidth.tolerance | performance-priority 模式下带宽均衡评分的分带宽度(容忍度)阈值。 | 默认值:2 × block.size 单位:MB 取值小于block.size视为非法,取默认值2 × block.size。 | 对每个候选借出 socket 模拟本次借用后,计算候选集合借出量 spread(最大借出 − 最小借出);分带值 D = spread / tolerance(向下取整),D=0 即借入后差值 < tolerance,此时带宽分最优;所有候选按 D 做 min-max 归一化得到带宽分。建议 tolerance 与典型单次借用大小配置为同量级。 |
| 14 | sei.enable | 控制内存借用时是否启用OS的SEI降级功能。 | 默认值:false 取值范围:[true,false] 如果取值超过范围或非法,则取默认值false。 |
|
| 15 | scheduler.node_lending_limit | 调度器节点最大借出量,即节点作为 lender 的借出总量上限。 | 默认值:用#注释(不限制) 单位:GB 取值范围:[0, 65535] 配置为 0 或不配置时表示不限制,取值超过范围则回退为 0(不限制)。 |
|
URMA配置说明
section取值:[ubse.urma]
配置项说明
| 序号 | 参数 | 说明 | 取值 | 备注 |
|---|---|---|---|---|
| 1 | topo_mode | UBSE在CLOS组网下向URMA UVS下发拓扑时使用的建链模式。1D-FULLMESH组网下该配置不生效。 | 默认值:用#注释 取值范围:
| 仅CLOS组网使用。 |
权限点配置
权限点说明
基于安全考虑,在UBSE中引入“轻量化角色访问控制(RBAC)能力”,达成对单一外部用户进行权限最小化控制。
graph LR
A(用户/User)-->B(角色/Role)
B(角色/Role)-->C(目标对象/Object)用户/User
表示调用UBSE的接口的客户端,因为UBSE暴露的UDS接口,由UBSE通过OS接口自动获取username或者uid(客户端是容器应用的情况下可能没有username);单用户/User能且只能绑定一个角色/Role。
角色/Role
表示用户/User所绑定的角色,每个角色/Role可以绑定多个目标对象/Object。
目标对象/Object
表示能够被操作的资源对象,表示可以对相应对象完成所有操作(简化系统复杂度,不定义基于对象的动作行为);资源对象的取值范围,由UBSE开发过程确定,在包ubs-engine-client-devel-<version>-<release>.aarch64.rpm中可以获取。
配置说明
客户端自定义配置UBSE接口的权限点,当与默认权限点配置重复时,采用用户自定义权限点配置覆盖默认权限点配置。
命名规则
- 文件命名:建议采用 auth_{module}.conf 的命名。
- 内容section:必须使用[auth.user]和[auth.role]命名,否则不会生效。
- user、role的定义:禁止与其他自定义文件内容重复,重复会相互覆盖,禁止尝试修改内置权限点的内容(配置不会生效)。
| 用户角色 | 说明 |
|---|---|
| UBSE内置管理员用户 | ubse(UBSE进程运行用户)、root用户。 |
| UBSE内置管理员角色admin | 用于支持管理员用户授权。 |
| UBSE内置all对象 | 表示所有对象。 |
| 管理员角色admin | 具备all对象的操控权限。 |
说明
内置ubse/root用户、管理员角色admin,均不能被覆盖。
参数说明
参考表2配置自定义权限点。
| 序号 | 所属配置节 | 参数 | 说明 | 取值 | 配置节点 |
|---|---|---|---|---|---|
| 1 | [auth.user] | user | 客户端需要自定义配置的用户名禁止与其他自定义文件内容重复,重复会相互覆盖;禁止修改内置用户root,ubse;客户端用户不允许配置为admin角色。 | 客户端需要给该用户配置的角色。 | 所有节点 |
| 2 | [auth.role] | default_ubsm | 客户端需要自定义配置的角色禁止与其他自定义文件内容重复,重复会相互覆盖;禁止修改内置角色admin;自定义角色不允许引用all对象。 | 客户端需要给该角色配置的权限点。 | 所有节点 |
配置示例
示例如下:
[auth.user]
userA = roleA
userB = roleA
[auth.role]
roleA = objectA,objectB默认配置
ubse\_auth\_default.conf文件用于配置UBSE接口的默认权限点定义,可以被客户端自定义权限点文件的配置覆盖。
配置说明
参考表1修改/etc/ubse/ubse_auth_default.conf。
表 1 ubse_auth_default.conf配置说明
| 序号 | 所属配置节 | 参数 | 说明 | 取值 | 配置节点 | 应用场景 |
|---|---|---|---|---|---|---|
| 1 | [auth.user.default] | ubsmd | ubsmd用户 | 默认值:default_ubsm | 所有节点 | 通算大数据场景 |
| 2 | [auth.user.default] | ubs-scheduler | openstack插件用户 | 默认值:default_op | 所有节点 | 通算虚拟化场景 |
| 3 | [auth.role.default] | matrixplugin | k8s插件用户 | 默认值:default_k8s | 所有节点 | 通算虚拟化场景 |
| 4 | [auth.role.default] | default_ubsm | ubsm场景角色 | 默认值:mem.fd,mem.numa,mem.shm,mem.stat,topo | 所有节点 | 通算大数据场景 |
| 5 | [auth.role.default] | default_op | openstack场景角色 | 默认值:topo,npu | 所有节点 | 通算虚拟化场景及智算NPU直通虚机 |
| 6 | [auth.role.default] | default_k8s | k8s场景角色 | 默认值:mem.numa,topo | 所有节点 | 通算虚拟化场景 |
VSOCK CID用户映射配置说明
section取值:[auth.vsock.cid2user]
配置项说明:
| 序号 | 参数 | 说明 | 取值 | 配置节点 | 应用场景 |
|---|---|---|---|---|---|
| 1 | <cid> | VSOCK连接的源CID到用户的映射,用于VSOCK连接到达时确定用户身份以进行授权。 | 映射的用户名,必须为[auth.user.default]或[auth.user]中已定义的用户。 | 所有节点 | 云卸载VSOCK通信场景 |
配置示例:
[auth.vsock.cid2user]
1 = ubsmd
2 = ubs-scheduler默认配置
[auth.user.default]
# Section for default user-to-role mappings.
ubsmd = default_ubsm
ubs-scheduler = default_op
matrixplugin = default_k8s
[auth.role.default]
# Section for default role-to-permission mappings.
default_ubsm = mem.fd,mem.numa,mem.shm,mem.stat,topo
default_op = topo,npu
default_k8s = mem.numa,topo权限点说明
| 权限点 | 关联接口 | 说明 | 适用场景 |
|---|---|---|---|
| mem.fd | ubs_mem_fd_create等 | fd形态远端内存借用 | 通算大数据场景 |
| mem.numa | ubs_mem_numa_create等 | numa形态远端内存借用 | 通算大数据/虚拟化场景 |
| mem.shm | ubs_mem_shm_create等 | 共享形态远端内存借用 | 通算大数据场景 |
| mem.stat | ubs_mem_numastat_get | 内存统计查询 | 通算大数据场景 |
| topo | ubs_topo_node_list等 | 拓扑信息查询 | 所有场景 |
| urma | ubs_urma_dev_get等 | URMA设备管理 | URMA通信场景 |
| npu | ubs_npu_device_list_query, ubs_npu_device_alloc, ubs_npu_device_free, ubs_npu_device_list_free, ubs_uba_tid_size_query | NPU设备查询/使能/去使能,允许调用NPU查询接口获取设备拓扑信息,以及NPU使能/去使能接口分配和释放UB设备资源 | NPU直通虚机场景,openstack插件需查询NPU设备拓扑并按虚机需求分配/释放NPU资源 |
场景化插件配置
plugin_virt_agent.conf
参数说明
参考表1修改/etc/ubse/plugins/plugin_virt_agent.conf。
说明
- 虚拟化场景,vm插件依赖OpenStackPlugin组件,需完成OpenStack部署。
- 除ubse.plugin.name、ubse.plugin.pkg以及openstack相关参数外,其他参数配置取值范围之外或错误值都会被重置为默认值。
表 1 plugin_virt_agent.conf配置说明
| 序号 | 参数 | 说明 | 取值 | 配置节点 | 应用场景 |
|---|---|---|---|---|---|
| 1 | ubse.plugin.name | VM模块插件名。 | 固定值为virt_agent | 所有节点 | 通算虚拟化场景 |
| 2 | ubse.plugin.pkg | VM模块依赖的so文件名称。 | 固定值为libvirtagent.so | 所有节点 | 通算虚拟化场景 |
| 3 | ubse.plugin.vm.export.interval | VM模块数据采集周期。 | 默认值:2单位:s 取值范围:[1, 60]仿真UB环境,取值建议不少于10参数配置取值范围之外或错误值都会被重置为默认值。 | 所有节点 | 通算虚拟化场景 |
| 4 | borrow.watermark | 决策模块第二逃生水线占比配置,高于会触发内存借用。 | 默认值:92单位:% 取值范围:[70,95]且high.watermark <= borrow.watermark - 5参数配置取值范围之外或错误值都会被重置为默认值。 | 所有节点 | 通算虚拟化场景 |
| 5 | high.watermark | 高水线百分比,高触发借用或迁移,低触发归还,且用于决策模块。 | 默认值:85单位:% 取值范围:[65~90]且low.watermark +5 <= high.watermark <= borrow.watermark - 5参数配置取值范围之外或错误值都会被重置为默认值。 | 所有节点 | 通算虚拟化场景。 |
| 6 | low.watermark | 低水线百分比,高触发借用或迁移,低触发归还,且用于决策模块。 | 默认值:80单位:% 取值范围:[60~80]low.watermark +5 <= high.watermark参数配置取值范围之外或错误值都会被重置为默认值。 | 所有节点 | 通算虚拟化场景。 |
| 7 | borrow.maxMemPerBorrowSize | 单块借用内存的借用量上限。 | 默认值:4096单位:MB 取值范围:{1024,2048,3072,4096}且borrow.minMemPerBorrowSize <= borrow.maxMemPerBorrowSize参数配置取值范围之外或错误值都会被重置为默认值。 | 所有节点 | 通算虚拟化场景 |
| 8 | borrow.minMemPerBorrowSize | 单块借用内存的借用量下限。 | 默认值:1024单位:MB 取值范围:{1024,2048,3072,4096}参数配置取值范围之外或错误值都会被重置为默认值。 | 所有节点 | 通算虚拟化场景 |
| 9 | borrow.maxPerTotalMemBorrowSize | 单次决策最多内存借用上限。 | 默认值:16384单位:MB 取值范围:[4096, 20480]参数配置取值范围之外或错误值都会被重置为默认值。 | 所有节点 | 通算虚拟化场景 |
| 10 | borrow.oomBorrowMemSize | oom事件期望借用内存大小。 | 默认值:1024单位:MB 取值范围:[1024,4096]参数配置取值范围之外或错误值都会被重置为默认值。 | 所有节点 | 通算虚拟化场景 |
| 11 | escape.algorithm.dir | 自定义逃生算法so文件的绝对路径,配置中应包含so文件名称。由配置方保证加载so文件的安全可靠性。 | 默认值:/usr/lib64/libstrategy.so | 所有节点 | 通算虚拟化场景 |
| 12 | mig.ham.maxTimeout | 单个VM确定性热迁移的任务的超时时间。 | 默认值:60单位:s 取值范围:[10, 10800] UB仿真环境建议配成10800。参数配置取值范围之外或错误值都会被重置为默认值。 | 所有节点 | 通算虚拟化场景 |
| 13 | mig.migrateOneCopyMemoryBound | UB代际下虚拟机热迁移决策OneCopy迁移策略的虚拟机内存阈值。 | 默认值:4096单位:MB 取值范围:[256,4096] UB仿真环境建议配成256。当目的节点为当前节点的邻居节点,虚拟机使用2M大页,节点间内存借用没有成环,且虚拟机内存规格大于mig.migrateOneCopyMemoryBound配置项的值时,为确定性热迁移。参数配置取值范围之外或错误值都会被重置为默认值。 | 所有节点 | 通算虚拟化场景 |
| 14 | virt.pageType | 虚拟化场景页面类型配置。 | 默认值:1 取值范围:0/1 用于设置冷内存迁出时的页面单位,标准设置为0,2M设置为1。 | 所有节点 | 通算虚拟化场景 |
| 15 | mig.isEnableHamMigrate | 是否支持确定性热迁移开关。 | 默认值:false 取值范围:false/true 开启确定性热迁移,使用true。 | 所有节点 | 通算虚拟化场景 |
| 16 | virt.sceneType | 虚拟化场景类型应用配置。 | 默认值:1 取值范围:0/1 容器场景设置为0,虚拟机场景设置为1。 | 所有节点 | 通算虚拟化场景 |
配置示例
示例如下:
ubse.plugin.name=virt_agent
ubse.plugin.pkg=libvirtagent.so
borrow.watermark=92
high.watermark=85
low.watermark=80
borrow.maxMemPerBorrowSize=4096
borrow.minMemPerBorrowSize=1024
borrow.maxPerTotalMemBorrowSize=16384
mig.ham.maxTimeout=60
mig.isEnableHamMigrate=false
virt.pageType=1
virt.sceneType=1plugin_mempooling.conf
参数说明
参考表1修改/etc/ubse/plugins/plugin_mempooling.conf。
表 1 plugin_mempooling.conf配置说明
| 序号 | 参数 | 说明 | 取值 | 配置节点 | 应用场景 |
|---|---|---|---|---|---|
| 1 | ubse.plugin.name | mempooling模块插件名。 | 固定值为mempooling | 所有节点 | 通算虚拟化场景 |
| 2 | ubse.plugin.pkg | mempooling模块依赖的so文件名称。 | 固定值为libmempooling.so | 所有节点 | 通算虚拟化场景 |
| 3 | ucache.enable | 容器超分场景,是否启用pagecache功能。 | 默认值:false 单位:bool | 所有节点 | 容器超分场景 |
| 4 | rmrs.ipc.timeout | 与osturbo进行进程通信的超时时间。 | 默认值:60 单位:s | 所有节点 | 通算虚拟化场景 |
| 5 | rmrs.fragment.mustSamePlane | 内存碎片场景,内存借用、迁出策略、迁出执行、故障处理,是否必须同平面(true:必须同平面,false:优先同平面)。 | 默认值:true 单位:bool 配置范围:false/true | 所有节点 | 通算虚拟化场景 |
| 6 | rmrs.fragment.enableBorrowSplit | 内存碎片场景,借用是否切分为 4G 粒度(true: 切分,false: 不切分)。 | 默认值:true 单位:bool 配置范围:false/true | 所有节点 | 通算虚拟化场景 |
| 7 | overcommit.enableMultiNuma | 容器超分场景,是否为虚机多numa场景(true: 虚机多numa场景, false: 单numa场景)。 | 默认值:false 单位:bool 配置范围:false/true | 所有节点 | 容器超分场景 |
配置示例
示例如下:
ubse.plugin.name=mempooling
ubse.plugin.pkg=libmempooling.so
ucache.enable=false
rmrs.ipc.timeout=60
rmrs.fragment.mustSamePlane=true
rmrs.fragment.enableBorrowSplit=true
overcommit.enableMultiNuma=falseplugin_ucache.conf
参数说明
参考表1 plugin_ucache.conf配置说明修改/etc/ubse/plugins/plugin_ucache.conf。
| 序号 | 参数 | 说明 | 取值 | 配置节点 | 应用场景 |
|---|---|---|---|---|---|
| 1 | ubse.plugin.name | UCache模块插件名。 | 固定值为ucache | 所有节点 | 通算大数据场景 |
| 2 | ubse.plugin.pkg | UCache模块依赖的so文件名称。 | 固定值为libucache_plugin.so | 所有节点 | 通算大数据场景 |
| 3 | ucache.export.interval | UCache模块数据采集周期。 | 默认值:10 单位:s 取值范围:[1, 60] 仿真UB环境,取值建议不少于10。 | 所有节点 | 通算大数据场景 |
| 4 | strategy.borrow_size | 以16进制表示,单次借用或归还动作操作的最小内存大小。参数不在配置范围内,插件初始化失败。 | 默认值:1073741824 单位:字节 配置范围:[134217728,4294967296] | 所有节点 | 通算大数据场景 |
| 5 | strategy.maxActionSize | 借用策略动作集动作的最大数量,整数型。参数不在配置范围内,插件初始化失败。 | 默认值:10 配置范围:>=0 | 所有节点 | 通算大数据场景 |
| 6 | strategy.balanceThreshold | 借用策略中平衡阈值,节点的平衡状态如果大于平衡阈值将会发生借用调度来平衡系统,浮点型。参数不在配置范围内,插件初始化失败。 | 默认值:1.5 配置范围:>=1 | 所有节点 | 通算大数据场景 |
| 7 | strategy.scarcityThreshold | 发起借用动作时的最小内存稀缺度,浮点型。参数不在配置范围内,插件初始化失败。 | 默认值:0.01 配置范围:>=0 | 所有节点 | 通算大数据场景 |
| 8 | bottleneck.threshold | 应用瓶颈识别的阈值,来判断PageCache in和IO读写带宽,整数型。参数不在配置范围内,则采用默认值。 | 默认值:10240 单位:kB/s 配置范围:[1,1010241024] | 所有节点 | 通算大数据场景 |
| 9 | bottleneck.short.size | 应用瓶颈识别的短窗口长度,整数型。参数不在配置范围内,则采用默认值。 | 默认值:180 单位:秒 配置范围:[30,1200] | 所有节点 | 通算大数据场景 |
| 10 | bottleneck.short.threshold | 应用瓶颈识别的短窗口阈值,整数型。参数不在配置范围内,则采用默认值。 | 默认值:70 单位:百分比 配置范围:[0,100] | 所有节点 | 通算大数据场景 |
| 11 | bottleneck.long.size | 应用瓶颈识别的长窗口长度,整数型。参数不在配置范围内,则采用默认值。 | 默认值:600 单位:秒 配置范围:[90,3600] | 所有节点 | 通算大数据场景 |
| 12 | bottleneck.long.threshold | 应用瓶颈识别的长窗口阈值,整数型。参数不在配置范围内,则采用默认值。 | 默认值:30 单位:百分比 配置范围:[0,100] | 所有节点 | 通算大数据场景 |
| 13 | strategy.maxReliableTimes | 借用策略数据最大可靠周期数,每个周期的时间由master.masterInterval 决定,整数型。参数不在配置范围内,则采用默认值。 | 默认值:3 配置范围:[1,10] | 所有节点 | 通算大数据场景 |
| 14 | master.masterInterval | master主流程间隔时间,整数型。参数不在配置范围内,插件初始化失败。 | 默认值:3 单位:秒 配置范围:[1,15] | 所有节点 | 通算大数据场景 |
| 15 | master.maxBorrowSize | 最大借用内存量,整数型。参数不在配置范围内,插件初始化失败。 | 默认值:1073741824 单位:字节 配置范围:strategy.borrow_size的正整数倍。 | 所有节点 | 通算大数据场景 |
配置示例
示例如下:
ubse.plugin.name=ucache
ubse.plugin.pkg=libucache_plugin.so
# export interval
ucache.export.interval=10
# Borrowing strategy unit
strategy.borrow_size=1073741824
# The maximum number of output actions of the borrowing strategy
strategy.maxActionSize=10
# Borrowing strategy balance threshold
strategy.balanceThreshold=1.5
# Borrowing strategy minimum borrowing scarcity
strategy.scarcityThreshold=0.01
# Bottleneck - threshold (type: uint32, unit: kb/s, default: 10240 kb/s)
# min: 1
# max: 10*1024*1024 (nvme disk read limit)
bottleneck.threshold=10240
# Bottleneck - short window size (type: uint32, unit: second, default: 180)
# min: 30. The window has at least 3 points, calculated based on a 10-second period, and at least 30 seconds.
# max: 1200. according to the puncture experience, the PageCache volume reaches its peak in about 20 minutes.
bottleneck.short.size=180
# Bottleneck - short window threshold (type: uint32, unit: percent, default: 70%)
# min: 0
# max: 100
bottleneck.short.threshold=70
# Bottleneck - long window size (type: uint32, unit: second, default: 600)
# min: 90
# max: 3600
bottleneck.long.size=600
# Bottleneck - long window threshold (type: uint32, unit: percent, default: 30%)
# min: 0
# max: 100
bottleneck.long.threshold=30
# Maximum reliable period of borrowing strategy data
strategy.maxReliableTimes=3
# Master main process interval time (s)
master.masterInterval=10
# Maximum borrowed memory, Byte
master.maxBorrowSize=1073741824