Thrashing
태그 :
- 개념
- 기억장치의 페이지 부재가 비정상적으로 많이 발생하여 CPU가 프로그램 처리보다 페이지 교체에 더 많은 시간을 보내 성능히 급격히 줄어드는 현상 멀티 프로세싱 기능을 갖춘 시스템에서 가상 메모리의 페이지 부재(Page Fault)가 너무 많이 발생하여 프로세스 실행보다 페이지 교체에 더 많은 시간을 소모하는 현상
I. Thrashing의 개요
가. 정의
- 기억장치의 페이지 부재가 비정상적으로 많이 발생하여 CPU가 프로그램 처리보다 페이지 교체에 더 많은 시간을 보내 성능히 급격히 줄어드는 현상
- 멀티 프로세싱 기능을 갖춘 시스템에서 가상 메모리의 페이지 부재(Page Fault)가 너무 많이 발생하여 프로세스 실행보다 페이지 교체에 더 많은 시간을 소모하는 현상
나. 원인
리소스 부족 |
- 낮은 CPU 사양 - 적은 메모리 사이즈 등 |
부적절한 페이지 교체 정책 |
- locality 및 페이지 빈도등을 고려하지 않은 경우 - Memory Size가 너무 작은 경우 |
심한 다중 프로그래밍 |
- 프로세스 교환시마다 페이지 부재처리 발생 - 수용 가능한 페이지 교체 수 초과 및 수용 가능한 프로세스 수 초과 |
다. 영향
- Thrashing 상황에서 프로세스는 실행보다 페이지 교체에 더 많은 시간을 허비
- System Performance 저하
- System이 비정상적으로 정지할 수 있음
라. 발견방법
- Page Fault 조사: 각 프로세스 별 페이지 부재로 발생하는 PFF 검사
- Swapping 조사: 다중 프로그래밍시 다른 프로세스에 공간을 부여하기 위해 프로세스들을 주기억장치 에서 보조기억장치 또는 그 반대로 옮기는 과정 검사
II. 개념도 및 해결방안
가. 개념도
- \초기에는 멀티 프로그래밍 정도가 높아짐에 따라 CPU 이용률이 향상되지만, 어느 임계치보다 커지면 스래싱 발생
나. 발생과정
- \CPU 사용 확인, 프로세스 추가, 전역 페이지 교체 알고리즘 이행, 페이지 부재율 상승/CPU 사용율 하락, 새로운 프로세스 추가
III. Working-Set Model
가. 개념도
나. 개념
- 특정시간에 실행되는 프로그램에 Locality가 포함되는 페이지들의 집합
- 프로세스들은 주어진 시간 간격 동안 자신의 페이지들 중 일부를 더 자주 접근하려는 지역성(Locality) 이 있으며, 이를 이용하면 페이지 부재율을 감소시킬 수 있음
다. 특징
- 프로그램이 효과적으로 실행되기 위해서는 활동 프로세스의 Working Set이 메모리에 적재되어 있어야 함
- 매번 참조시마다 Resident Page Set 조정(PFF보다 overhead가 큼)
IV. Page-Fault Frequency
가. 개념도
나. 개념
- 현재 페이지 부재와 바로 전의 페이지 부재 사이의 시간을 관찰해 지금까지의 최소시간보다 크면 그 사이에 호출되지 않았던 페이지들을 모두 제거하고,
- 최적시간보다 작다면 들어오려는 페이지를 그 프로세스의 상주 페이지 집합에 첨가하는 방법
- 페이지 부재율 > 상한: 그 프로세스에게 Frame 추가 할당
- 페이지 부재율 < 하한: 그 프로세스로부터 Frame 회수
다. 특징
- 페이지 부재율의 상한과 하한 설정을 관리
- Working-Set Model보다 더 직접적으로 페이지 부재율 조절 가능
- 페이지 부재 발생시에만 Resident Page Set을 조정(WSM보다 overhead 낮음)
- 페이지 부재 발생시에만 Frame수를 조정하므로, Working-Set Model에 비해 오버헤드가 낮음
V. Thrashing 회피를 위한 고려요소 및 WSM,PFF 비교
가. Thrashing의 회피를 위한 고려요소
- Pre-Paging: 과도한 페이지 부재를 방지하기 위해 관련된 모든 페이지를 사전에 한꺼번에 메모리에 로드
- Page Size: 페이지의 크기는 2의 거듭 제곱
- Inverted Page Table: 페이지 테이블을 위한 메모리 공간 줄이는 기법
- 프로그램 구조: 프로그램 개발 시 지역성 고려, 개발언어에 따른 특성 고려
나. Working Set Model과 PFF의 비교
구분 |
WSM |
PFF |
페이지집합 수정방식 |
매번 기억장치를 참조한 뒤 수정 |
페이지 폴트 발생시만 수정 |
스레싱 조절 |
Prepaging은 유용하나 조절 어려움 작업집합 추정이 어려움 |
직접적으로 스레싱을 방지하면서 PFF 측정 및 조절 |
오버헤드 |
매우 큼 |
적음 |