본문 바로가기
리눅스/Part4. Ch02. CPU 관련 주요 개념 및 분석

02. 프로세스 스케줄러의 이해

by Engineer-Lee 2022. 12. 19.
반응형

프로세스 스케줄러 (스케줄러)

- 실행 중인 프로세스에 프로세서 동작 시간을 분배
  . timeslice : 프로세스가 선점되기 전까지 주어지는 작업 시간 (시간을 나눈다는 뜻)
- 프로세스 실행 순서를 결정


리눅스의 프로세스 스케줄러

- 리눅스 커널 2.5 버전에서는 O(1) 스케줄러 사용
  . 우선순위 별로 큐를 구성
  . Active queue 태스크 실행 (실행한 작업은 Expired queue로 이동)
    -> Expired queue를 Active queue로 변경
    -> Active queue 태스크를 실행

 

리눅스의 프로세스 스케줄러

- 리눅스 커널 2.6.23 버전부터는 CFS 스케줄러 사용
  . Completely Fair Scheduler
    -> 단순히 균등하게 시간을 나누진 않음
    -> 가중치와 이전 실행시간을 고려해 다음 실행 시간을 산정
  . O(1)의 대화형 성능을 개선

 

 

CFS 스케줄러 동작

- 다음 실행할 프로세스 선택
  -> virtual runtime: 프로세스가 실행한 시간
  -> virtual runtime 값을 레드-블랙 트리로 관리
  -> 우선 순위를 고려해 실행 시간을 계산

 

- 실행 시간
  -> 스케줄링 기간(기본 100ms)을 가중치를 기반으로 할당

 

 

 

예) 문서 편집기와 동영상 인코더 두 가지 작업이 있는 시스템
- 문서 편집기는 대부분의 시간을 사용자 키 입력을 기다리는데 사용
  -> I/O 중심 프로세스
- 동영상 인코더는 데이터 로드와 저장을 제외하고는 대부분의 시간을 프로세서를 사용
  -> CPU 중심
메뉴얼한 해결 방법: 문서 편집기에 더 높은 우선순위 및 긴 타임슬라이스 할당
  -> 하지만, 리눅스에서는 일반적으로 사용자 프로세스에 동일한 우선순위를 부여 !?

 

CFS 스케줄러 정책
가중치와 이전 실행시간을 고려해 다음 실행 시간을 산정하여 공평하게 실행 시간을 나눔
  -> 가중치(=우선순위)가 같아도 이전 실행시간이 다름
  -> 동영상 인코더는 쉬지 않고 CPU를 사용했기 때문에 큰 vruntime
  -> 문서 편집기는 대부분의 시간을 I/O 요청을 대기하고 있었기 때문에 작은 vruntime


  -> 문서 편집기의 반응성을 유지할 수 있음

반응형