본문 바로가기

Mobile/Android

안드로이드 Low memory killer 의 Threshold

반응형

인터넷 서핑 중에 좋은 자료가 있어 소개합니다.

 http://www.androidcentral.com/fine-tuning-minfree-settings-improving-androids-multi-tasking


위의 자료의 내용에 몇 가지 덧붙이자면,
안드로이드의 Low memory killer는 Kernel에 구현되어 있으며,
Application을 6가지 타입으로 분류하여 동작하고 있습니다.

FOREGROUND_APP 
This is the process running the current foreground app.  We'd really rather not kill it! Value set in /system/rootdir/init.rc on startup.

VISIBLE_APP 
This is a process only hosting activities that are visible to the user, so we'd prefer they don't disappear. Value set in /system/rootdir/init.rc on startup.

SECONDARY_SERVER 
This is a process holding a secondary server -- killing it will not have much of an impact as far as the user is concerned. Value set in /system/rootdir/init.rc on startup.

HIDDEN_APP 
This is a process only hosting activities that are not visible, so it can be killed without any disruption. Value set in /system/rootdir/init.rc on startup.

CONTENT_PROVIDER 
This is a process with a content provider that does not have any clients attached to it.  If it did have any clients, its adjustment would be the one for the highest-priority of those processes.

EMPTY_APP 
This is a process without anything currently running in it.  Definitely the first to go! Value set in system/rootdir/init.rc on startup. This value is initalized in the constructor, careful when refering to this static variable externally. 

Low memory killer는 안드로이드의 가용 RAM이 설정된 Threshold 이하로 떨어지게 되면 위의 분류별로 Application을 Kill 하도록 설정되어 있습니다. Threshold 값은 단말 모델별로 혹은 안드로이드 버전 별로 각각 다르게 설정되어 있으며 이 값은 다음과 같은 명령어로 확인할 수 있습니다.(2.0.1 버전에서 위의 타입별 Threshold 값)

 $ cat /sys/module/lowmemorykiller/parameters/minfree

 2048,3072,6144,7168,8192,8192

 $ _


위 값은 4KB 페이지 단위로 표현된 것을 보여준 것이고, 4번째 값인 7168이 HIDDNE_APP 의 Threshold에 해당합니다. 가용 RAM이 7168 * 4K = 29M로 줄어들어야 HIDDEN_APP을 Kill 하도록 설정되어 있습니다. 

모토로이(XT720)의 2.1버전에는 Threshold가 아래와 같이 증가했습니다.

 $ cat /sys/module/lowmemorykiller/parameters/minfree

 3072,4068,9216,10752,12288,12288

 $ _


4번째 값을 보면 10752이고, 가용 RAM이 10752 * 4K = 44M로 줄어들면 HIDDEN_APP을 Kill하도록 되어 있습니다. 이 때문에 XT720이 2.0.1에서 2.1로 업그레이드 되면서 Background Application 이 자주 kill되는 문제가 발생했었습니다.

 

반응형