Linux CFS(完全公平调度程序)延迟
我是Linux内核的初学者,我正在努力学习Linux如何调度进程 我已经阅读了一些关于Linux内核的书籍,并浏览了IBM和其他公司的链接,但我仍然有一些疑问Linux CFS(完全公平调度程序)延迟,linux,linux-kernel,scheduler,Linux,Linux Kernel,Scheduler,我是Linux内核的初学者,我正在努力学习Linux如何调度进程 我已经阅读了一些关于Linux内核的书籍,并浏览了IBM和其他公司的链接,但我仍然有一些疑问 调度程序如何在sysctl\u sched\u延迟时间内调度所有任务 当流程唤醒时,place\u entity函数中实际执行的操作是什么 当进程唤醒时,为什么通过从调度延迟中减去来调整vruntime?这是否会导致运行队列中的进程在vruntime值上存在较大差异 首先是任务的虚拟运行时 从理论上讲,这是任务开始下一个时间段的时间 在
sysctl\u sched\u延迟
时间内调度所有任务place\u entity
函数中实际执行的操作是什么李>
调度延迟中减去来调整vruntime
?这是否会导致运行队列中的进程在vruntime
值上存在较大差异
首先是任务的虚拟运行时
- 从理论上讲,这是任务开始下一个时间段的时间 在理论上完美的多线程CPU上执行
- 实际上,它的实际运行时间是否规范化为运行任务的总数
问题1的答案并没有真正回答
sysctl_sched_latency
中的CFS调度问题。很抱歉,我确实无法理解给出的解释:“理论上,任务将在理论上完美的多线程CPU上开始下一次执行的时间片。”,完美的多线程CPU不应该一次运行所有进程吗?你的最后一个链接非常精确地描述了这样一台机器:“理想的多任务CPU”是一个(不存在:-)CPU,它有100%的物理能力,可以以精确相等的速度并行运行每个任务,每个任务的运行速度为1/nr_。”根据这个定义,时间片的概念甚至没有意义。顺便说一句,我还发现“关于CFS调度器设计的注释”这篇文章措辞特别糟糕,请注意第3段和第4段是如何完全矛盾的(!)关于您的第一个问题-来自:如果可运行任务的数量不超过计划延迟/计划最小粒度计划周期=计划延迟否则计划周期=运行任务的数量*计划最小粒度