正如几篇(有些旧的)文章所解释的,Linux空闲任务(PID=0,每个 CPU 一个)在没有其他任务要运行时运行。为了让调度程序执行此操作,空闲任务必须为其保留最低优先级。链接的 LWN 文章中的那个旧Documentation/ftrace.txt
文章明确表示
prio“140”是为空闲任务保留的,它是最低优先级线程(pid 0)。
这是有道理的,但是在 Linux 4.9 下
# perf record -e sched:sched_switch sleep 1
# perf script
sleep 6526 [000] 362661.310842: sched:sched_switch: sleep:6526 [120] S ==> swapper/0:0 [120]
报告优先级为 120 swapper/0
(在右括号中),与上述相矛盾。
现在的 Linux 调度器是如何处理空闲任务的?提交更改ftrace.txt
(87d80de28, 294ae4011) 没有帮助。