debian进程调度算法概览
debian基于linux内核,进程调度由内核提供多种“调度策略”(scheduling policies)。现代内核以**完全公平调度器(cfs)**作为普通进程的默认调度器,并按“调度类”分层:stop_sched_class > dl_sched_class > rt_sched_class > fair_sched_class > idle_sched_class,按此顺序挑选下一个要运行的任务,因此实时与截止期任务总是优先于普通任务执行。
调度策略一览
| 策略 | 用途与对象 | 核心机制 | 关键特性 |
|---|---|---|---|
| sched_normal(sched_fair) | 普通交互与后台任务 | cfs以vruntime为键的红黑树维护就绪队列,按权重分配cpu时间 | 公平、可抢占、支持cgroup组调度 |
| sched_batch | 批处理/非交互负载 | 基于cfs,降低唤醒抢占敏感性,倾向于更长运行 | 降低交互干扰,提高吞吐 |
| sched_idle | 极低优先级后台任务 | 基于cfs,权重极低 | 仅在系统空闲时运行 |
| sched_fifo | 实时任务 | 无时间片、按优先级队列,先进先出 | 可被更高优先级抢占,同优先级不抢占 |
| sched_rr | 实时任务 | 时间片轮转,时间片用尽放队尾 | 同优先级间公平轮转 |
| sched_deadline | 有截止期任务 | 红黑树按绝对截止期排序,选择最早截止任务 | 面向可预期时延与截止期保证 |
| stop_sched_class / idle_task | 内核内部 | stop可抢占一切;idle为每cpu空闲线程 | 用于停机/空闲兜底,不面向普通用户进程 |
以上策略与调度类在linux/debian中稳定存在,其中cfs自2.6.23起成为默认普通调度器;实时与截止期策略用于满足时延敏感与可预期执行需求。
cfs公平调度要点
历史与演进
查看与设置调度策略的常用方法