Linux 内核更改默认 CPU 调度程序

Gün*_*asa 6 linux kernel schedule scheduler linux-kernel

我正在尝试破解 Linux 内核,我想知道。如何使用另一个更改默认的 Linux Process 调度程序?我可以将每个进程设置为实时进程吗?

小智 4

这篇文章有点过时了,但无论如何我希望这能有所帮助...我遇到了类似的问题,我对 Linux 内核进行了修改,使 RR 成为默认的 CPU 调度程序。最后,正如之前的评论所指出的,黑客基本上改变了 shed_fork 函数。这是我为实现该功能而编写的代码:https://aelseb.wordpress.com/2016/01/06/change-linux-cpu-default-scheduler/

以下是Linux v3.18 中该__sched_setscheduler函数的相关差异:kernel/sched/core.c

-     p->prio = current->normal_prio;
+     /* Lorenzo Nava: force policy to RR */
+     if (p->policy == SCHED_NORMAL) {
+         p->prio = current->normal_prio - NICE_WIDTH -
+                 PRIO_TO_NICE(current->static_prio);
+         p->normal_prio = p->prio;
+         p->rt_priority = p->prio;
+         p->policy = SCHED_RR;
+         p->static_prio = NICE_TO_PRIO(0);
+     }

+     /* Lorenzo Nava: force policy of process to RR */
+     if (attr.sched_policy == SCHED_NORMAL) {
+         attr.sched_priority = param->sched_priority -
+                 NICE_WIDTH - attr.sched_nice;
+         attr.sched_policy = SCHED_RR;
+     }
+
Run Code Online (Sandbox Code Playgroud)

  • 您好,欢迎来到 Stack Overflow。请不要发布链接作为答案,如果它被更改或离线,它将变得毫无用处。相反,请使用信息和代码来构建您的答案,并将链接仅用作参考。谢谢。 (9认同)