Linux 2.6 调度系统分析

Linux 2.6 调度系统分析

ID:37503513

大小:279.10 KB

页数:19页

时间:2019-05-24

Linux 2.6 调度系统分析_第1页
Linux 2.6 调度系统分析_第2页
Linux 2.6 调度系统分析_第3页
Linux 2.6 调度系统分析_第4页
Linux 2.6 调度系统分析_第5页
资源描述:

《Linux 2.6 调度系统分析》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、Linux2.6调度系统分析中国[选择]使用条款首页产品服务与解决方案支持与下载个性化服务developerWorks中国>Linux>Linux2.6调度系统分析在2.4之上进步内容:1.前言杨沙洲2.新的数据结构runqueue国防科技大学计算机学院,2004年4月3.改进后的task_struct2004年4月4.新的运行时间片表现本文从Linux2.4调度系统的缺陷入手,详细分析了Linux2.6调度系统的原理和实现细节,并对与调度5.优化了的优先级计算方法系统相关的负载平衡、NUMA结构以及实时性能进行了分析和评价

2、。文末,作者从调度系统的发展和实6.进程平均等待时间现出发,对Linux的发展特点和方向提出了自己的看法。sleep_avg7.更精确的交互式进程优先1.前言8.调度器Linux的市场非常广阔,从桌面工作站到低端服务器,它都是任何商用操作系统的有力竞争对手。目前,Linux正全力进军嵌入式系统和高端服务器系统领域,但它的技术缺陷限制了它的竞争力:缺乏对实时任务的支持,9.调度器对内核抢占运行的多处理机可扩展性差。在2.4内核中,造成这两个弱项的关键原因之一就是调度器设计上的缺陷。支持10.调度器相关的负载平衡2.6调度系统从

3、设计之初就把开发重点放在更好满足实时性和多处理机并行性上,并且基本实现了它的设计目标。主要设计者,传奇式人物IngoMolnar将新调度系统的特性概括为如下几点:11.NUMA结构下的调度12.调度器的实时性能●继承和发扬2.4版调度器的特点:13.后记:从调度器看❍交互式作业优先Linux发展❍轻载条件下调度/唤醒的高性能参考资料❍公平共享❍基于优先级调度关于作者❍高CPU使用率对本文的评价❍SMP高效亲和❍实时调度和cpu绑定等调度手段相关内容:●在此基础之上的新特性:Linux2.4调度系统分析❍O(1)调度算法,调度

4、器开销恒定(与当前系统负载无关),实时性能更好❍高可扩展性,锁粒度大幅度减小developerWorksToolbox❍新设计的SMP亲和方法subscription❍优化计算密集型的批处理作业的调度❍重载条件下调度器工作更平滑订阅:❍子进程先于父进程运行等其他改进developerWorks时事通讯在2.5.x的试验版本中,新的调度器的开发一直受到广泛关注,实测证明它的确使系统性能得到很大改善。本文就从新设计的数据结构开始,围绕2.6对于2.4所作的改进,对2.6调度系统的原理和实现细节进行分析。2.6调度器设计相当复杂,

5、文中还存在很多需要继续研究的地方,特别是各个调度参数的设定,随着核心版本的升级,可能还会继续修正。2.新的数据结构runqueue我们知道,在2.4内核中,就绪进程队列是一个全局数据结构,调度器对它的所有操作都会因全局自旋锁而导致系统各个处理机之间的等待,使得就绪队列成为一个明显的瓶颈。2.4的就绪队列是一个简单的以runqueue_head为头的双向链表,在2.6中,就绪队列定义为一个复杂得多的数据结构structrunqueue,并且,尤为关键的是,每一个CPU都将维护一个自己的就绪队列,--这将大大减小竞争。O(1)算

6、法中很多关键技术都与runqueue有关,所以,我们对调度器的分析就先从runqueue结构开始。1)prio_array_t*active,*expired,arrays[2]http://www-128.ibm.com/developerworks/cn/linux/kernel/l-kn26sch/(第1/19页)2006-1-1416:45:03Linux2.6调度系统分析runqueue中最关键的数据结构。每个CPU的就绪队列按时间片是否用完分为两部分,分别通过active指针和expired指针访问,active

7、指向时间片没用完、当前可被调度的就绪进程,expired指向时间片已用完的就绪进程。每一类就绪进程都用一个structprio_array的结构表示:structprio_array{intnr_active;/*本进程组中的进程数*/structlist_headqueue[MAX_PRIO];/*以优先级为索引的HASH表,见下*/unsignedlongbitmap[BITMAP_SIZE];/*加速以上HASH表访问的位图,见下*/};图1:active、expired数组示例图中的task并不是task_struc

8、t结构指针,而是task_struct::run_list,这是一个小技巧,详见下文run_list的解释。在2.4版的内核里,查找最佳候选就绪进程的过程是在调度器schedule()中进行的,每一次调度都要进行一次(在for循环中调用goodness()),这种查找过程与当前就绪进程的个

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。