다른 이름 | Completely Fair Scheduler |
---|---|
원저자 | Ingo Molnar |
개발자 | 리눅스 커널 개발자들 |
운영 체제 | 리눅스 커널 |
언어 | C |
종류 | 스케줄링 (컴퓨팅) |
라이선스 | GPL-2.0 |
웹사이트 | kernel |
컴플리틀리 페어 스케줄러(영어: Completely Fair Scheduler, CFS)는 리눅스 커널의 2.6.23 (2007년 10월) 릴리스에 병합된 프로세스 스케줄러이며 현재의 기본 스케줄러이다. 프로세스 실행을 위해 CPU 자원 할당을 관리하며 상호작용 성능을 극대화하면서도 전반적인 CPU 이용을 극대화하는 것을 목표로 한다.
로테이팅 스테어케이스 데드라인(Rotating Staircase Deadline)이라는 이름의 페어 스케줄링이 주를 이루는 Con Kolivas의 스케줄링은 Ingo Molnar가 컴플리틀리 페어 스케줄러(CFS)의 개발에 영향을 주었고 이는 자신의 발표에서 Kolivas의 업적을 언급하면서 초기의 O(1) 스케줄러를 대체한다.[1]
구 리눅스 2.6 커널에 쓰인 이전의 O(1) 스케줄러와 달리 CFS 스케줄러 구현은 런 큐에 기반을 두지 않는다. 대신에 레드-블랙 트리는 앞으로 있을 태스크 실행의 타임라인을 구현한다. 게다가 스케줄러는 나노초 입자 계산을 사용하며 이는 개개의 프로세스의 CPU 할당분이 할당된 원자 단위이다. 이는 이를테면 프로세스의 대화식 이용을 결정하기 위해 어떤 특정한 휴리스틱 이론이 필요하지 않다는 것을 의미한다.[2]
구 O(1) 스케줄러처럼 CFS는 슬리퍼 페어니스(sleeper fairness)라는 개념을 사용하는데, 이는 런큐의 것과 동일한 슬리핑/대기 태스크를 고려한다. 즉, 대부분의 시간을 사용자 입력이나 다른 이벤트를 대기하기 위해 소비하는 대화식 태스크들은 이들이 필요할 때 CPU의 필적할만한 할당분을 가져오게 된다는 것을 뜻한다.