超节点

版本:24.03 LTS SP4

UBSE 配置说明

配置原则说明

  1. UBS Engine的配置能力通过文件的方式暴露。

  2. UBS Engine配置文件采用ini文件格式:

    • 由节(section)、键(key)和值(value)构成。

    • 配置文件包含多个 section,每个 section 包含多个键值对,section 独自为一行,其名称由中括号包围( [])。

    • 每个键值对用等号(=)进行连接;左边为键,作为配置项的名称;右边为值,作为配置项内容。

  3. 配置项设计,确保所有节点配置相同。

  4. 配置者需要在所有节点修改配置项,并重启各节点UBS Engine进程。

UBS Engine配置文件样例如下:

config
[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,3

log日志配置说明

section取值:[ubse.log]

配置项说明

序号参数说明取值
1log.level日志级别。默认值:INFO
取值范围如下:
  • DEBUG
  • INFO
  • WARN
  • ERROR
  • CRIT
参数配置取值范围之外或错误值都会被重置为默认值。
2log.max.fileSize绕接日志文件的大小。默认值:20
单位:MB
取值范围:[2, 20]
参数配置取值范围之外或错误值都会被重置为默认值。
3log.fileNums日志文件最大绕接数量。默认值:20
取值范围:[1, 200]
参数配置取值范围之外或错误值都会被重置为默认值。
4log.queue.maxItem日志缓冲区最大缓存量条数。如果超过该值,则覆盖最初的日志。默认值:4096
单位:条
取值范围:[64, 4096]
参数配置取值范围之外或错误值都会被重置为4096。
5log.sys.opensyslog记录日志开关。默认值:false
取值范围:[true,false]
参数配置取值范围之外或错误值都会被重置为默认值。
6log.sys.typesyslog记录日志类型。默认值: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]

配置项说明

序号参数说明取值
1heartbeat.timeInterval发送心跳间隔时间,单位毫秒。默认值:2000
单位:毫秒
取值范围:[1000, 60000]
参数配置取值范围之外的值会被重置为默认值。
2heartbeat.lostThreshold备节点心跳丢失次数阈值。默认值:3
取值范围:[3, 20]
参数配置取值范围之外的值会被重置为默认值。
3election.candidate节点是否参与选主。默认值:true
取值范围:[true,false]
如果取值超过范围,则取默认值true。
4election.candidateNodes候选主节点ID列表(逗号分隔)。
⚠ 集群内所有节点该配置项必须配置一致。
默认值:用#注释(不配置)
配置且非空时,仅列表内节点可升主,election.candidate 开关不再生效;
未配置/为空/解析非法时,该配置不生效,election.candidate 生效。
5election.wait节点是否等待最小节点发起选主。默认值:true
取值范围:[true,false]
如果取值超过范围,则取默认值true。

rpc通信配置说明

section取值:[ubse.rpc]

配置项说明

序号参数说明取值
1request.timeoutrpc通信接口的超时时间默认值:60
单位:秒
取值范围:[0,65535]
如果取值超过范围,则取默认值60。
2cluster.ipListrpc使用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
3cert.userpc安全证书能力开关默认值: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]

配置项说明

序号参数说明取值备注
1ubse.server.portUBSE暴露给UBM的通信端口,在该端口开启HTTPS服务。默认值:用#注释
取值范围:[1024, 65535]
如果取值超过范围,则取值为8082。
UBM和UBSE共部署在host主机时,ubm.server.cid用#注释,UBSE与UBM使用UDS通信,此配置项不生效;高安部署模式下,ubm.server.cid配置开启,UBSE与UBM使用HTTPS通信,此配置项生效。
2ubm.server.portUBM暴露的通信端口,UBSE通过该端口与UBM进行HTTPS交互。默认值:用#注释
取值范围:[1024, 65535]
如果取值超过范围,则取值为8799。
UBM和UBSE共部署在host主机时,ubm.server.cid用#注释,UBSE与UBM使用UDS通信,此配置项不生效;高安部署模式下,ubm.server.cid配置开启,UBSE与UBM使用HTTPS通信,此配置项生效。
3ubm.server.cid高安场景UBM所在机密虚机的地址。默认值:用#注释
打开此配置时(取消注释),与UBM使用HTTPS通信,此配置注释时与UBM使用UDS通信。
取值范围:[0, 2^32-1]
如果取值超过范围,则不使能高安模式。
  • UBM和UBSE共部署在host主机时,该配置项关闭,两者之间使用UDS通信;在高安部署模式下,该配置开启,两者之间使用HTTPS通信。
  • UBSE与UBM所在机密虚机使用vsock通信,参数配置取值应该与虚拟机启动使用的cid一致,配置错误的cid,会导致与虚拟机通信失败。
4ubm.server.hostnameubm主机标识,要和ubm侧的服务端证书中主题备用名称(SAN)或通用名称(CN)字段包含的主机标识其中之一一致。如果不一致Ubse启动发生异常,功能不可用。默认值:用#注释
取值范围:有效的DNS主机名,配置非法值会被重置为默认值localhost。
仅高安场景生效。
校验失败,Ubse启动发生异常,功能不可用,UBSE与UBM使用HTTPS通信,此配置项生效,需要确保生效的主机名能被DNS解析到ip地址127.0.0.1上。

VSOCK代理配置说明

section取值:[ubse.proxy]

配置项说明:

序号参数说明取值备注
1proxy.server.cidVSOCK通信的上下文标识符(CID),用于标识卸载OS与Hypervisor OS(Host)上UBSE服务端之间的通信。默认值:用#注释
取值范围:[0, 2^32-1]
常见取值:1(VMADDR_CID_LOCAL)或指定CID。
  • 云卸载场景下使用,配置为UBSE服务端所在Hypervisor侧的CID。
  • 配置错误的CID会导致VSOCK通信连接失败。
  • 所有节点的配置需保持一致。
2proxy.server.portVSOCK管理面通信的指定端口号,UBSE服务端需在该端口上侦听,以允许卸载OS侧的ubsectl命令正确代理。默认值:用#注释
取值范围:[1024, 65535]
参考值:5423
  • 该端口必须与UBSE服务端侦听的VSOCK端口一致。
  • 所有节点的配置需保持一致。

VSOCK代理配置说明

section取值:[ubse.proxy]

配置项说明:

序号参数说明取值备注
1proxy.server.cidVSOCK通信的上下文标识符(CID),用于标识卸载OS与Hypervisor OS(Host)上UBSE服务端之间的通信。默认值:用#注释
取值范围:[0, 2^32-1]
常见取值:1(VMADDR_CID_LOCAL)或指定CID。
- 云卸载场景下使用,配置为UBSE服务端所在Hypervisor侧的CID。
- 配置错误的CID会导致VSOCK通信连接失败。
- 所有节点的配置需保持一致。
2proxy.server.portVSOCK管理面通信的指定端口号,UBSE服务端需在该端口上监听,以允许卸载OS侧的ubsectl命令正确代理。默认值:用#注释
取值范围:[1024, 65535]
参考值:5423
- 该端口必须与UBSE服务端监听的VSOCK端口一致。
- 所有节点的配置需保持一致。

内存池化配置说明

section取值:[ubse.memory]

配置项说明

序号参数说明取值备注
1obmm.memory.block.size芯片表项内存拆分粒度大小。默认值:用#注释
单位:MB
取值范围:[4, 4096]
参数取值必须是2的整数倍。
管理员可按需修改配置文件,增加该配置,当该配置被定义时以配置文件为准。
校验规则:
  1. 配置值超范围,取默认值。
  2. 各节点不一致,借用失败。
当ubse.conf文件不显式配置时,取值规则如下:
  1. mempool_allocator=buddy_highmem时,obmm.memory.block.size取值为128。
  2. mempool_allocator=hugetlb_pmd时,obmm.memory.block.size取值为128。
  3. mempool_allocator=hugetlb_pud时,obmm.memory.block.size取值为1024。
当用户借用内存大小不与blocksize对齐时,导出内存会向上取整。
预上线场景(ubse.preonline.enable配置项为true)建议配置为UB Memory decoder表中entry粒度的整数倍,entry粒度默认为2G。
2isLender当前节点是否可以作为内存借出节点。默认值:true
取值范围:[true,false]
如果取值超过范围,则取默认值true。
3ubse.preonline.enable是否开启预上线能力。默认值:false
取值范围:[true,false]
如果取值超过范围,则取默认值false。
  • 依赖环境启用预上线能力,需在/boot/efi/EFI/openEuler/grub.cfg文件的numa_remote配置项中配置preonline。
  • 所有节点的配置需保持一致。
4ubse.preonline.size预上线的内存大小。默认值:4096
单位:MB
取值范围:[128, 262144]
参数取值必须是128的整数倍,取值超过范围则取默认值4096。
  • 依赖环境启用预上线能力,需在/boot/efi/EFI/openEuler/grub.cfg文件的numa_remote配置项中配置preonline。
  • 建议配置为UB Memory decoder表中entry粒度的整数倍,entry粒度默认为2G。
  • 所有节点的配置需保持一致。
5api.timeoutAPI接口调用的超时时间。默认值:1800
单位:秒
取值范围:[1,3600]
如果取值超过范围,则取默认值1800。
  • 下层执行超过这个时间会给上层API接口调用返回超时,超时后续借用的数据由上层接口管理是否清理。
  • 所有节点的配置需保持一致。
6lender.balance算法是否使用借出 NUMA 均衡模式。默认值:false
取值范围:[true,false]
如果取值超过范围,则取默认值false。
  • true:资源充足时,不同的借用请求节点尽量优先分散到不同节点的借出numa或者相同节点的不同借出numa上,相同借用请求节点优先复用其历史使用的借出numa。
  • false:默认决策方式,资源充足时,不同的借用请求节点也可能由相同的借出节点的借出numa借出(借出numa优先选择最大剩余内存的numa)。
  • 此配置项已弃用,请使用 scheduler.mode 替代。
7group同一个组里的节点可以相互借用。默认值:用#注释(所有节点在同一个组里)
  • 同一个组里可以相互借用,以分号为组与组之间的标识。
  • 不配置时/配置为空时,默认所有节点在同一个组里。
  • 必须保证集群中所有节点hostname唯一。
  • 配置的节点数量需要和集群静态规划节点数量一致。
  • 一个节点不允许在多个group。
  • 所有节点的配置需保持一致。
8provider指定节点专用于借出。默认值:用#注释(所有节点均可借出)
  • 不配置时/配置为空时,默认所有节点均可借出。
  • 必须保证集群中所有节点hostname唯一。
  • 配置的节点数量必须小于集群静态规划节点数量。
  • 所有节点的配置需保持一致。
9radius.lender借出节点的内存借用半径。默认值:用#注释(不限制)
取值范围:[0, 65535]
如果取值超过范围,则取默认值65535(不限制)。
  • 控制借出节点允许借用内存的半径范围。
  • 所有节点的配置需保持一致。
  • 仅适用于fd和numa借用场景。
10radius.borrow借入节点的内存借用半径。默认值:用#注释(不限制)
取值范围:[0, 65535]
如果取值超过范围,则取默认值65535(不限制)。
  • 控制借入节点请求内存的半径范围。
  • 所有节点的配置需保持一致。
  • 仅适用于fd和numa借用场景。
11obmm.memory.offline.timeoutobmm_unimport操作超时时间。默认值:用#注释
单位:秒
取值范围:[10, 1800]
  • 当显式配置该配置项且值在范围内时,obmm_unimport超时时间固定为该值。
  • 当不配置、配置值非法或超出范围时,超时时间由内部决策。
12scheduler.mode内存调度模式,控制 socket NUMA 选择策略。默认值:free-priority
取值范围:free-priority / reliability-priority / performance-priority
如果取值超过范围,则取默认值free-priority。
  • free-priority:优先选择空闲率最高的节点。
  • reliability-priority:优先复用已有借用关系并均衡各节点的借出数。
  • performance-priority:均衡各节点带宽利用率,兼顾时延、内存利用率和可靠性。
  • 当不配置时,检查已弃用的 lender.balance,兼容方式如下:
    lender.balance=true 时取值 reliability-priority,lender.balance=false 取值 free-priority。
13bandwidth.toleranceperformance-priority 模式下带宽均衡评分的分带宽度(容忍度)阈值。默认值:2 × block.size
单位:MB
取值小于block.size视为非法,取默认值2 × block.size。
对每个候选借出 socket 模拟本次借用后,计算候选集合借出量 spread(最大借出 − 最小借出);分带值 D = spread / tolerance(向下取整),D=0 即借入后差值 < tolerance,此时带宽分最优;所有候选按 D 做 min-max 归一化得到带宽分。建议 tolerance 与典型单次借用大小配置为同量级。
14sei.enable控制内存借用时是否启用OS的SEI降级功能。默认值:false
取值范围:[true,false]
如果取值超过范围或非法,则取默认值false。
  • 仅在借入节点生效。
  • 依赖 /etc/sudoers.d/ubse-sei 授予 ubse 用户 sysctl 提权权限。
  • sei.enable=true 时,首次借用内存后自动执行 sysctl -w kernel.arm64_sync_sei=1 开启OS的SEI降级功能;末次归还后自动关闭OS的SEI降级功能。
  • sei.enable=false时不会触发OS的SEI降级功能,UB断链导致的内存错误可能触发 OS Panic。
15scheduler.node_lending_limit调度器节点最大借出量,即节点作为 lender 的借出总量上限。默认值:用#注释(不限制)
单位:GB
取值范围:[0, 65535]
配置为 0 或不配置时表示不限制,取值超过范围则回退为 0(不限制)。
  • 调度器在选择 lender 前校验 lender.totalLent + 本次借出量 ≤ node_lending_limit,超出上限的节点不会被选中。
  • 所有节点的配置需保持一致。
  • 默认不限制,按需由部署方显式开启。

URMA配置说明

section取值:[ubse.urma]

配置项说明

序号参数说明
取值
备注
1topo_modeUBSE在CLOS组网下向URMA UVS下发拓扑时使用的建链模式。1D-FULLMESH组网下该配置不生效。默认值:用#注释
取值范围:
  • non-cross
  • hccs-cross
参数配置取值范围之外或错误值都会被重置为 non-cross。
仅CLOS组网使用。

权限点配置

权限点说明

基于安全考虑,在UBSE中引入“轻量化角色访问控制(RBAC)能力”,达成对单一外部用户进行权限最小化控制。

mermaid
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的定义:禁止与其他自定义文件内容重复,重复会相互覆盖,禁止尝试修改内置权限点的内容(配置不会生效)。

表 1 内置权限点说明

用户角色说明
UBSE内置管理员用户ubse(UBSE进程运行用户)、root用户。
UBSE内置管理员角色admin用于支持管理员用户授权。
UBSE内置all对象表示所有对象。
管理员角色admin具备all对象的操控权限。

说明

内置ubse/root用户、管理员角色admin,均不能被覆盖。

参数说明

参考表2配置自定义权限点。

表 2 auth_test.conf配置说明

序号所属配置节参数说明取值配置节点
1[auth.user]user客户端需要自定义配置的用户名禁止与其他自定义文件内容重复,重复会相互覆盖;禁止修改内置用户root,ubse;客户端用户不允许配置为admin角色。客户端需要给该用户配置的角色。所有节点
2[auth.role]default_ubsm客户端需要自定义配置的角色禁止与其他自定义文件内容重复,重复会相互覆盖;禁止修改内置角色admin;自定义角色不允许引用all对象。客户端需要给该角色配置的权限点。所有节点

配置示例

示例如下:

shell
[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]ubsmdubsmd用户默认值:default_ubsm所有节点通算大数据场景
2[auth.user.default]ubs-scheduleropenstack插件用户默认值:default_op所有节点通算虚拟化场景
3[auth.role.default]matrixplugink8s插件用户默认值:default_k8s所有节点通算虚拟化场景
4[auth.role.default]default_ubsmubsm场景角色默认值:mem.fd,mem.numa,mem.shm,mem.stat,topo所有节点通算大数据场景
5[auth.role.default]default_opopenstack场景角色默认值:topo,npu所有节点通算虚拟化场景及智算NPU直通虚机
6[auth.role.default]default_k8sk8s场景角色默认值:mem.numa,topo所有节点通算虚拟化场景

VSOCK CID用户映射配置说明

section取值:[auth.vsock.cid2user]

配置项说明:

序号参数说明取值配置节点应用场景
1<cid>VSOCK连接的源CID到用户的映射,用于VSOCK连接到达时确定用户身份以进行授权。映射的用户名,必须为[auth.user.default]或[auth.user]中已定义的用户。所有节点云卸载VSOCK通信场景

配置示例:

shell
[auth.vsock.cid2user]
1 = ubsmd
2 = ubs-scheduler

默认配置

shell
[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.fdubs_mem_fd_create等fd形态远端内存借用通算大数据场景
mem.numaubs_mem_numa_create等numa形态远端内存借用通算大数据/虚拟化场景
mem.shmubs_mem_shm_create等共享形态远端内存借用通算大数据场景
mem.statubs_mem_numastat_get内存统计查询通算大数据场景
topoubs_topo_node_list等拓扑信息查询所有场景
urmaubs_urma_dev_get等URMA设备管理URMA通信场景
npuubs_npu_device_list_query, ubs_npu_device_alloc, ubs_npu_device_free, ubs_npu_device_list_free, ubs_uba_tid_size_queryNPU设备查询/使能/去使能,允许调用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配置说明

序号参数说明取值配置节点应用场景
1ubse.plugin.nameVM模块插件名。固定值为virt_agent所有节点通算虚拟化场景
2ubse.plugin.pkgVM模块依赖的so文件名称。固定值为libvirtagent.so所有节点通算虚拟化场景
3ubse.plugin.vm.export.intervalVM模块数据采集周期。默认值:2单位:s
取值范围:[1, 60]仿真UB环境,取值建议不少于10参数配置取值范围之外或错误值都会被重置为默认值。
所有节点通算虚拟化场景
4borrow.watermark决策模块第二逃生水线占比配置,高于会触发内存借用。默认值:92单位:%
取值范围:[70,95]且high.watermark <= borrow.watermark - 5参数配置取值范围之外或错误值都会被重置为默认值。
所有节点通算虚拟化场景
5high.watermark高水线百分比,高触发借用或迁移,低触发归还,且用于决策模块。默认值:85单位:%
取值范围:[65~90]且low.watermark +5 <= high.watermark <= borrow.watermark - 5参数配置取值范围之外或错误值都会被重置为默认值。
所有节点通算虚拟化场景。
6low.watermark低水线百分比,高触发借用或迁移,低触发归还,且用于决策模块。默认值:80单位:%
取值范围:[60~80]low.watermark +5 <= high.watermark参数配置取值范围之外或错误值都会被重置为默认值。
所有节点通算虚拟化场景。
7borrow.maxMemPerBorrowSize单块借用内存的借用量上限。默认值:4096单位:MB
取值范围:{1024,2048,3072,4096}且borrow.minMemPerBorrowSize <= borrow.maxMemPerBorrowSize参数配置取值范围之外或错误值都会被重置为默认值。
所有节点通算虚拟化场景
8borrow.minMemPerBorrowSize单块借用内存的借用量下限。默认值:1024单位:MB
取值范围:{1024,2048,3072,4096}参数配置取值范围之外或错误值都会被重置为默认值。
所有节点通算虚拟化场景
9borrow.maxPerTotalMemBorrowSize单次决策最多内存借用上限。默认值:16384单位:MB
取值范围:[4096, 20480]参数配置取值范围之外或错误值都会被重置为默认值。
所有节点通算虚拟化场景
10borrow.oomBorrowMemSizeoom事件期望借用内存大小。默认值:1024单位:MB
取值范围:[1024,4096]参数配置取值范围之外或错误值都会被重置为默认值。
所有节点通算虚拟化场景
11escape.algorithm.dir自定义逃生算法so文件的绝对路径,配置中应包含so文件名称。由配置方保证加载so文件的安全可靠性。默认值:/usr/lib64/libstrategy.so所有节点通算虚拟化场景
12mig.ham.maxTimeout单个VM确定性热迁移的任务的超时时间。默认值:60单位:s
取值范围:[10, 10800]
UB仿真环境建议配成10800。参数配置取值范围之外或错误值都会被重置为默认值。
所有节点通算虚拟化场景
13mig.migrateOneCopyMemoryBoundUB代际下虚拟机热迁移决策OneCopy迁移策略的虚拟机内存阈值。默认值:4096单位:MB
取值范围:[256,4096]
UB仿真环境建议配成256。当目的节点为当前节点的邻居节点,虚拟机使用2M大页,节点间内存借用没有成环,且虚拟机内存规格大于mig.migrateOneCopyMemoryBound配置项的值时,为确定性热迁移。参数配置取值范围之外或错误值都会被重置为默认值。
所有节点通算虚拟化场景
14virt.pageType虚拟化场景页面类型配置。默认值:1
取值范围:0/1
用于设置冷内存迁出时的页面单位,标准设置为0,2M设置为1。
所有节点通算虚拟化场景
15mig.isEnableHamMigrate是否支持确定性热迁移开关。默认值:false
取值范围:false/true
开启确定性热迁移,使用true。
所有节点通算虚拟化场景
16virt.sceneType虚拟化场景类型应用配置。默认值:1
取值范围:0/1
容器场景设置为0,虚拟机场景设置为1。
所有节点通算虚拟化场景

配置示例

示例如下:

shell
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=1

plugin_mempooling.conf

参数说明

参考表1修改/etc/ubse/plugins/plugin_mempooling.conf。

表 1 plugin_mempooling.conf配置说明

序号参数说明取值配置节点应用场景
1ubse.plugin.namemempooling模块插件名。固定值为mempooling所有节点通算虚拟化场景
2ubse.plugin.pkgmempooling模块依赖的so文件名称。固定值为libmempooling.so所有节点通算虚拟化场景
3ucache.enable容器超分场景,是否启用pagecache功能。默认值:false
单位:bool
所有节点容器超分场景
4rmrs.ipc.timeout与osturbo进行进程通信的超时时间。默认值:60
单位:s
所有节点通算虚拟化场景
5rmrs.fragment.mustSamePlane内存碎片场景,内存借用、迁出策略、迁出执行、故障处理,是否必须同平面(true:必须同平面,false:优先同平面)。默认值:true
单位:bool
配置范围:false/true
所有节点通算虚拟化场景
6rmrs.fragment.enableBorrowSplit内存碎片场景,借用是否切分为 4G 粒度(true: 切分,false: 不切分)。默认值:true
单位:bool
配置范围:false/true
所有节点通算虚拟化场景
7overcommit.enableMultiNuma容器超分场景,是否为虚机多numa场景(true: 虚机多numa场景, false: 单numa场景)。默认值:false
单位:bool
配置范围:false/true
所有节点容器超分场景

配置示例

示例如下:

shell
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=false

plugin_ucache.conf

参数说明

参考表1 plugin_ucache.conf配置说明修改/etc/ubse/plugins/plugin_ucache.conf。

表 1 plugin_ucache.conf配置说明

序号参数说明取值配置节点应用场景
1ubse.plugin.nameUCache模块插件名。固定值为ucache所有节点通算大数据场景
2ubse.plugin.pkgUCache模块依赖的so文件名称。固定值为libucache_plugin.so所有节点通算大数据场景
3ucache.export.intervalUCache模块数据采集周期。默认值:10
单位:s
取值范围:[1, 60]
仿真UB环境,取值建议不少于10。
所有节点通算大数据场景
4strategy.borrow_size以16进制表示,单次借用或归还动作操作的最小内存大小。参数不在配置范围内,插件初始化失败。默认值:1073741824
单位:字节
配置范围:[134217728,4294967296]
所有节点通算大数据场景
5strategy.maxActionSize借用策略动作集动作的最大数量,整数型。参数不在配置范围内,插件初始化失败。默认值:10
配置范围:>=0
所有节点通算大数据场景
6strategy.balanceThreshold借用策略中平衡阈值,节点的平衡状态如果大于平衡阈值将会发生借用调度来平衡系统,浮点型。参数不在配置范围内,插件初始化失败。默认值:1.5
配置范围:>=1
所有节点通算大数据场景
7strategy.scarcityThreshold发起借用动作时的最小内存稀缺度,浮点型。参数不在配置范围内,插件初始化失败。默认值:0.01
配置范围:>=0
所有节点通算大数据场景
8bottleneck.threshold应用瓶颈识别的阈值,来判断PageCache in和IO读写带宽,整数型。参数不在配置范围内,则采用默认值。默认值:10240
单位:kB/s
配置范围:[1,1010241024]
所有节点通算大数据场景
9bottleneck.short.size应用瓶颈识别的短窗口长度,整数型。参数不在配置范围内,则采用默认值。默认值:180
单位:秒
配置范围:[30,1200]
所有节点通算大数据场景
10bottleneck.short.threshold应用瓶颈识别的短窗口阈值,整数型。参数不在配置范围内,则采用默认值。默认值:70
单位:百分比
配置范围:[0,100]
所有节点通算大数据场景
11bottleneck.long.size应用瓶颈识别的长窗口长度,整数型。参数不在配置范围内,则采用默认值。默认值:600
单位:秒
配置范围:[90,3600]
所有节点通算大数据场景
12bottleneck.long.threshold应用瓶颈识别的长窗口阈值,整数型。参数不在配置范围内,则采用默认值。默认值:30
单位:百分比
配置范围:[0,100]
所有节点通算大数据场景
13strategy.maxReliableTimes借用策略数据最大可靠周期数,每个周期的时间由master.masterInterval 决定,整数型。参数不在配置范围内,则采用默认值。默认值:3
配置范围:[1,10]
所有节点通算大数据场景
14master.masterIntervalmaster主流程间隔时间,整数型。参数不在配置范围内,插件初始化失败。默认值:3
单位:秒
配置范围:[1,15]
所有节点通算大数据场景
15master.maxBorrowSize最大借用内存量,整数型。参数不在配置范围内,插件初始化失败。默认值:1073741824
单位:字节
配置范围:strategy.borrow_size的正整数倍。
所有节点通算大数据场景

配置示例

示例如下:

shell
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