스레싱 (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

콘텐츠 사용 시 출처 표기 부탁 드리고, 궁금한 점이나 의견은 댓글 남겨주세요^^