2019년 4월 30일
스레싱 (Thrashing)
I. 페이지 교체시간 > 실행시간, 스레싱의 개요
가. 스레싱(Thrashing)의 개념
- Page Fault가 연속적으로 발생하여 프로세스 수행시간보다 페이지 교체 시간이 많은 상태
나. 스레싱의 결과
개념도 | 설명 |
---|---|
– 다중 프로그래밍 높아짐 따라 이용률 향상, 임계치 도달 후 낮아짐 – Multi-Processing System 발생 빈번 – 처리율 저하, 페이지 폴트 증가 – 발생빈도 최소화위해 여러방법필요 |
- 스레싱을 근본적으로 줄이기 위해 다중 프로그래밍 정도를 낮추어야 함(데닝은 50% 정도를 제안)
II. 스레싱의 원인 발생 과정 및 주요 원인
가. 스레싱의 원인 발생 과정
- 부적절한 페이지 교체 정책 등 여러 원인으로 인해 CPU이용률 저하에 따른 페이지 교체 악순환 발생
나. 스레싱의 주요 원인
구분 | 주요 원인 | 상세 설명 |
---|---|---|
부적절한 페이지 교체 정책 | – Belady’s Anomaly – Page Miss율 증가 | – 페이지 교체 정책 실패 – page 추가 hit rate 감소 |
– Small Page Size – 다수 Page 사용 | – Paging Overhead 증가 – Paging 시간 > 처리시간 | |
시스템 리소스 부족 | – 작은 L2 캐시 – 낮은 메모리용량 | – Page Miss Ratio 증가 – 빈번한 Page Fault 발생 |
– Memory Clock – Single Core | – Single Channel Memory – 저성능 CPU/Core 사용 | |
프로그램 메모리 관리 실패 | – 과도한 thread() – 무분별한 fork() | – 과도한 프로세스 발생 – Instance, Method Load |
– exit(0) 미사용 – G/C 미수행 | – 메모리 누수/관리 실패 – Zombie, 메모리 점유 |
- 스레싱의 완벽 예방은 어려우므로 Working Set Model, Page Fault Frequency, Locality 통해 발생 최소화
III. 스레싱 예방을 위한 지역성 활용, Working Set Model
가. Working Set Model 매커니즘
- 프로세스가 많이 참조하는 페이지 집합을 메모리 공간에 계속 상주시켜 빈번한 페이지 교체현상(스레싱)을 줄이는 방법
나. Working Set Model 원리/장단점
구분 | 설명 | 특징 |
---|---|---|
원리 | – 지역성 가정을 기반으로 동작 | – 지역성 기반 |
특징 | – 과도기, 안정기가 주기적 반복 | – 프로세스 변화 |
장점 | – Multi-Programming 정도 높임 | – Page Hit rate증가 |
– CPU 활용률 최적화 | – 임계치 극대화 | |
단점 | – Working Set 추적관리 복잡 | – 크기/구성 변화 |
– Window 사이즈 설정이 모호함 | – 최적값 모름 | |
– 참조 페이지 Queue 유지관리 | – 메모리관리 복잡 |
IV. 스레싱 예방 직접 액세스 방식, Page Fault Frequency
가. Page Fault Frequency 매커니즘
- 페이지 부재율의 상/하한으로 페이지 부재율을 예측하고 조절
- 현재 페이지 부재와 바로 전 페이지 부재 사이 시간 관찰하여 최소 시간보다 크면 그 사이 호출되지 않았던 페이지 모두 제거
나. Page Fault Frequency 원리/장단점
구분 | 설명 | 특징 |
---|---|---|
원리 | – 스레싱은 페이지 부재에서 발생 | – 부재 비율 조절 |
특징 | – 페이지 부재 비율 높음 | – 프레임 할당 |
– 페이지 부재 비율 낮음 | – 프레임 회수 | |
장점 | – 페이지 부재 발생 시에만 실행 | – Overhead 적음 |
– 직접 페이지 부재율 조절 가능 | – 수동프레임 할당 | |
단점 | – 프로세스 중지 과정 발생 | – 부재율 증가 |
– 페이지 참조 신규 지역성 이동 | – 작동 어려움 |
- Working Set에 비해 Overhead가 작고 직접 페이지 부재율 조절
V. 효과적인 스레싱 발생 최소화를 위한 예방 기법
구분 | 예방 기법 | 세부 기법 |
---|---|---|
운영체제 설정 측면 | – Page Size결정 – 2n byte Page | – 페이지 교체 오버헤드 방지 – Page 단위, TLB 범위 고려 |
– 역 페이지 테이블 (Inverted Page Table) | – 페이지 테이블 위한 메모리 공간 축소 기법 | |
프로그램 설계 측면 | – Locality 고려 – Loop, Array | – 개발 언어 특성 고려 – method 호출 프로그램 구조 |
– 페이지 Lock – 입출력 방지 | – 페이지 Locking 교체 방지 – 사용자 공간으로 I/O 차단 |
- Windows의 Auto Working-Set Trimming 공간 확보 등 운영체제 별 기능 존재하므로 적극 활용 권장
[참고] 스레싱 발생 원인 이해를 위한 페이지 부재 동작 절차
① 프로세스 내부 테이블(PCB) 기반 참조 유/무효 판단
② 페이지 부재 트랩(무효 시 명령어 중단, 유효 시 메모리 참조)
③ 자유 프레임 검색/선택 및 보조저장장치 접근
④ 보조저장장치 페이지를 선택된 자유 프레임에 저장
⑤ 프레임 정보 페이지 테이블 갱신 및 내부 테이블(PCB) 수정
⑥ 트랩에 의해 인터럽트된 명령어 재개
2 Comments
777
스레싱에 대해 궁금했는데 깔끔한 정리 잘보고갑니당 ㅎㅅㅎ 감사해요!