Как определить, какой планировщик процессов используется?

Как определить, какой планировщик процессов используется?

Т.е. это планировщик O(1), планировщик CFS или какой-то более старый?

решение1

Вы можете позвонить sched_getscheduler(process_pid), чтобы определить политику планирования процесса.

Если /sys/kernel/uidsсуществует, у вас СХУ. Или вы можете попробовать

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

Я не уверен, как вы могли бы отличить планировщик O(1) от других устаревших планировщиков. Вы могли бы использовать версию ядра, я полагаю, но поскольку дистрибутивы применяли патчи к своим поставляемым ядрам, это будет ненадежно.

решение2

Планировщик процесса может быть определен программистом с помощью этой функции man sched_setscheduler

Чтобы увидеть, что планировщик использует процесс, можно использовать команду top

для изменения планировщика процесса chrt

Связанный контент