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