云南理工大学linux教学-CFS 完全公平调度器.docVIP

  • 9
  • 0
  • 约5.16千字
  • 约 5页
  • 2017-07-28 发布于浙江
  • 举报

云南理工大学linux教学-CFS 完全公平调度器.doc

CFS 完全公平调度器 CFS是最终被内核采纳的调度器。它从RSDL/SD中吸取了完全公平的思想,不再跟踪进程的睡眠时间,也不再企图区分交互式进程。它将所有的进程都统一对待,这就是公平的含义。CFS的算法和实现都相当简单,众多的测试表明其性能也非常优越。 按照作者Ingo Molnar的说法:CFS百分之八十的工作可以用一句话概括:CFS在真实的硬件上模拟了完全理想的多任务处理器。在“完全理想的多任务处理器“下,每个进程都能同时获得CPU的执行时间。当系统中有两个进程时,CPU的计算时间被分成两份,每个进程获得50%。然而在实际的硬件上,当一个进程占用CPU时,其它进程就必须等待。这就产生了不公平。 假设runqueue中有n个进程,当前进程运行了10ms。在“完全理想的多任务处理器”中,10ms应该平分给n个进程(不考虑各个进程的nice值),因此当前进程应得的时间是(10/n)ms,但是它却运行了10ms。所以CFS将惩罚当前进程,使其它进程能够在下次调度时尽可能取代当前进程。最终实现所有进程的公平调度。下面将介绍CFS实现的一些重要部分,以便深入地理解CFS的工作原理。 CFS如何实现pick next CFS抛弃了active/expire数组,而使用红黑树选取下一个被调度进程。所有状态为RUNABLE的进程都被插入红黑树。在每个调度点,CFS调度器都会选择红黑树的最左边的

文档评论(0)

1亿VIP精品文档

相关文档