IT/리눅스마스터1급

dalvik.vm.heapsize

알콩달콩아빠 2022. 5. 3. 18:28
728x90
반응형
OOM(Out Of Memory) 상태에서의 원활한 시스템 운영을 위해 메모리 사용 임계치를 정하는 방법이다. minfree에는 애플리케이션을 6 개의 부류로 나누고 각각의 메모리 사용 임계치를 설정하도록 되어 있다. lowmemorykiller는 minfree의 설정값을 보고 메모리 사용 임계치에 다다르면 해당 부류의 앱들을 죽이기 시작한다. 애플리케이션 분류는 중요도에 따라 oom 값으로 표현한다. oom 값은 -16부터 15까지의 값을 갖는데, -1 이하는 OOM 상태에서도 죽지 않는 시스템 애플리케이션들이다. 0 이상은 OOM 상태에서 죽어도 관계 없는 일반 애플리케이션들로 아래와 같이 6 가지로 분류한다.
 
- Foreground_app(oom=0):
  • 현재 사용중인 최상위 화면의 애플리케이션 또는 알림바에 표시되는 애플리케이션들이다.
  • Launcher Pro나 ADW 등의 런처 애플리케이션들은 Forground_app에 해당한다.
  • 모토로이의 초기 설정값은 2048(=2048*4/1024MB=8MB)이다.
  • lowmemorykiller는 가용 메모리가 8MB 이하로 내려가면 oom>=0 인 애플리케이션들을 죽이기 시작한다.
  • oom=0인 애플리케이션들은 가용 메모리가 확보되면 자동으로 다시 실행된다.
  • 이 임계치는 최소로 낮추는 것이 좋다.
  • 추천값은 1536(=1536*4/1024MB=6MB)이다.
 
- Visible_app(oom=1):
  • 스스로 최상위 화면으로 뜨지는 못하지만 다른 애플리케이션에 의해 뜰 수있는 애플리케이션들이다.
  • 소프트키보드 애플리케이션이 여기에 해당한다.
  • 모토로이의 초기 설정값은 3072(=3072*4/1024MB=12MB)이다.
  • lowmemorykiller는 가용 메모리가 12MB 이하로 내려가면 oom>=1 인 애플리케이션들을 죽이기 시작한다.
  • 이 임계치는 최소로 낮추는 것이 좋다.
  • 추천값은 2048(=2048*4/1024MB=8MB)이다.
 
- Secondary_Server(oom=2):
  • 화면으로 뜨지는 않지만 화면에 떠 있는 애플리케이션들을 뒤에서 지원해주는 애플리케이션들이다.
  • 안드로이드의 '서비스'와 대부분의 위젯들이 여기에 해당한다.
  • 모토로이의 초기 설정값은 6144(=6144*4/1024MB=24MB)이다.
  • lowmemorykiller는 가용 메모리가 24MB 이하로 내려가면 oom>=2 인 애플리케이션들을 죽이기 시작한다.
  • 이 임계치가 크면 홈딜이 자주 발생하게 된다.
  • 이 임계치는 최소로 낮추는 것이 좋다.
  • 추천값은 3072(=3072*4/1024MB=12MB)이다.
 
- Hidden_app(oom=7):
  • 실행되고 있다가 새로 최상위 화면으로 올라온 다른 애플리케이션에 밀려 뒤로 가려져있는 애플리케이션들이다.
  • 모토로이의 초기 설정값은 7168(=7168*4/1024MB=28MB)이다.
  • lowmemorykiller는 가용 메모리가 28MB 이하로 내려가면 oom>=7 인 애플리케이션들을 죽이기 시작한다.
  • 이 임계치가 작아야 여러 애플리케이션들이 죽지 않고 메모리에 남아 있어 멀티태스킹이 원활해진다.
  • 이 임계치는 최소로 낮추는 것이 좋다.
  • 추천값은 4608(=4608*4/1024MB=18MB)이다.
 
- Content_Provider(oom=14):
  • 타 애플리케이션에게 자신이 갖고 있는 정보를 제공하는 애플리케이션이다.
  • 평상 시에는 실행되고 있지 않다가 필요 시에만 가동되는 애플리케이션으로 멀티태스킹과는 별로 관계가 없다.
  • 모토로이의 초기 설정값은 8192(=8192*4/1024MB=32MB)이다.
  • lowmemorykiller는 가용 메모리가 32MB 이하로 내려가면 oom>=14 인 애플리케이션들을 죽이기 시작한다.
  • 이 임계치는 최대로 높이는 것이 좋다.
  • 추천값은 12800(=12800*4/1024MB=50MB)이다.
 
- Empty_app(oom=15):
  • CPU를 사용하지 않고, 그저 메모리에만 남아 있는 애플리케이션들이다.
  • 이 애플리케이션이 확보하고 있는 메모리는 단지 다시 시작할 때 구동 시간을 줄이기 위한 캐쉬 역할만을 한다.
  • 모토로이의 초기 설정값은 8192(=8192*4/1024MB=32MB)이다.
  • lowmemorykiller는 가용 메모리가 32MB 이하로 내려가면 oom=15 인 애플리케이션들을 죽이기 시작한다.
  • 이 임계치는 최대로 높이는 것이 좋다.
  • 추천값은 15360(=15360*4/1024MB=60MB)이다.
 
추천값으로 minfree 수정 방법은 아래와 같다.
<code>echo 1536,2048,3072,4608,12800,15360 > /sys/module/lowmmorykiller/parameters/minfree
</code>
 
부팅 시 이 값들을 적용하려면 아래와 같이 mot_boot_mode 스크립트 파일에 위 사항을 추가해줘야 한다. 방법은 다음과 같다.
 
1) 우선 새 mot_boot_mode 파일을 아래와 같이 준비해서 /sdcard 폴더에 넣는다.
<code>#!/system/bin/sh
export PATH=/system/bin:$PATH

#run original bootmode script
mot_boot_mode.bin

#configure the lowmemorykiller
echo 1536,2048,3072,4608,12800,15360 > /sys/module/lowmemorykiller/parameters/minfree
</code>
 
2) 기존 mot_boot_mode 파일을 mot_boot_mode.bin 파일로 이름을 바꾼다.
<code>cd /system/bin
ren mot_boot_mode mot_boot_mode.bin
</code>
 
3) 준비한 mot_boot_mode 파일을 기존 mot_boot_mode 파일이 있던 폴더로 복사한다.
<code>cp /sdcard/mot_boot_mode /system/bin
</code>
 
4) mot_boot_mod 파일의 사용자 권한을 재설정한다.
<code>chmod 755 /system/bin/mot_boot_mod
</code>
 
5) 리부팅
 
1.2 dalvik.vm.haepsize 수정
 
/system/build.pro 파일의 dalvik.vm.heapsize 값을 수정한다.
 
dalvik.vm.heapsize 값은 Dalvik VM 실행 시 확보하는 힙 메모리 크기인데, 이 값이 너무 작으면 애플리케이션 실행 중 필요한 메모리 확보를 위해 빈번하게 가비지 콜렉터가 실행되므로 애플리케이션 수행 속도에 영향을 준다. 반대로 이 값이 너무 크면 애플리케이션 실행 시 마다 가용 메모리가 급격하게 줄어든다. 또한 이 값이 크더라도 힙 메모리를 과도하게 소비하는 애플리케이션에서는 가비지 콜렉터가 실행될 수밖에 없다. 따라서 이 값은 애플리케이션들의 평균 힙 메모리 사용량 보다 조금 더 크게 잡는 것이 좋다.
 
모토로이의 기본 설정값은 28m이다. 추천값은 30m에서 40m으로, 사용하는 애플리케이션의 패턴에 따라 적절하게 조절한다.

출처 : http://tactlee.egloos.com/2718024
728x90
반응형

'IT > 리눅스마스터1급' 카테고리의 다른 글

Memo Management Unit  (0) 2022.05.03
opengl 1.1 2.0 비교  (0) 2022.05.03
ps 명령어  (0) 2022.05.03
SurfaceFlinger,AudioFlinger  (0) 2022.05.03
init.rc  (0) 2022.05.03