[Os] 쓰레싱

수박·2020년 10월 28일
0

Operation System

목록 보기
2/3

프로세스가 수행되기 위해서 일정수준이상의 페이지 프레임을 할당받아야한다.

페이지, 페이지 프레임

여기서 페이지 프레임이란? 가상주소공간이랑 물리적메모리의 공간이랑 차이가 생긴다. 이 차이를 줄이기 위해 공간을 4K바이트로 나눈 것을 페이지라하고 물리적메모리의 메모리 블럭을 페이지 프레임이라 한다.

쓰레싱

페이지 부재율, CPU이용률, MPD, 스왑인, 스왑아웃

집중적으로 참조되는 페이지들의 집합을 메모리에 한꺼번에 적재하지 못하면 페이지부재율이 상승해 CPU이용률이 낮아지게 된다.
OS는 이런 상황을 인지하지 못하고 메모리에 더 많은 프로세스들을 올리기 시작한다. 그렇게 되면 동시에 메모리에 올라가있는 프로세스 수인 다중프로그래밍 정도( 멀티 프로그래밍 디그리 )가 상승하게 된다. 각 프로세스에 할당하는 메모리가 적어지기 시작하며 일정수준조차 할당받지 못해 페이지 부재가 더욱 빈번하게 생기고 페이지 부재시에 디스크I/O작업을 수반하게 되며 다른 프로세스에게 CPU를 이양하게 되는데 그 이양받은 프로세스마저 페이지 부재가 생기므로 계속해서 같은 페이지 부재가 발생하게 된다.
프로세스들은 서로의 페이지를 교체하여 스왑인, 아웃을 반복하고 CPU는 일을 하지 못하게 되는 현상을 쓰레싱이라한다.

프로세스 수를 증가시키면 CPU이용률이 비례해서 증가하지만 어느 한계치 이상에서는 CPU이용률이 급격하게 떨어지는데 스레싱이 발생했기 때문임.
따라서 CPU이용률을 최대한 높일 수 있도록 MPD를 조절하는게 중요하고
MPD를 적절히 조절하여 CPU이용률을 높이며 쓰레싱을 방지하는 방법에는
워킹셋, 부재빈도 알고리즘이 있다.

워킹셋 알고리즘

프로세스는 일정시간동안 특정 주소를 집중적으로 참조하는 경향이 있다.
집중적으로 참조되는 페이지들의 집합을 지역성 집합이라하는데,
이런 집중참조페이지들을 동시에 메모리에 올릴 수 있도록 보장하는 것을 워킹셋 알고리즘이라 한다.

워킹셋

프로세스가 원활히 수행되기 위해 메모리에 한꺼번에 올라와야하는 페이지들의 집합

워킹셋을 구성하는 페이지들이 한번에 올라갈 수 있어야만 그 프로세스에 메모리할당하는 방식
그렇지 않으면 페이지 프레임을 모두 반납하여 스왑아웃시킴

워킹셋을 구하는 방법

워킹셋을 결정하기 위해 워킹셋 윈도우를 사용함.
페이지 참조 시점부터 a시간동안 메모리에 유지하고 그 시점이 지나면 메모리에서 지움

메모리 상의 워킹셋 크기의 합 > 프레임의 수인 경우 남아있는 ps워킹셋을 올리기 위해 일부 ps를 스왑아웃시킴

모두 할당한 후에도 프레임이 남으면 스왑아웃된 프로세스를 메모리에 올림으로써 MPD증가시킴

윈도우의 크기가 작으면 지역성집합을 모두 수용못하고 크기가 크면 MPD가 감소해 CPU이용률이 낮아질 수 있어서 윈도우 크기를 잘 결정해야함

1, 2, 3, 4, 5, 6의 참조열이 있고 윈도우는 3이라고 해보자
|-T1--| |-T2-]
T1시점동안 워킹셋은 1,2,3이다.
T2시점의 워킹셋은 4,5이다.
메모리를 많이 필요할 때 많이 할당, 적게할 땐 적게함으로써 동적 프레임 할당을 수행하는 것이 워킹셋 알고리즘이다.

페이지 부재 빈도 알고리즘

페이지 부재율을 주기적으로 조사하여 할당할 메모리 양을 동적으로 조절함
어떤 프로세스의 부재율이 특정치를 넘게되면 할당된 프레임이 적다고 판단해 추가할당함.
추가 할당할 프레임이 없으면 일부 프로세스를 스왑아웃해 MPD를 조절함.

하한값이하로 떨어지면 해당 프로세스에 할당된 프레임이 많다고 판단해 프레임 수를 줄임.
모든 프로세스에게 프레임을 할당하고나서도 프레임이 남으면 스왑 아웃된 프로세스에게 할당함으로써 MPD를 높임.

즉, 부재율이 높아지면 프레임을 더 할당하고, 낮아지면 프레임을 줄여 다른 프로세스에게 할당함으로써 메모리 양을 조절함

0개의 댓글