写在前面
参考:AOSP/system/memory/lmkd/README.md
≥ Android10
lmkd可用于监控操作Android系统的内存状态,并根据优先级杀死最不重要的过程(the least essential process)释放某些内存,确保系统稳定运行。
再过去,Android使用内核级lmk监控内存压力,内核级lmkd驱动是一种硬编码值的严格机制。从内核4.12开始,LMK驱动程序改为用户空间lmdk执行系统内存监控和过程检查。
一、PSI 压力速度信息
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 根据过程的重要性分配功能限制