Como você pode determinar qual agendador de processo está sendo usado?

Como você pode determinar qual agendador de processo está sendo usado?

Ou seja, é o agendador O(1), o agendador CFS ou um mais antigo?

Responder1

Você pode chamar sched_getscheduler(process_pid)para determinar a política de agendamento de um processo.

Se /sys/kernel/uidsexistir, você tem CFS. Ou você poderia tentar

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

Não tenho certeza de como você poderia distinguir o agendador O(1) de outros agendadores obsoletos. Você poderia usar a versão do kernel, suponho, mas como as distribuições aplicaram patches aos seus kernels enviados, isso não será confiável.

Responder2

O escalonador de um processo pode ser definido pelo programador, usando esta função man sched_setscheduler

para ver o agendador usado por um processo, você pode usar o comando top

para alterar o agendador de um processo chrt

informação relacionada