ITADN
hamadmarri/ECHO-CPU-Scheduler
hamadmarri/ECHO-CPU-Scheduler · 文件 下载 ZIP
文件最后提交记录最后更新时间
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 群组

https://t.me/tt_sched

哈马德