
3.1 CFS调度器:公平是表象,延迟才是关键CFS,全称Completely Fair Scheduler,完全公平调度器。从2.6.23内核开始成为默认调度器,一直用到现在。它的核心思想很简单:让每个任务都能公平地获得CPU时间。但公平不等于高效,尤其对驱动来说。CFS的核心数据结构:红黑树CFS用红黑树来管理所有可运行的任务。树的key是vruntime(虚拟运行时间)。每次调度时,CFS选择vruntime最小的任务来运行。说白了,谁吃得少,谁就先吃。这里有个关键点:vruntime的计算考虑了任务的优先级(nice值)。优先级高的任务,vruntime增长得慢,所以更容易被选中。// CFS vruntime 计算简化逻辑 // 实际代码在 kernel/sched/fair.c 中 vruntime += (delta_exec * NICE_0_LOAD) / se-load.weight;嗯,公式看着有点绕。你只要记住:nice值越低(优先级越高),weight越大,vruntime增长越慢,任务越容易被调度。3.1.1 调度延迟对驱动的影响CFS的调度延迟,说白了就是:一个任务就绪后,到它真正获得CPU的时间。这个延迟对普通