27장. 스케줄링 정책 튜닝
Red Hat Enterprise Linux에서 프로세스 실행의 최소 단위는 스레드라고 합니다. 시스템 스케줄러는 스레드를 실행하는 프로세서와 스레드가 실행되는 기간을 결정합니다. 그러나 스케줄러의 주요 문제는 시스템을 사용량 상태로 유지하는 것이므로 애플리케이션의 스케줄링 정책 성능에 대해 스레드를 최적으로 예약하지 못할 수 있습니다.
예를 들어 노드 B의 프로세서가 사용 가능하게 되면 NUMA 시스템의 애플리케이션이 노드 A에서 실행되고 있는 경우입니다. 노드 B에서 프로세서를 사용 중인 상태로 유지하기 위해 스케줄러는 애플리케이션의 스레드 중 하나를 노드 B로 이동합니다. 그러나 애플리케이션 스레드는 여전히 노드 A의 메모리에 액세스해야 합니다. 그러나 스레드가 이제 Node B에서 실행되고 노드 A에서 메모리가 더 이상 액세스하는데 더 오래 걸립니다. 따라서 노드 A의 프로세서가 사용 가능할 때까지 기다린 다음 로컬 메모리 액세스 권한이 있는 원래 노드에서 스레드를 실행하는 데 걸리는 것보다 스레드가 노드 B에서 실행을 완료하는 데 시간이 더 오래 걸릴 수 있습니다.
27.1. 스케줄링 정책 카테고리 링크 복사링크가 클립보드에 복사되었습니다!
성능에 민감한 애플리케이션은 종종 로더 또는 관리자가 스레드 실행 위치를 결정하는 이점을 얻을 수 있습니다. Linux 스케줄러는 스레드가 실행되는 위치와 기간을 결정하는 여러 스케줄링 정책을 구현합니다. 다음은 스케줄링 정책의 두 가지 주요 카테고리입니다.
- 일반 정책
- 일반 스레드는 일반 우선 순위의 작업에 사용됩니다.
- 실시간 정책
- 실시간 정책은 중단 없이 완료해야 하는 시간에 민감한 작업에 사용됩니다. 실시간 스레드는 시간 분할의 영향을 받지 않습니다. 즉, 스레드는 차단, 종료, 수집 출력 또는 더 높은 우선 순위 스레드에 의해 선점될 때까지 실행됩니다.
가장 낮은 우선 순위의 실시간 스레드는 일반 정책이 있는 스레드보다 먼저 예약됩니다. 자세한 내용은 시스템 상의 sched(7), sched_ setaffinity(2), sched_getaffinity(2), sched_getaffinity(2) , 스케줄링을 참조하십시오.
매뉴얼 페이지를 사용한 Round robin 우선순위 스케줄링을 사용하여 정적 우선 순위sched_getscheduler(2)