分类 Memory Management 下的文章

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

解决kmalloc分配失败的问题

最近遇到一个kmalloc内存分配失败的问题,是刚刷完手机第一次开机很大概率出现,重启后就好了,Android7.0/ARM64/kernel3.18。01-09 04:55:23.878 0 0 W Thread-2: page allocation failure: order:4, mode:0xc0d0order-4是16个page了。call s...阅读全文

Linux内存回收Overview

内核版本3.18, 内存回收和内存分配连在一起的, 了解下:what is order in mm:mel gorman's book:the allocator maintains blocks of free pages where each block is a power of two number of pages. The exponent for the p...阅读全文

kswapd唤醒分析

kswapd is a background pageout daemon,回收内存。唤醒的接口是 wake_all_kswapd/wakeup_kswapd,lets check./* * This is the 'heart' of the zoned buddy allocator. */ struct page * __alloc_pages_nodemask...阅读全文

理解Linux VM pressure

原生Linux内核是把vmpressure和CONFIG_MEMCG绑定的,是给用户态用的。makefile里写的很清楚:obj-$(CONFIG_MEMCG) += memcontrol.o page_cgroup.o vmpressure.o内核文档也放到了cgroup下memory.txt:Memory PressureThe pressure level noti...阅读全文