Android System Opt

Basicconcepts

shrink: 针对slab分配器的缓存释放(释放就是回收)

reclaim: 针对buddy system的匿名页面释放

KSM: kernel samepage merging

zRam: zram是Linux内核的一个模块,之前被称为“compcache”。zram通过在RAM内的压缩块设备上分页,直到必须使用硬盘上的交换空间,以避免在磁盘上进行分页,从而提高性能;zram acts as swap disk. Pages swapped to this disk are compressed and stored inmemory itself. Compressing pages and keeping them in RAM virtually increasesits capacity. This allows more applications to fit in given amount of memory

swapd:内核模块swapd来具体进行swap操作

LMK: Android内核的一种通过杀进程来清理内存的机制,和Linux OOM机制类似;主要依据AMS维护的OOM_ADJ变量来判决kill哪个进程

Android-speedupzram

基于zram的内存回收优化方案思路,在适当的时机(CPU进idle)模仿kswapd的操作告知zram来腾出“可以交换出”的内存以增加当前空闲内存的容量。类似于加强版的kswapd,灵活地增加页面回收的强度和时机,最终用到内核中的zram机制。注:标准内核的回收管理机制根据页面活跃程度,来决定哪些页面需要被释放

Debuggingswap

Steps of enlarge swap space

From: ref:http://blog.csdn.net/xiaotuni/article/details/5417144

 

第一:查看当前空间大小:

       free -m

                 total       used       free    shared    buffers     cached

Mem:          1002        977         24         0         25        638

-/+ buffers/cache:       313        688

Swap:         991          0       991

 

第二:进入root用户 输入sudo -i 然后输入密码,就可以了。

第三:用户在根目录下创建一个目录

        mkdir /swap

第四:进入swap目录;

        cd /swap

第五:输入要创建交换分区命令然后回车;

       dd if=/dev/zeroof=swapfile bs=1024 count=1029000

       可以看到如下内容:

 

       记录了1029000+0的读入

       记录了1029000+0的写出

       1053696000字节(1.1GB)已复制,69.0168 秒,15.3 MB/秒

 

       可以用ls-lh 可以看到一个文件。

       -rw-r--r-- 1 root root1005M 2010-01-02 14:35 swapfile

 

第六:输入命令       mkswapswapfile 可以看到下面内容:

        mkswap: swapfile:warning: don't erase bootbits sectors

        on whole disk. Use -fto force.

        Setting up swapspaceversion 1, size = 1028996 KiB

        no label,UUID=82eda1f8-f20a-4ca0-ba21-a4bdce5b765a

第七:挂载交换分区:swapon swapfile

如 果想卸载的话输入:swapoffswapfile

第八:再查看空间大小:free -m

             total       used       free    shared    buffers     cached

Mem:          1002        980         21          0         13        738

-/+ buffers/cache:       229        773

Swap:         1899          0       1899

Checking swap

cat /proc/swaps

/proc/sys/vm/swappiness

explanation: in Documentation/sysctl/vm.txt

688 This control is used to define how aggressive the kernel willswap

689 memory pages.  Highervalues will increase agressiveness, lower values

690 decrease the amount of swap.

692 The default value is 60.

SK: max value is 100

other parameter of /proc/sys/vm/* should be checked out in Documentation/sysctl/vm.txt

 

Disable autorun of backgroud APP

分类:开机时启动和开机后被kill再自启

原理:前者调用option manager提供的函数,类似于api,很容易控制开机自启动;后者framework有提供FORCE_STOP_PACKAGES的函数,第三方管理软件通过监控后台程序的自启事件,来强制杀掉进程,达到禁止自启;内置的自启管理可以修改F/W代码

 

AMS Kill-process action enhancement

 


For Android5.0 customized ActivityManagement

frameworks/base/services/core/java/com/android/server/am/ProcessList.java
frameworks/base/services/core/java/com/android/server/am/ActivityManagerService.java

NOTE: AMS(activity manager service)inupdateOomAdjLocked(), APP adj数值为-16 ~ 15, 数值越小进程越重要,0为foreground,复数一般为系统进程,9-15为hidden/enpty的APP,1-8为Previous/Per/service/luncher(HOME),进程的分类请参考宏定义,例如HOME_APP_ADJ,PREVIOUS_APP_ADJ,SERVICE_B_ADJ,FOREGROUND_APP_ADJ等等;kill process action is directly invoke SYSTEM_CALL kill in JNI code.(android_os_Process_sendSignal)(ProcessRecord.java  kill())

Key points: (1) Dynamic adjust threshold or formula with main factorADJ’s values for kill processes, like hiddenAPPLimit, etc. (2) tracking usage ofapplication to evaluate process priority when deciding kill them or give themenough free memory to run

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值