【发布时间】:2014-04-12 01:00:06
【问题描述】:
我和我的朋友们正在尝试找到一种方法来为 SCHED_NORMAL 和 SCHED_BATCH 类实现新的(实际上是旧的 :))内核调度算法。换句话说,我们正在尝试实现循环或 FIFO 行为,而不是公平调度算法。我们一直在阅读内核代码,我们取得了一些进展,但还不够。启动此过程的已知方法是什么?我们如何开始(开始实现这些算法)?
谢谢
【问题讨论】:
-
Linux内核已经支持实时调度;支持循环和先进先出策略。有关详细信息,请参阅
sched_setscheduler()手册页。 -
@esorton 您是否建议我们只需将策略设置为 SCHED_RR 就可以了?
-
是的。您不需要实现新的调度算法,除非您想获得学习体验。如果您将进程的调度策略设置为 SCHED_RR,它将以实时优先级运行。具有 SCHED_RR 或 SCHED_FIFO 策略的进程将在具有 SCHED_NORMAL 策略的进程之前运行。
-
@esorton 听起来不错。但是,有没有其他方法可以用 SCHED_NORMAL CFS 替换该算法。我们需要替换 sched.c 中的所有结构吗?
-
不幸的是,我不熟悉内核方面的事情,只熟悉用户级别。如果您确实想实现自己的调度程序,我注意到这个问题,stackoverflow.com/questions/3086864/…,有点老,但可能会有所帮助。
标签: linux linux-kernel kernel