
Т.е. это планировщик 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