4.1 社区代码分支流程 内存查杀白名单功能设置流程总结

  1. 内存查杀流程

    1. /dev/memcg/memory.zswapd_pressure_show buffer_size 获取当前系统压力内存值

    2. 压力内存值 与 水线 作比较 获取 查杀等级 和 需要查杀的内存大小

    3. 计算需要查杀的内存的大小 max_level_mem - current buffer(压力内存值)

    4. 根据查杀的内存的大小 结合 进程优先级 查杀相关进程

    5. 杀掉释放的内存大于需要查杀的内存 结束查杀流程

     

  2. 进程权限优先级列表
    -1000 系统进程,属于该优先级的进程不会被查杀策略查杀,支持白名单配置
    -800 常驻进程,属于该优先级的进程可以被查杀,但优先级较低,且被杀后可以再被拉起,支持白名单配 置
     0 前台应用
     1 前台
     100 正在进行后台短时任务的应用; 或者有被进程关联的extension进程
     200 后台可感知应用,如正在执行导航、播放音乐等长时任务的应用
     260 连接着分布式设备的后台应用
     400 普通后台应用及无被任何进程关联的extension进程

 

  1. 内存查杀白名单功能配置要点

    memmgr_config.xml
    <reclaimPriorityConfig>
      <killalbeSystemApps> /配置为常驻进程
          <killableSysApp>com.ohos.launcher</killableSysApp>
      </killalbeSystemApps>
      <importantBgApps>
         <importantBgApp> /配置重要进程优先级/
            <procName>com.ohos.launcher</procName> <minPriority>0</minPriority>
         </importantBgApp>
      </importantBgApps>
    </reclaimPriorityConfig>

  2. 解决问题心路历程

    1. memmgr_config.xml 没有配置之前 没有添加白名单功能的时候 按照内存查杀的触发逻辑 触发了内存查杀的功能 结合进程的优先级 对进程进行查杀

    2. memmgr_config.xml killalbeSystemApps节点 进行配置 killalbeSystemApps 这个节点配置之后 变成常驻进程 权限为-800 如果进程不涉及进程状态变化导致权限变更(1400)能解决内存查杀的问题

    3. memmgr_config.xml minPriority节点 进行配置有些特殊重要进程权限的优先级 minPriority节点设置进程的权限设置成0 将不触发内存查杀的功能

     

  3. 总结

    1. 需要理清 内存查杀的触发逻辑

    2. 需要理清 进程的权限优先级的具体设置和描述

    3. 需要理清 memmgr_config.xml killalbeSystemApps importantBgApp 节点配置逻辑

     

     

     

     

     

     

     

     

Logo

社区规范:仅讨论OpenHarmony相关问题。

更多推荐