分类 Memory Management 下的文章

How to get kaslr offset on ARM64

Red Hat的crash工具有个option是--kaslr,一般解析ramdump会用,工具定义:--kaslr offset | auto If x86, x86_64 or s390x kernel was configured with CONFIG_RANDOMIZE_BASE, the offset value is equal to the dif...阅读全文

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的...阅读全文

ion简要介绍

Ion是google为了解决不同Android设备的内存碎片问题,在Android4.0中提出的下一代更通用的内存管理器,支持各种不同的内存分配,这些内存种类包括有:carveout, 物理连续的,虚拟连续的,iommu,secure memory,ion也可以在不同进程,user和kernel间共享buffer。Ion把不同的内存空间用heap来分割管理,一般在dts中...阅读全文