스레싱 Thrashing
CPU작업 시간보다 메모리와 스왑영역 간 페이지 교체에 시간을 많이 소비하는 것
배경
스와핑 작업은 디스크 I/O 작업으로 CPU를 사용하지 않는 작업
스와핑 시간이 많아질 수록 CPU가 일하는 시간이 감소 함
페이지 부재 (Page Fault) CPU를 점유하고 있는 프로세스가 필요로 하는 데이터가 물리 메모리에 없는 경우
다중 프로그램 정도 (MPD: Multi-Programming Degree)
메모리에 동시에 올라가 있는 프로세스의 수
운영체제는 CPU 이용률이 낮으면 MPD를 높임
과도하게 MPD가 높아질 경우 → 프로세스에게 할당되는 메모리 양 감소 → 페이지 부재 발생 → 프로세스 수행시간 보다 페이지 교체 시간이 많은 상태 됨
즉 스레싱이란 페이지 부재율이 증가하여 CPU 이용율이 급격히 떨어지는 현상
주요 원인
부적절한 페이지 교체 정책
페이지 교체 정책 실패
page 추가 hit rate 감소
시스템 리소스 부족
작은 L2캐시 및 낮은 메모리용량으로 인한 빈번한 Page Fault 발생
Single Core 혹은 저성능 CPU/CORE 사용
프로그램 메모리 관리 실패
과도한 thread()와 무분별한 fork()로 과도한 프로세스 발생
exit(0) 미사용 혹은 G/C 미수행으로 메모리 누수/관리 실패
프레임 할당
스레싱은 각 프로세스에 프레임을 할당하는 정도와 연관 됨
프레임 할당 방법
감당할 수 있을 정도의 페이지 부재를 일으키며, 전체 프로세스가 원할하게 돌아가게 함
2가지의 프레임 할당 방법 존재
Local Replacement
프로세스 별로 할당된 프레임의 크기가 고정되어 있음
메모리 상의
자기 자신의 프로세스 페이지
에 대해서만 교체 작업 수행페이지 부재 발생 시
프로세스 안에서 페이지 교체 정책을 통해 자체적으로 메모리 확보
Global Replacement
프로세스의 우선 순위를 따져 각 프로세스에게 동적으로 우선 순위 할당 진행
메모리 상의
모든 프로세스 페이지
에 대한 교체 작업 수행페이지 부재 발생 시
다른 프로세스가 가지고 있던 프레임을 가져와 사용할 수 있음
스레싱 해결 방안
워킹셋 알고리즘(Working Set)
개념
지역성 집합이 메모리에 동시에 올라갈 수 있도록 보장하는 메모리 관리 알고리즘
방법
지역성을 활용하여 프로세스가 많이 참조하는 페이지 집합을 메모리 공간에 계속 상주시켜 빈번한 페이지 교체현상을 줄이는 방법
워킹셋 윈도우
: 페이지를 참조하는 횟수ex) 10,000번의 명령어 수행을 워킹셋 윈도우로 정한다
현재 시점 T로부터 이전 10,000개의 명령어에 속한 녀석들이 워킹셋이 된다는 의미
시간이 지남에 따라 자주 참조하는 페이지들의 집합은 변할 수 있기 때문에 워킹셋도 시간에 따라 변함
페이지 부재 빈도 알고리즘(Page Fault Frequency)
개념
프로세스의 페이지 부재율을 주기적으로 조사하고 이 값에 근거하여 각 프로세스에 할당할 프레임 양을 동적으로 조절하는 알고리즘
방법
시스템이 미리 정해 놓은 상한값(Upper bound)을 넘어가거나 하한값(Lower bound)이하로 떨어지게 되면 운영체제가 메모리에 올라가있는 프로세스의 수를 조절
페이지 부재 비율 상한선 초과 → 할당한 프레임이 적다는 것 → 프레임 할당량 늘려줌
페이지 부재 비율 하한선보다 낮음 → 할당한 프레임이 많다는 것 → 할당한 프레임 어느정도 회수
페이지 크기
페이지의 일반적인 크기
4KB ~ 4MB
페이지의 크기는 점점 커왔고, 현재도 계속 증가 하고 있음
페이지 크기는 내부 단편화와
페이지 부재
의 trade-off관계
페이지 크기 작게 설정시
장점
내부 단편화(Internal Fragmentation)가 줄어듦
메모리 사용의 효율성을 높일 수 있음
단점
개별 페이지에 대한 페이지 테이블을 들고 다니는 데 많은 메모리가 필요할 수 있음
잦은 페이지 부재로 인한 오버헤드가 커질 수 있음
페이지 크기 크게 설정시
장점
필요한 페이지 테이블의 수는 작음
페이지 부재를 핸들링하는데 드는 오버헤드가 적음
단점
내부 단편화가 큼
ref
운영체제 KOCW 양희재 교수님 [운영체제/OS] 프레임 할당(Frame allocation)과 Page fault 관련 기타 이슈들 [시나공 정보처리기사] 2415506 스래싱 스레싱 (Thrashing) 스레싱(thrashing)이란 무엇인가
Last updated