NewThis is a live doc! Anyone with edit access can make updates in real time without having to publish.
概念
CFS, Completely Fair Scheduler
CFS 在真实的 CPU 上(统一时刻只能执行一个任务)模拟了一个「理想的、精确的、多任务 CPU」,且每个任务都严格的使用了 1/nr_running 个 CPU
CFS 跟踪所有任务的执行时间(纳秒)(p->se.vruntime),并始终选择该值最小的(即被执行时间最少的)作为下一个要执行的任务
调度器的类别
根据「任务多久会被切换」,CFS 有多种设置(默认 SCHED_NORMAL)
SCHED_NORMAL (SCHED_OTHER):标准
SCHED_BATCH:适用于批处理任务,调高任务切换间隔
SCHED_IDLE:仅用于防止异常,通常仅在任务完成空闲时才切换
SCHED_FIFO implemented in sched/rt.c and are as specified by POSIX.
SCHED_RR implemented in sched/rt.c and are as specified by POSIX.
分组调度
某些情况下,可能需要分组调度并保证组间公平与组内公平而不是全局公平