如何確定正在使用哪個進程排程器?

如何確定正在使用哪個進程排程器?

即,它是 O(1) 調度程序、CFS 調度程序還是更舊的調度程序?

答案1

您可以呼叫sched_getscheduler(process_pid)來決定進程的調度策略。

如果/sys/kernel/uids存在,則您有 CFS。或者你可以嘗試

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

我不確定如何區分 O(1) 調度程序和其他過時的調度程序。您可以使用我認為的內核版本,但由於發行版對其發布的內核應用了補丁,因此這將是不可靠的。

答案2

程式設計師可以使用此函數 man sched_setscheduler 來定義進程的調度程序

若要查看進程使用的調度程序,您可以使用 top 指令

用於更改進程 chrt 的調度程序

相關內容