- 1、本文档共78页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Linux进程调度.doc
Linux进程调度
wjcdx@
linux-
按照RCU的分析经验,上来就先看了相关的数据结构,然后找到sched_init函数,准备画架构图,却也分析的云里雾里。这也是正常的,马克思教导我们,发展要经历否定之否定,任何事情都是螺旋上升的。所以不可能一次将这一块完全搞清楚,必须在有个大概的轮廓之后,再结合其他部分对这些数据结构的应用,才能更清楚的理解。
牵涉到的数据结构主要有sched_group, sched_domain, sched_class, sched_statistics,?sched_entity,?sched_rt_entity;
task_struct, task_group, runqueue, cfs_rq.
在这里也能体现出管理流与执行流的区别,在这里执行流就是进程调度,即从rq中选出task_struct来执行,以及对进程状态变化的处理;管理流就是CPU负载平衡。
已经看了两天,执行流中各数据结构的关系(rq, cfs_rq, se, ts)相对清晰;平衡流中数据结构(rq, cpu, sd, sg, tg, cgroup)很是复杂,并且牵涉其他模块如cpumask, cgroup,topology等,其他概念如SMT/MC/SMP/NUMA。并且这只是初始化部分,随着CPU hotplug,和cgroup task_group的创建和销毁,还会增加和删除sched_doamin。
好,有难度才好,有问题就一个一个的列出来,摆正顺序,一个一个克服。
列出来就会发现其实也就只有那几个问题。
本文会研究两个方面:
① CFS/RT进程调度算法关联的数据结构含义,忽略statistics;
② 负载均衡,前期重点在于理清sched_domain、sched_group的关系,后期研究过载与平衡的过程;
③ 为达成以上两点,需要具备的知识,过程中解决
本人基础:
① 去年大致看过schedule函数,sched fair的enqueue,dequeue过程;
② ULK3 看过两遍(忘了很大一部分)
PS: damn chinaunix,从blog换成了blog168,看来要做两手准备了,这些东西不好丢,丢不起;
本文内容,同时参见/p/wjcdx-learning/wiki/TaskSched
介绍multi-core的load-balance时performace and power saving之间的权衡
燗symmetric Scheduling and Load Balancing for Real-Time on Linux SMP.pdf?c?s介绍根据ACPI SLIT构建multi-level sched_domain结构
燨perating System Multilevel Load Balancing.pdf?a
wangjianchangdx?011-07-21 18:51
网上搜到一篇源码分析的资料,再找到这位兄台的博客一看,果然是他写的,呵呵/u1/51562/showart_1867456.html
wangjianchangdx?2011-07-21 18:54
IBM developerWorks上刘勃的这篇文网上引用也挺多的/developerworks/cn/linux/l-cn-schldom/
wangjianchangdx?2011-07-21 19:00
本次尽可能使用前人研究成果,交流共享,借鉴他人良好习惯,也缩短研究时间
wangjianchangdx?2011-07-21 19:13
现在的进度是研究平衡流相关数据结构的初始化,即SMT/MC/SMP/NUMA层次下sched_domain和sched_group的初始化,以弄清关系,他们的动态创建和销毁,暂不研究。等这个问题搞清楚之后,先要研究进程调度机制,然后再回过头来研究平衡流。cpumask的研究似乎不可避免了,那就先把他搞清楚;topology与之关系密切,似乎可以一并搞定
wangjianchangdx?011-07-21 19:48构
init/main.c:?/* Setup number of possible processor ids */int nr_cpu_ids __read_mostly = NR_CPUS;EXPORT_SYMBOL(nr_cpu_ids);
。wangjianchangdx?011-07-21 19:48S
init/main.c:?/* Setup number of possible processor ids */int nr_cpu_ids __read_mostly = NR_CPUS;EXPORT_SYMBOL(nr_c
文档评论(0)