如何确定正在使用哪个进程调度程序?

如何确定正在使用哪个进程调度程序?

即,它是 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 的调度程序

相关内容