微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 手机设计讨论 > MTK手机平台交流 > 如何定义App的Max Adj

如何定义App的Max Adj

时间:10-02 整理:3721RD 点击:
[DESCRIPTION]
AMS 有一套完整的算法来调整进程的 ADJ. 比如当进程退出使用后, AMS 会将该进程的 ADJ 提高.从而使得 memory 不足时 Low Memory Killer可以有依据杀死进程.
但在产品层面, 总有一些进程是产品特别关心的. 对于这些进程, 不希望 ADJ 调整太高, 避免被 LMK 杀死. 可以有几种方法实现该需求. 比如:
1. 将进程设置为 Persistent. 使进程持续占据 Memory 不被杀死
2. 调整 ADJ 的最大许可值. 在 Memory 不是特别紧张时, 可以保证该进程不被杀死. 而当 Memory 特别紧张时, 又可以被 LMK 杀死, 从而释放出 Memory 给前台进程使用.
这里介绍方法 2.
[SOLUTION]
首先需要加入 Patch ALPS01995207.
然后修改
/vendor/mediatek/proprietary/php?mod=tag&id=6090" target="_blank" class="relatedlink">Frameworks/base/packages/FwkPlugin/src/com/mediatek/op/amsplus/DefaultCusto
mizedOomExt.Java 中的函数 getCustomizedAdj(String processName). 如果传入的是需要重新定义 ADJ 的进程, 则
返回期望的 ADJ.
需要注意的是, 这个修改对 AMS 的策略会产生影响. 必然会影响到其他进程. 所以请一定斟酌放入 getCustomizedAdj
中的进程, 以及期望的 ADJ.
如果需要 Check 修改结果, 需要打开 AMS 的 DEBUG_OOM_ADJ 开关. 当该进程的 ADJ 按照 getCustomizedAdj的返回
结果重新设定时, 会打印如下 trace:
getCustomized(XXXX) with adj = Y cur = Z
其中 Y 表示 getCustomized 给出的 ADJ, Z 表示 AMS 计算出的 ADJ.

学习了~~~~~~~

学习了~~~~~~

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top