README.md
以下内容由 AI 翻译,如有问题请点此提交 issue 反馈
ECHO CPU 调度器
增强型 CPU 处理协调器
这是针对 Linux 内核的 CPU 进程调度器补丁。
该调度器具备以下功能: -
- 强大的多任务处理能力,最大时间配额为 35us。
- CPU 上的所有任务共享相同的配额,即 35us,每个任务的运行时间为(35us / 任务数量)。
- 正在运行的任务的最小时间片为 7us,除非有被唤醒的任务需要优先于当前任务运行,此时该被唤醒的任务会抢占当前任务。
- 使用 SRTF(最短剩余任务优先)算法来估算任务时间。该算法通过移动平均法计算虚拟运行时间。
- 会选择虚拟运行时间最短的下一任务。
- 具有类似 TT 调度器的负载均衡功能,但做了少量修改。CPU0 负责在其他 CPU 之间调度任务。此外,候选均衡器默认处于启用状态。
与其他调度器的对比
https://github.com/hamadmarri/benchmarks
策略
该策略结合了 SRTF 与 RR(轮询)机制,其中的虚拟运行时间计算是从 CFS 搬移过来的(它会根据任务的优先级来计算调整后的突发量)。每一轮中,任务会从预估虚拟运行时间最短的开始执行,且每个任务将运行 shared_quota/#tasks 次,例如 35us / 3 = ~11.7us 次。
如果某个被唤醒任务的预估虚拟运行时间更短,它就会抢占当前任务并开始运行。每当任务耗尽其配额后,它就会被放入第二个队列,除非它是唯一正在运行的任务。一轮结束后,所有任务都会被放入第二个队列。调度器会将队首从 q1 切换到 q2,此时 q2 成为 q1,反之亦然。
默认值与 Sysctl 设置
- ECHO 的默认 HZ 值为 625HZ,即每 1.6 毫秒触发一次计时。无需提高该值,因为 HighRes 时钟最多可在 35 微秒内完成任务抢占。
- 默认情况下
kernel.sched_bs_shared_quota的值为 35000(即 35 微秒),可通过 sysctl 进行调整。 例如sysctl kernel.sched_bs_shared_quota=4800000,较大的值虽然能节省 CPU 缓存,但会降低交互性及多任务处理能力。 - 有一些内核配置必须被禁用:
- CONFIG_FAIR_GROUP_SCHED
- CONFIG_SCHED_AUTOGROUP
- CONFIG_SCHED_CORE
Telegram 群组
哈马德