어떤 프로세스 스케줄러가 사용되고 있는지 어떻게 확인할 수 있습니까?

어떤 프로세스 스케줄러가 사용되고 있는지 어떻게 확인할 수 있습니까?

즉, O(1) 스케줄러입니까, CFS 스케줄러입니까, 아니면 오래된 것입니까?

답변1

sched_getscheduler(process_pid)프로세스에 대한 일정 정책을 결정하기 위해 호출할 수 있습니다 .

존재 한다면 /sys/kernel/uidsCFS가 있는 것입니다. 아니면 시도해 볼 수도 있습니다.

[[ -n $(awk '$3 == "load_balance_fair" {print;}' < /proc/kallsyms) ]] && 
  echo CFS

O(1) 스케줄러를 다른 오래된 스케줄러와 어떻게 구별할 수 있는지 잘 모르겠습니다. 제가 생각하는 커널 버전을 사용할 수는 있지만 배포판에서 배송된 커널에 패치를 적용했기 때문에 이는 신뢰할 수 없습니다.

답변2

프로세스의 스케줄러는 프로그래머가 이 기능을 사용하여 정의할 수 있습니다. man sched_setscheduler

스케줄러가 프로세스에서 사용하는 것을 보려면 top 명령을 사용할 수 있습니다.

프로세스 차트의 스케줄러를 변경하려면

관련 정보