프로세스 스케줄러 (스케줄러)
- 실행 중인 프로세스에 프로세서 동작 시간을 분배
. 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
-> 문서 편집기의 반응성을 유지할 수 있음
'리눅스 > Part4. Ch02. CPU 관련 주요 개념 및 분석' 카테고리의 다른 글
04. (실습) CPU 성능 데이터 시각화 (0) | 2022.12.20 |
---|---|
03. CPU 성능분석 도구 (0) | 2022.12.20 |
01. CPU 성능분석의 이해 (0) | 2022.12.19 |