开发者
资源
文档评分
获取效率
正确性
完整性
易理解
在线提单
论坛求助

安装与部署ProcessMem

ProcessMem是UBS Engine的一款进程级内存调度插件。通过周期性扫描/proc发现纳管进程(支持按PID、进程名配置,并自动发现子进程),采集进程在各NUMA节点上的内存分布与本地NUMA空闲内存,当本地空闲内存低于水位阈值时自动向远端NUMA借用内存并迁移进程页面(依赖RMRS/SMAP能力),本地空闲内存回升或收到借出节点的归还请求后自动迁回并归还。同时支持故障处理中的债务保留与重试、启动与运行期账本对账恢复(含smap实测回填与孤儿债务清理),以及OOM紧急借用与快速检测。

  1. ProcessMem安装与部署。
    rpm -ivh ubs-engine-processmem-*.oe2403sp3.aarch64.rpm
  2. 修改插件主配置文件。使用vim命令打开“/etc/ubse/plugins/plugin_process_mem.conf”。将filter_root_process配置项修改为false,将pressing_free_threshold配置项修改为4096,表示当前节点的可用内存不足4096GB时,触发内存超分,然后按:wq保存退出。
    ubse.plugin.name=process_mem
    ubse.plugin.pkg=libprocess_mem.so
    
    [process_mem]
    # 进程发现/采集周期(/proc 扫描),默认 5,范围 [1, 3600]
    collect_process_interval=5
    # 是否过滤 root 进程(uid 0),默认开启
    filter_root_process=false
    # 调度决策周期(超时检查/借用/被动归还),默认 5,范围 [1, 3600]
    schedule_interval=5
    # 本地 NUMA 空闲内存借用阈值,默认 15,范围 [1, 4096](单位 GB)
    pressing_free_threshold=4096
    # 借用超时时间,默认 1000,范围 [1, 1800000](每 128MB 借用量对应的毫秒数)
    borrow.timeout=1000
    # 借用是否必须同平面,true=必须(严格过滤),false=软偏好(评分加权)
    borrow.must_same_plane=false
    
    # 主动归还配置(可选,使用默认值即可)
    [process_mem.return]
    # 紧急快轮询观测窗口采样次数,默认 300(300×200ms≈60s 观测窗口)
    observe_cycles=300
    
    # OOM 快速检测配置(可选,使用默认值即可)
    [process_mem.oom]
    # 紧急快轮询间隔,默认 200,范围 [50, 60000](单位 毫秒)
    collect_node_interval=200
    # 紧急借用/被动归还阈值,默认 5,范围 [1, 4096](单位 GB);空闲回升时配合观测窗口触发主动归还
    emergency_free_threshold=5
    表1 参数说明

    参数名称

    默认值

    单位

    配置范围

    说明

    ubse.plugin.name

    process_mem

    -

    -

    插件名称。

    ubse.plugin.pkg

    libprocess_mem.so

    -

    -

    插件动态库包名。

    collect_process_interval

    5

    秒

    [1, 3600]

    进程发现与采集周期,周期内扫描/proc、采集VmRSS与NUMA内存分布。参数不在配置范围内则采用默认值。

    filter_root_process

    true

    -

    true/false

    是否过滤root进程(uid 0)。开启后root进程不纳管、不参与借用;PID配置了root进程将被拒绝。

    schedule_interval

    5

    秒

    [1, 3600]

    调度决策周期,周期内执行借用超时检查、借用决策与被动归还广播。参数不在配置范围内则采用默认值。

    pressing_free_threshold

    15

    GB

    [1, 4096]

    本地NUMA总空闲内存低于该阈值时触发借用。应小于本地总内存,且大于emergency_free_threshold。参数不在配置范围内则采用默认值。

    borrow.timeout

    1000

    毫秒/128MB

    [1, 1800000]

    每128MB借用量对应的超时时间,超时未完成的借用将被清理并归还。参数为0或超出范围则采用默认值。

    borrow.must_same_plane

    false

    -

    true/false

    true表示借用必须落在同平面节点(严格过滤);false表示软偏好,按评分加权选择借出节点。

    observe_cycles

    300

    次

    [1, 4096]

    OOM快速轮询观测窗口采样次数,窗口内空闲内存最小值高于pressing_free_threshold时触发主动归还。参数不在配置范围内则采用默认值。

    collect_node_interval

    200

    毫秒

    [50, 60000]

    OOM紧急快速轮询间隔,用于本地空闲内存的持续监控。参数不在配置范围内则采用默认值。

    emergency_free_threshold

    5

    GB

    [1, 4096]

    本地空闲内存低于该阈值时触发紧急借用并向借入节点广播被动归还请求;与OOM观测窗口配合,空闲内存回升(观测窗口最小值高于pressing_free_threshold)时触发主动归还。应小于pressing_free_threshold。参数不在配置范围内则采用默认值。

  3. 修改准入配置。使用vim命令打开“/etc/ubse/ubse_plugin_admission.conf”,启用mempooling插件(使用预留的插件码777)以及process_mem插件(使用预留的插件码234),然后按:wq保存退出。
    # mempooling plugin. Default value: 777
    mempooling=777
    # process_mem plugin. Default value: 234
    process_mem=234
  4. 启动服务。ProcessMem作为UBS Engine插件,随UBSE服务启动。
    systemctl restart ubse