gpt4 book ai didi

linux - Ubuntu 中的动态进程调度

转载 作者:太空狗 更新时间:2023-10-29 12:06:58 24 4
gpt4 key购买 nike

我想修改动态改变进程优先级的linux内核代码。

我有 Ubuntu 10.10,我下载了 linux 2.6.37。我发现在 2.6.37 版本中没有动态改变进程优先级的概念。 [在CentOS中有一个recalc_task_prio()函数可以动态改变进程的优先级]。

我想知道是否有人知道任何其他支持动态更改进程优先级功能的 ubuntu 内核版本(如果任务受 cpu 限制并消耗大量 cpu,则基于对进程优先级的惩罚)?

我主要指的是这个链接 - http://www.ibm.com/developerworks/linux/library/l-scheduler/

提前致谢

最佳答案

在 Linux v2.6.23 中一个新的 CFS集成了调度程序,它较少依赖于 HZ 而更多地依赖于纳秒级的执行时间。

所有进程都存储在一个 red-black tree 中这使得找到要执行的最左边(因此最值得)的任务变得很便宜 O(1)。系统会定期 (task_tick()) 检查是否有另一个进程可能“更值得”并抢占正在运行的任务。 (当然,任务可以自行产生 (yield_task()),新可运行的任务可以抢占正在运行的任务 (check_preempt_curr())。进程花费的时间running 被计入它,它被重新插入树 O(log(N)) 以找到它在 RB 树中的新位置。

因此,等待 IO 的任务占用的时间非常少,并且不会在树中移动到很远的地方——这对应于优先级提升。不休眠 IO 事件的任务在被更高优先级的任务抢占之前将使用相对更多的 CPU 时间。

有关详细信息,请务必阅读Documentation/scheduler/ 文档和kernel/sched* 实现文件。

如果我的家庭作业项目是摆弄调度程序(这在过去很常见),我会认真考虑添加一个新的实时调度类,如 SCHED_FIFOSCHED_RR (取决于哪个更接近正在讨论的调度程序设计)并以这种方式摆弄任务的优先级。对于介绍性操作系统类(class)来说,这样做可能有点陡峭——较旧的 Linux 或较旧的 BSD 内核可能更容易上手。

关于linux - Ubuntu 中的动态进程调度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8032175/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com