调度器的精髓--优先级下兼顾公平
2010-02-09 17:34
204 查看
现在回读linux的调度器,O(1)调度器简直就是一个过渡,2.4之前的O(n)调度器曾经和cfs调度器是多么的接近啊!我们不应该只把眼光注意在O(X)的括号内,要知道这个括号内的数字并不能说明这个调度器的优劣,它仅仅是调度行为中的一环而已,是一个理想化的基本原则,正如80/20原则所言,真正为了修复这个理想情况中所有的不理想因素所花费的时间和空间要大得多,所以cfs调度器便抛弃了以前的命名法,难道它还能比O(1)命名法括号内的数字更小吗?显然不能!
O(n)调度器下,只有运行队列中再没有进程的时候才会重新计算所有已经被剥夺运行进程的时间片,睡眠中的进程并没有得到特别的照顾,因为它们在还没有耗尽时间片的时候就被剥夺了运行机会,因此其时间片可以被累加,这样的话,一旦运行队列中没有进程了,实际上还有一些进程在睡眠,比如IO进程,比如交互进程。这个调度器和cfs调度器是多么得相似,只是缺少了:1.pick-next的高效算法;2.多处理器独立队列;...要知道算法的效率直接来源于数据结构而不是思想,另外向多处理器的扩展本身就是一个扩展,也不能否定调度器的设计思想。很多人都对O(1)调度器情有独钟,抛开宣传因素不讲,其本身也算是带来了两三年的高效率,然而我个人在接触了cfs调度器之后却总是对O(1)调度器不甚看好,看看其设计是多么的复杂吧,有多少行代码浪费在计算动态优先级上,而计算动态优先级本身就要涉及到睡眠时间,一个运行队列分裂为两个数组本身仅仅对于pick-next算法有利,为了这点微薄的利益,再看看饥饿避免算法吧...暴露在proc文件系统中的众多调度器微调开关真的迷惑了很多年轻的程序员,当然也包括我自己。到头来发现,真的不需要这么多的开关,cfs调度器实际上就是在O(n)调度器上进行了两点修改,一个是将数组变成了红黑树,另一个就是支持了每cpu一棵树,分级调度暂且不考虑。如果说cfs是一个去伪存真的调度器的话,它更多的是去除了O(1)的伪而保留了O(1)的真谛!虽然O(1)调度器和cfs调度器的设计者是一个人,我宁愿相信他在O(1)中绕了一大圈后回归了原点。如果说O(n)调度器的时间大多浪费在pick-next,那么O(1)调度器确实可以迷惑很多人,因为调度器的命名法,很多人都以为调度器的工作就是pick-next。
去了华为面试,面试官看了我的简历,以调度器为题目企图难为一个叫赵亚的大专生,兹以上文驳斥,遂无言,归,不语!
O(n)调度器下,只有运行队列中再没有进程的时候才会重新计算所有已经被剥夺运行进程的时间片,睡眠中的进程并没有得到特别的照顾,因为它们在还没有耗尽时间片的时候就被剥夺了运行机会,因此其时间片可以被累加,这样的话,一旦运行队列中没有进程了,实际上还有一些进程在睡眠,比如IO进程,比如交互进程。这个调度器和cfs调度器是多么得相似,只是缺少了:1.pick-next的高效算法;2.多处理器独立队列;...要知道算法的效率直接来源于数据结构而不是思想,另外向多处理器的扩展本身就是一个扩展,也不能否定调度器的设计思想。很多人都对O(1)调度器情有独钟,抛开宣传因素不讲,其本身也算是带来了两三年的高效率,然而我个人在接触了cfs调度器之后却总是对O(1)调度器不甚看好,看看其设计是多么的复杂吧,有多少行代码浪费在计算动态优先级上,而计算动态优先级本身就要涉及到睡眠时间,一个运行队列分裂为两个数组本身仅仅对于pick-next算法有利,为了这点微薄的利益,再看看饥饿避免算法吧...暴露在proc文件系统中的众多调度器微调开关真的迷惑了很多年轻的程序员,当然也包括我自己。到头来发现,真的不需要这么多的开关,cfs调度器实际上就是在O(n)调度器上进行了两点修改,一个是将数组变成了红黑树,另一个就是支持了每cpu一棵树,分级调度暂且不考虑。如果说cfs是一个去伪存真的调度器的话,它更多的是去除了O(1)的伪而保留了O(1)的真谛!虽然O(1)调度器和cfs调度器的设计者是一个人,我宁愿相信他在O(1)中绕了一大圈后回归了原点。如果说O(n)调度器的时间大多浪费在pick-next,那么O(1)调度器确实可以迷惑很多人,因为调度器的命名法,很多人都以为调度器的工作就是pick-next。
去了华为面试,面试官看了我的简历,以调度器为题目企图难为一个叫赵亚的大专生,兹以上文驳斥,遂无言,归,不语!
相关文章推荐
- 调度器的精髓--优先级下兼顾公平
- Map/Reduce中公平调度器配置
- linux 2.6 CFS完全公平调度器内幕
- Yarn公平调度器之DRF算法
- Hadoop公平调度器指南
- Hadoop应用------如何编写Hadoop调度器【可以先学习雅虎开源的容量调度器和facebook开源的公平调度器】
- Hadoop-0.20.2公平调度器算法解析
- Hadoop公平调度器指南
- 三:Fair Scheduler 公平调度器
- hadoop2.0 公平调度器(fair-scheduler)配置
- Facebook的公平份额调度器FairScheduler
- Hadoop公平调度器指南
- Hadoop公平调度器指南
- hadoop2.0 公平调度器(fair-scheduler)配置
- Hadoop-0.20.203.0rcl公平调度器(FairScheduler)源代码解析
- yarn调度器(容量调度器、公平调度器、先进先出调度器)
- Hadoop公平调度器指南(转)
- CDH5.4.4基于yarn的公平调度器配置
- Yarn2.2.0公平调度器分配流程
- Hadoop公平调度器指南