分类 Memory Management 下的文章

Linux CMA代码分析

CMA全称Contiguous Memory Allocator,是Linux内核的连续内存分配器,最近就遇到一个因CMA分配失败导致的camera功能异常,log如下:<6>[ 3371.081458] alloc_contig_range: [8fa00, 8ff00) PFNs busy <6>[ 3371.081481] alloc_con...阅读全文

Android P使能用户态LMK说明

先看官方介绍:如何改用用户空间 lmkd从 Android 9 开始,用户空间 lmkd 会在未检测到内核 lowmemorykiller 驱动程序时激活。请注意,用户空间 lmkd 要求内核支持内存 cgroup。因此,要改用用户空间 lmkd,您应使用以下配置设置编译内核:CONFIG_ANDROID_LOW_MEMORY_KILLER=n CONFIG_MEMCG=...阅读全文

Android P LMKD分析二

关于mp_event_common接受的内存压力事件,是从内核而来,简单说下。先来看下官方的介绍:Historically, Android used in-kernel lowmemorykiller driver to handle memory pressure situations by killing non-essential processes. This ...阅读全文

Android P LMKD分析一

Android P lmkd新增了许多机制和属性,包括引入原来内核的minfree算法等,看样子是越来越复杂了,下面来看看,内核版本4.9,高通平台。how to kill先看下应该杀掉哪个process or 哪些processes(yes, 已经支持)?主要改动是:support kill heaviest processsupport kill multiple p...阅读全文

memcg: understand memory usage

Android Go的用户态lmk在探测内存压力时用到了memcg的如下内存使用统计:#define MEMCG_MEMORY_USAGE "/dev/memcg/memory.usage_in_bytes" #define MEMCG_MEMORYSW_USAGE "/dev/memcg/memory.memsw.usage_in_byte...阅读全文

Android Go lowmemorykiller分析

Android Go是a feature of Android O MR1(8.1),它已经不再使用in kernel lowmemorykiller了,取而代之的是user space的基于memory pressure的killer。这个user space的代码就是system/core/lmkd/lmkd.c,它是如何detect memory pressure的...阅读全文