前面一篇文章用图表的形式阐述了cfs的原理,然后那张图表所展示的行为仅仅是理想意义上的行为,我们看一 下它有何不足,它的不足就是太精确了,为何这么说呢?看看每一个vruntime归一化的时间区间,每一个进程运行了好几次,每次运行的时间就是它的速 度,可以看出,权值大的进程其虚拟时钟跑得慢,这样就可以多跑几次,注意它们每次跑时消耗的物理时间是一样的,cfs的理论就这样实现了公平,如果用代码 实现那张图表,结果就是每次时钟中断中都要将当前进程与红黑树中的其余进程作一番权衡比较,这样的结果就是内核调度其可以非常非常精确的以时钟中断的精度 来跟踪各个进程的虚拟时间流逝进而选择最慢的进程,想到这里可以看出,2.6.23中原始的cfs版本就是这么做的,就是在每一次时钟中断处理中先入队再 出队,如果当前进程不是最慢的进程了,那么调度,可是这样的话会造成频繁调度,特别是各个进程权值相同的情况下,大家伙就会波浪式前进,最终的曲线很平 滑,可是内核偏偏不喜欢这种绝对的优美,那么还是将这种优美留给数学家吧。注意,运行中内核的意义就是权衡,就是折中,就好比生活一样,难道人生不是在折 中中前进吗?不能太极端,这就是中庸之道的精髓啊。
CFS调度器虚拟时钟归一化理想的破碎
原创
©著作权归作者所有:来自51CTO博客作者dog250的原创作品,请联系作者获取转载授权,否则将追究法律责任
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
虚拟化kvm的raw文件处理
kvm的raw文件简单处理
raw文件打开 kvm的raw文件处理 -
Linux 调度器 CFS
cpu_shares是如何影响这个cpu时间片的,这就需要去看一下linux进程调度原理。内
linux 红黑树 运行时间 进程调度 -
【Linux 内核】CFS 调度器 ② ( CFS 调度器 “ 权重 “ 概念 | CFS 调度器调度实例 | 计算进程 “ 实际运行时间 “ )
一、CFS 调度器 " 权重 " 概念、二、CFS 调度器调度实例 ( 计算进程 " 实际运行时间 " )
Linux内核 进程管理 CFS调度器 权重 进程实际运行时间 -
【Linux 内核】CFS 调度器 ③ ( 计算进程 “ 虚拟运行时间 “ )
一、计算进程 " 虚拟运行时间 "
Linux内核 进程管理 调度器 CFS调度器 虚拟运行时间