免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: f22jay
打印 上一主题 下一主题

[进程管理] O1调度与cfs调度的比较 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2013-08-07 13:40 |只看该作者
这个时间片不是以实体存在了

论坛徽章:
0
12 [报告]
发表于 2013-08-08 09:48 |只看该作者
能够举个例子吗,o1在什么情况下不如cfs公平?  回复 11# aweii


   

论坛徽章:
0
13 [报告]
发表于 2013-08-08 10:20 |只看该作者
如果要完全公平,那么所有进程在一个周期内的运行时间应该得到平均分配,比如现在有10个进程,10ms的周期,那么每个进程都应该运行1ms;而如果这么做的话优先级就失去意义了。CFS引入了一个虚拟运行时间(vruntime)的概念,在一个周期内,每个进程分配到的虚拟运行时间片是一致的,比如都是1ms。但是根据进程优先级,实际运行时间与虚拟运行时间的汇率是不一样的,优先级越高则汇率越低,这样同样实际运行1ms,不同优先级任务的虚拟运行时间增长的就有高有低。

论坛徽章:
0
14 [报告]
发表于 2013-08-13 09:12 |只看该作者
cfs的理论我懂,还是优先级高运行长嘛,我始终都理不清相对于O1的公平在哪回复 13# junnyg


   

论坛徽章:
0
15 [报告]
发表于 2013-08-13 12:22 |只看该作者
咱们可以通过进程睡眠后被唤醒的角度来理解一下。O(1)调度器中,被唤醒进程根据睡眠时间通过一个公式微调其实时优先级,而时间片是不变的;而CFS调度器中,是通过直接调整虚拟运行时间的。从两者的scheduler_tick中的表现对比一下,CFS算法简单明了,设计目的很明确,就是实现了运行时间的比例分配;而O(1)则不是直接从时间上来决定调度的,间接地通过运行时间和睡眠时间按照复杂的公式影响实时优先级,所以算法复杂,而且目的的达成不如CFS直接明了。

论坛徽章:
0
16 [报告]
发表于 2013-08-13 12:31 |只看该作者
简单说,O(1)是优先级调度,CFS是虚拟运行时间调度,红黑树中的key即进程的vruntime,调度的趋势是vruntime一致,转化为ideal_time就是各进程运行时间按比例分配(比例由静态优先级占比决定)

论坛徽章:
0
17 [报告]
发表于 2013-08-13 12:32 |只看该作者
CFS算法设计意图明确简单

论坛徽章:
0
18 [报告]
发表于 2013-08-15 22:50 |只看该作者
我觉得所谓“公平”是要抛开优先级来看的。优先级本来就是“公平”的对立面,是为了让进程不公平的。
所以我们要先假设两个进程的优先级完全相同。O(1)对优先级完全相同的进程依然存在某种“种族歧视”的,进程即使优先级相同也是生来不平等的。比如播放音频的进程A,和内核编译的进程B。O(1)会偏向让A尽快得到CPU,因为A是所谓IO bound,或者交互式进程,调度器认为它的出身更加高贵。因为它要是有延时,用户就会不爽。让B多等个几秒,没有人会发现。所以在O(1)中A比B高贵,这就是不平等。
CFS则没有任何歧视,A和B一样。大家都是公平的。

这就是我对“公平”的理解。

论坛徽章:
0
19 [报告]
发表于 2013-09-04 11:09 |只看该作者
有道理,不知道还有没有其他体现“公平”的地方。回复 18# ovis_poly


   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP