현재 리눅스 작업 스케줄러 동작에 대한 연구를하고 있습니다. 나는 몇 가지 질문이 멀티 코어 아키텍처의 경우 리눅스의 작업 스케줄러 동작
- 을 clarified-해야 할, 스케줄러 스레드 (커널 스레드)는 코어 당 실행 또는 중앙 커널 스케줄러는 모든 예약 작업을 처리하는 전용 코어에서 실행 중입니다.
일반적인 스케줄러 틱 (인터럽트)은 얼마나 자주 발생합니까? 특정 우선 순위의 작업 (스레드)에 대한 일반적인 시간 슬라이스는 무엇입니까?
현재 작업이 시간 조각을 완료하지 않더라도 실행 대기열에서 다른 작업을 실행해야합니까?
문제의 부분적인 대답이 (Dervin은 썽크-감사) : (프로세스의 기본 스케줄러입니다)
CFS는 sysctl_sched_min_granularity 및 sysctl_sched_latency (사이 사이에 항상 고정 된 timeslice.This의 타임 슬라이스가 없습니다 에포크 길이). 즉, 시간 슬라이스는 sysctl_sched_min_granularity보다 작을 수 있습니다. 이러한 매개 변수의 기본값은 각각 0.75 ms 및 6 ms이며 kernel/sched/fair.c에 정의되어 있습니다.
줄을 따라 CFS 스케줄러는 주어진 작업이 실행되도록 예약되기 전에 주어진 작업에 대한 타임 슬라이스를 계산합니다. 그 길이는 가변적이며 (동적), 정적 우선 순위와 실행중인 큐의 현재로드, 즉 큐에있는 태스크의 수와 우선 순위에 직접적으로 의존합니다.
우분투에서 쉽게 전환 할 수 있습니까? 아니면 직접 커널을 패치하고 컴파일해야합니까? – Bram