Android P LMKD分析一

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

阅读全文

F2FS保留块特性分析及如何在Android上使用

Android Go data分区启用了f2fs文件系统,从介绍看是为了提高life time和4K文件读写性能,这个暂不关心,三星init,看kernel提交记录后面主要是huawei也参与进来,据说是重金聘用,多少米? 前段时间项目在Go上遇到一个问题:data填满100%一直起不来(kernel: 3.18)。不过可以使用保留空间加一层保护, 重要系统...

阅读全文

Android Go在data分区填近满后不能启动bug分析

最近遇到一个问题:重启压测十来天后出现大量手机不能启动, Android Go/MSM8909,有FWK同事发现空间满了,如下: /dev/block/mmcblk0p39 5.2G 4.8G 340M 94% /data 原来是我们自定义的logd一直写满了data分区,删除后立即启动正常,为什么data满了会导致起不来,看了下Z的手机,...

阅读全文

Fix a strange kernel crash issue on custom driver

最近在从msm_A/kernel3.18 port自定义mmc driver到msm_B/kernel4.9时,出现了kernel crash,log如下: [ 18.739259] Unable to handle kernel paging request at virtual address ffffffc08b8c4f40[ ...

阅读全文

SDCardFS:删除文件后空间未释放问题分析

Android O开始默认使用了sdcardfs,弃用了好多年的fuse,原因就是sdcardfs比fuse性能更优,原生Android sdcardfs的由来:vfs > wrapfs(edu) > sdcardfs(Samsung) > sdcardfs(Google)。 sdcardfs有个问题:cp文件到SD卡(fat格式)再删除这...

阅读全文

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_...

阅读全文

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,它是如何...

阅读全文

System Crash实例分析一

死机分析以前在R平台搞过,基本就是抓到死机时的CPU register等信息,然后用objdump反汇编出来结合源码定位分析,现在到了手机平台,多了个Tracer32,高通分析死机都在用,现在死机都挂我这了,老问高通也不是个事重拾下,我觉得可以不用trace32,基本还是那老一套。 先来看死机现场: [ 1256.852648] Unable to hand...

阅读全文

SELinux:fix an issue about "context_to_sid returned 12"

前方用户提了个故障说手机发热低电下重启后发现有SD掉卡提示,Android_N/Kernel_3.18,离线日志找了半天,logcat日志里发现: 434 439 E vold : Failed to pclose /system/bin/sgdisk --android-dump /dev/block/vold/disk:179:64 ...

阅读全文

分析ueventd Coldboot耗时问题

安卓go平台启动时间发现如下ueventd耗时1.907s问题: 01-11 00:20:02.854 0 0 I init : Parsing file /odm/etc/init...01-11 00:20:02.854 0 0 E init : Unable to open '/odm/etc/in...

阅读全文