参考:AOSP/system/memory/lmkd/README.md
≥ Android10
lmkd可用于监控运行中的Android系统的内存状态,并根据优先级杀掉相对来说最不重要的进程(the least essential process)以释放一定的内存,确保系统稳健运行。
再过去,Android使用内核级的lmk来监控内存压力,该内核级lmkd驱动是一种依赖硬编码值的严格机制。从内核4.12开始,LMK驱动程序改由用户空间的lmdk来执行系统内存监控和进程的查杀。
PSI(Pressure Stall Information)压力失速信息。
Android10+以后的lmkd通过内核的PSI来监控内存压力。
PSI统计数据为即将发生的资源短缺提供了预警功能,因而实现更主动、更细致、更准确的响应。当然PSI统计数据不仅包含了Memory,它同时涵盖了Memory、CPU、IO三大资源的pressure指标,来帮助工程师们及时管控系统资源短缺的情况。
1.1 PSI使能
如果需要使能PIS,则需要配置ro.lmk.use_psi为true,默认为true。及lmk会以PSI作为默认机制(除此之外还有vmpressure机制)。因为PSI需要内核支持,因此需要在编译内核时配置CONFIG_PSI=y。
二,LMKD机制介绍(用户空间)
用户空间 lmkd 与内核中的功能相似,它默认使用压力失速信息 (PSI) 监视器来获取关于内存压力水平的通知,以及使用内存 cgroup 功能限制根据进程的重要性分配给