32장. 스케줄링 정책 조정
Red Hat Enterprise Linux에서 프로세스 실행의 최소 단위는 스레드라고 합니다. 시스템 스케줄러는 스레드를 실행하는 프로세서와 스레드가 실행되는 시간을 결정합니다. 그러나 스케줄러의 주된 문제는 시스템을 계속 사용 상태로 유지하는 것이므로 애플리케이션 성능에 맞게 스레드를 최적으로 예약하지 못할 수 있습니다.
예를 들어 노드 B의 프로세서를 사용할 수 있게 되면 NUMA 시스템의 애플리케이션이 노드 A에서 실행 중이라고 가정합니다. 노드 B에서 프로세서를 계속 사용하려면 스케줄러가 애플리케이션 스레드 중 하나를 노드 B로 이동합니다. 그러나 애플리케이션 스레드는 여전히 노드 A의 메모리에 액세스해야 합니다. 그러나 이제 스레드가 Node B 및 Node A 메모리에서 실행 중이므로 이 메모리는 더 이상 스레드가 로컬에 있지 않으므로 이 메모리가 더 이상 액세스할 수 없습니다. 따라서 노드 B에서 실행을 완료하는 데 Node A의 프로세서가 사용 가능하게 될 때까지 기다린 다음 로컬 메모리 액세스 권한이 있는 원래 노드에서 스레드를 실행하는 데 시간이 오래 걸릴 수 있습니다.
32.1. 스케줄링 정책 범주
성능에 민감한 애플리케이션은 스레드가 실행되는 위치를 결정하는 디자이너나 관리자의 이점을 얻는 경우가 많습니다. Linux 스케줄러는 스레드 실행 시간을 결정하는 여러 스케줄링 정책을 구현합니다.
다음은 스케줄링 정책의 두 가지 주요 범주입니다.
일반 정책
- 일반 스레드는 일반 우선 순위 작업에 사용됩니다.
실시간 정책
실시간 정책은 중단 없이 완료해야 하는 시간에 민감한 작업에 사용됩니다. 실시간 스레드는 시간 분할의 대상이 아닙니다. 즉 스레드는 블록, 종료, 자발적으로 양보 또는 더 높은 우선 순위 스레드에 의해 선점될 때까지 실행됩니다.
가장 낮은 우선 순위 실시간 스레드는 일반 정책이 있는 스레드보다 먼저 예약됩니다. 자세한 내용은 SCHED_FIFO로 정적 우선 순위 스케줄링 및 SCHED_ RR로 라운드 로빈 우선 순위 스케줄링을 참조하십시오.
추가 리소스
-
sched(7)
,sched_setaffinity(2),
sched_getaffinity(2),
sched_setscheduler(2)
및sched_getscheduler(2)
도움말 페이지