Upload
others
View
0
Download
0
Embed Size (px)
Citation preview
Real-Time Computing and Communications Lab., Hanyang University
http://rtcc.hanyang.ac.kr
Real-Time Computing and Communications Lab., Hanyang University
http://rtcc.hanyang.ac.kr
Operating System 12주차- Memory management -
Real-Time Computing and Communications Lab.
Hanyang University
2Real-Time Computing and Communications Lab., Hanyang University
http://rtcc.hanyang.ac.kr 2Real-Time Computing and Communications Lab., Hanyang University
http://rtcc.hanyang.ac.kr
Contents
메모리해제
실습 1
Out of memory
실습 2
과제
3Real-Time Computing and Communications Lab., Hanyang University
http://rtcc.hanyang.ac.kr 3Real-Time Computing and Communications Lab., Hanyang University
http://rtcc.hanyang.ac.kr
메모리할당실패시
get_page_from_freelist에서페이지 할당 실패 시, __alloc_pages_slowpath를호출
__alloc_pages_slowpath에서여러 방법으로 페이지를 확보한 후 페이지 할당 시도
4Real-Time Computing and Communications Lab., Hanyang University
http://rtcc.hanyang.ac.kr 4Real-Time Computing and Communications Lab., Hanyang University
http://rtcc.hanyang.ac.kr
메모리할당실패시
kswapd 호출
kswapd - 메모리 부족 시 swap으로메모리를 확보하는 kernel thread
각각 zone은 세 가지의 watermark를 가진다. kswapd는 이 값을 참조하면서 수행한다.
wmark_high Freepage가 high 이상 충분히 확보되면 kswapd sleep
wmark_low Freepage가 low 이하로 감소하면 kswapd wake up
wmark_min Freepage가 min 이하로 감소하면 synchronously하게동작(direct reclaim)
5Real-Time Computing and Communications Lab., Hanyang University
http://rtcc.hanyang.ac.kr 5Real-Time Computing and Communications Lab., Hanyang University
http://rtcc.hanyang.ac.kr
메모리할당실패시
__alloc_pages_high_priority
memory zone의 wmark를 고려하지 않고 페이지 할당을 시도함
6Real-Time Computing and Communications Lab., Hanyang University
http://rtcc.hanyang.ac.kr 6Real-Time Computing and Communications Lab., Hanyang University
http://rtcc.hanyang.ac.kr
메모리할당실패시
__alloc_pages_direct_compact
high order allocation을 위해서 synchronous하게 메모리를 compact함
7Real-Time Computing and Communications Lab., Hanyang University
http://rtcc.hanyang.ac.kr 7Real-Time Computing and Communications Lab., Hanyang University
http://rtcc.hanyang.ac.kr
메모리할당실패시
__alloc_pages_direct_reclaim
메모리 확보를 위해 synchronous하게메모리를 회수한다. 이 과정에서 swapping이적극적으로 사용됨
8Real-Time Computing and Communications Lab., Hanyang University
http://rtcc.hanyang.ac.kr 8Real-Time Computing and Communications Lab., Hanyang University
http://rtcc.hanyang.ac.kr
LRU(Least Recently Used)
Linux 에서 “Used”된 메모리는, inactive, active 두 가지 상태로 나뉘어진다.
(Buffer, Page cache memory) Active : The total amount of buffer or page cache memory, in kilobytes, that
is in active use. This is memory that has been recently used and isusually not reclaimed for other purposes
Inactive : The total amount of buffer or page cache memory, in kilobytes, thatare free and available. This is memory that has not been recently usedand can be reclaimed for other purposes.
9Real-Time Computing and Communications Lab., Hanyang University
http://rtcc.hanyang.ac.kr 9Real-Time Computing and Communications Lab., Hanyang University
http://rtcc.hanyang.ac.kr
메모리할당실패시
__alloc_pages_may_oom
10Real-Time Computing and Communications Lab., Hanyang University
http://rtcc.hanyang.ac.kr 10Real-Time Computing and Communications Lab., Hanyang University
http://rtcc.hanyang.ac.kr
OOM Demo program
OOM 실습을하기에앞서실습환경을통일하기위해VirtualBox 설정으로들어가서할당되어있는메모리를1024MB로바꾸도록합니다.
11Real-Time Computing and Communications Lab., Hanyang University
http://rtcc.hanyang.ac.kr 11Real-Time Computing and Communications Lab., Hanyang University
http://rtcc.hanyang.ac.kr
Out of memory
위 과정에서 충분한 메모리를 확보하지 못하였을 경우 Out of memory가 발생한다.
현재 리눅스 커널은 OOM이발생하면 oom_kill.c에 구현되어 있는 OOM_killer가알고리즘에따라 task의 포인트를 계산하고 가장 높은 포인트를 가진 프로세스를 kill합니다.
select_bad_process oom_badness 에서 각각 프로세스 쓰레드를 돌며 badness 점수를계산한다.
12Real-Time Computing and Communications Lab., Hanyang University
http://rtcc.hanyang.ac.kr 12Real-Time Computing and Communications Lab., Hanyang University
http://rtcc.hanyang.ac.kr
Kernel tunning 1
oom_score_adj (oom score adjustment)
프로세스의OOM badness score 계산에이용되는값
/proc/<pid>/oom_score_adj에저장되고 -1000 ~ 1000 범위의값을가짐
oom_score_adj == -1000인경우, 해당프로세스는OOM killer에의해 kill을잘당하지않음(OOM DISABLE)
13Real-Time Computing and Communications Lab., Hanyang University
http://rtcc.hanyang.ac.kr 13Real-Time Computing and Communications Lab., Hanyang University
http://rtcc.hanyang.ac.kr
Kernel tunning 2
oom_kill_allocating_task
/proc/sys/vm/oom_kill_allocating_task에위치
값을변경하여OOM에대한동작을변경할수있음
값확인
• $ cat /proc/sys/vm/oom_kill_allocating_task
값변경
• $ echo 0 > /proc/sys/vm/oom_kill_allocating_task
Value Action
0 tasklist에있는 모든 task에대해 heuristic한방법으로 kill
할 task를선택
not 0 OOM 상황을 trigger한 task를선택해서 kill
14Real-Time Computing and Communications Lab., Hanyang University
http://rtcc.hanyang.ac.kr 14Real-Time Computing and Communications Lab., Hanyang University
http://rtcc.hanyang.ac.kr
Kernel tunning 3
overcommit_memory
/proc/sys/vm/overcommit_memory에 위치
값을변경하여OOM에 대한동작을변경할수있음
값확인
• $ cat /proc/sys/vm/overcommit_memory
값변경
• $ echo 0 > /proc/sys/vm/overcommit_memory
Value Action
0 커널이 overcommit을 허용할지를 결정할 때, 이미 정의되어 있는 Heuristic
한 방식을 적용하여 결정 (default)
- 메모리 요구가 있을 때여유 공간이 없는 경우, 실행중인 프로세스를 강제종료하여 메모리를 확보
1 항상 overcommit을 수행
2 overcommit이 특정 값을 넘어가지 않도록 방지- 전체 commit 값 = [Swap space size] + [RAM size] * [overcommit_ratio] /
100
15Real-Time Computing and Communications Lab., Hanyang University
http://rtcc.hanyang.ac.kr 15Real-Time Computing and Communications Lab., Hanyang University
http://rtcc.hanyang.ac.kr
Kernel tunning 4
overcommit_ratio
/proc/sys/vm/overcommit_ratio에위치
전체 RAM size에대해얼마만큼의비율을overcommit 해줄것인가를결정
값확인 (default 50)
• $ cat /proc/sys/vm/overcommit_ratio
값변경
• $ echo 0 > /proc/sys/vm/overcommit_ratio
16Real-Time Computing and Communications Lab., Hanyang University
http://rtcc.hanyang.ac.kr 16Real-Time Computing and Communications Lab., Hanyang University
http://rtcc.hanyang.ac.kr
실습 2
oomTest.c
17Real-Time Computing and Communications Lab., Hanyang University
http://rtcc.hanyang.ac.kr 17Real-Time Computing and Communications Lab., Hanyang University
http://rtcc.hanyang.ac.kr
실습 2
sudo swapoff –a : linux swapoff 후진행
ctrl + c 로터미널 3개에 signal을 보내서거의동시에메모리를할당시작하게함
18Real-Time Computing and Communications Lab., Hanyang University
http://rtcc.hanyang.ac.kr 18Real-Time Computing and Communications Lab., Hanyang University
http://rtcc.hanyang.ac.kr
실습 2
pid :2261이 oom에 의해 kill dmesg로도 확인할수 있음
19Real-Time Computing and Communications Lab., Hanyang University
http://rtcc.hanyang.ac.kr 19Real-Time Computing and Communications Lab., Hanyang University
http://rtcc.hanyang.ac.kr
실습 2
adj 값 변경후
pid : 2189는 oom에 의해죽지않음을볼 수 있다.
20Real-Time Computing and Communications Lab., Hanyang University
http://rtcc.hanyang.ac.kr 20Real-Time Computing and Communications Lab., Hanyang University
http://rtcc.hanyang.ac.kr
과제
1. OOM 상황이발생하였을때, oom_killer 가어떻게동작하는지분석한다.
2. `__alloc_pages_may_oom` 부터분석을시작하며단순히함수콜관계뿐만아니라그의미도(함수의기능, 중요코드)단계별로서술한다.
3. 또한보고서를작성할시 다음의내용을반드시포함하도록한다.
1. (1) oom_killer가 죽일수없는프로세스가하는일 + oom_killer내에서이작업을수행하는코드
2. (2) oom_killer가 희생자를선정할때 사용하는point 값이계산되는코드와각각의변수의의미
3. (3) adj가사용되는부분의코드와의미
4. select_bad_process, oom_badness 함수를고쳐Process 중요도를고려한oom killer 구현
많은가산점부여!!!!
21Real-Time Computing and Communications Lab., Hanyang University
http://rtcc.hanyang.ac.kr 21Real-Time Computing and Communications Lab., Hanyang University
http://rtcc.hanyang.ac.kr
과제
Due : 2016/06/02 23:59
보고서
표지
OOM 이란?
OOM 정책함수콜관계도
각각의단계별의미분석 + 앞에과제명세에서요구한내용
후기
보고서위의내용을포함해서메일로제출
메일제목 : [운영체제]과제_학번_임정택
양식을지키지않을시불이익이있을수있습니다.