로그인
Sign in

 

Linux 를 기반으로 운영되는 android 에서 low memory killer (LMK) 가 동작하면 특정 app 들이 차례로 종료되게 됩니다. 이때 종료되는 순서를 정해주는 것이 oom_adj 값입니다.

 

 

 

Out Of Memory ADJust value 를 조절하게되면 일찍 종료될 app가 더 나중에 종료되게 되어 차후 해당 app가 재 실행될 때 빠른 속도로 실행될 수 있습니다. 해당 app 가 service 를 가지고 있고 LMK에 의해 service 가 종료되는 경우가 발생하게 되면 app가 정상적으로 동작하기도 힘들어 지겠죠.

 

이럴때 대응할 수 있는 방법 중 하나는 oom_adj 값을 조절해 주는 것 입니다.

oom_adj 값은 +15 에서 -15까지의 값 중 하나를 갖게 됩니다. LMK 에 의해 가장 먼저 종료되는 것은 +15이며 -15가 가장 마지막에 종료됩니다.

 

각 process에 대한 정보가 있는 /proc/ 폴더를 보면 현재 실행중인 process id 에 해당하는 폴더가 존재하고 그 내부에 process 의 정보가 저장되어 있으며 LMK에 대한 oom_adj 값이 있습니다.

 

dr-xr-xr-x 185 root       root                0 Jun 17 22:57 ./

drwxr-xr-x  25 root       root             4096 Mar 20 23:26 ../

dr-xr-xr-x   9 root       root                0 Jun 17 22:57 1/

dr-xr-xr-x   9 root       root                0 Jun 17 22:57 10/

dr-xr-xr-x   9 root       root                0 Jun 17 22:57 1052/

dr-xr-xr-x   9 root       root                0 Jun 17 22:57 1059/

dr-xr-xr-x   9 daemon     daemon              0 Jun 17 22:57 1095/

dr-xr-xr-x   9 whoopsie   whoopsie            0 Jun 17 22:57 1098/

 

process 3376 에 대한 정보 입니다.

 

jbon@isPC:~$ ll /proc/3376

total 0

dr-xr-xr-x   9 jbon jbon 0 Jun 17 23:58 ./

dr-xr-xr-x 185 root  root  0 Jun 17 22:57 ../

dr-xr-xr-x   2 jbon jbon 0 Jun 17 23:59 attr/

-rw-r--r--   1 jbon jbon 0 Jun 17 23:59 autogroup

-r--------   1 jbon jbon 0 Jun 17 23:59 auxv

-r--r--r--   1 jbon jbon 0 Jun 17 23:59 cgroup

--w-------   1 jbon jbon 0 Jun 17 23:59 clear_refs

-r--r--r--   1 jbon jbon 0 Jun 17 23:59 cmdline

-rw-r--r--   1 jbon jbon 0 Jun 17 23:59 comm

-rw-r--r--   1 jbon jbon 0 Jun 17 23:59 oom_adj

-r--r--r--   1 jbon jbon 0 Jun 17 23:59 oom_score

-rw-r--r--   1 jbon jbon 0 Jun 17 23:59 oom_score_adj

-r--r--r--   1 jbon jbon 0 Jun 17 23:59 pagemap

 

process 3376 의 oom_adj 값은 0 이네요.

 

jbon@isPC:~$ cat /proc/3376/oom_adj

0

 

이 값을 변경하기 위해서는 아래와 같이 명령을 실행하면 됩니다.

 

$ echo "-5" > /proc/3376/oom_adj

 

하지만 매번 process 의 process id 를 찾아 oom_adj 값을 바꿔주어야 하는 번거로움이 있습니다. 이를 편하게 하기 위한 sed 명령을 이용해 process 이름으로 process id 를 찾아 변경하는 방법입니다.

 

process 가 apk 이름이 monkey 라고 할 때 oom_adj.sh 파일을 만들어 아래 내용을 넣습니다.

 

export processid=$(ps | grep monkey | busybox sed -r 's/(root *)([0-9]{4,}) [a-zA-Z0-9.: ]{1,}[a-z.]{1,}/\2/g')

echo "-5" > /proc/$processid/oom_adj

 

프로그램을 실행시킬 때 oom_adj.sh 를 실행해 주면 됩니다.



출처: http://bluelight.tistory.com/670 

List of Articles
번호 제목 글쓴이 날짜 조회 수
공지 자주 사용하는 명령어 제비게릴라 2019-06-27 179
212 apache2 2.4.33 소스 설치 제비게릴라 2018-10-15 41
» oom-killer 시에 종료 순서 정하기.. 제비게릴라 2018-05-11 49
210 centos 7의 kernel.sem 설정 방법 제비게릴라 2018-05-02 128
209 ubuntu 멀티 인터페이스 설정 작업 제비게릴라 2018-02-27 11
208 yum update 시 중단 되었을때 조치 법 제비게릴라 2017-01-15 677
207 파일 사이즈 비교 제비게릴라 2016-04-29 24
206 rpm 패키징 방법 file 제비게릴라 2016-04-29 229
205 heartbeat 설정 방법 제비게릴라 2015-10-19 374
204 oracle 계정으로 ssh 접속시 Key 인증 방식의 로그인 오류 발생 조치 제비게릴라 2015-10-06 52
203 리눅스 date 명령 : 어제(과거) , 내일(미래) 날짜, 시간 구하기 제비게릴라 2015-03-20 106
202 redhat 커널 버전 리스트 제비게릴라 2015-02-10 65
201 문자열 추출 쉘 스크립트... 제비게릴라 2014-09-25 62
200 Partition 1 does not start on physical sector boundary. 메세지 삭제... 제비게릴라 2014-08-28 154
199 vi 치환 명령 제비게릴라 2014-03-12 173
198 프로세스 별 Disk I/O 확인 방법 (block_dump) [1] 제비게릴라 2013-07-16 854
197 logger 옵션... 제비게릴라 2013-05-27 369
196 vsftpd 시간 맞추기... 제비게릴라 2013-05-27 330
195 Linux Kernel Tuning 제비게릴라 2013-03-21 446
194 자동으로 멀티패스 잡았을시 블랙리스트 추가하기.. 제비게릴라 2012-12-06 1387
193 Nmon Analyser v33g – Excel 2010 64 bits file 하록 2012-08-07 551