linux内核2_6_24的cfs调度器分析

linux内核2_6_24的cfs调度器分析

ID:34530410

大小:187.56 KB

页数:3页

时间:2019-03-07

linux内核2_6_24的cfs调度器分析_第1页
linux内核2_6_24的cfs调度器分析_第2页
linux内核2_6_24的cfs调度器分析_第3页
资源描述:

《linux内核2_6_24的cfs调度器分析》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第27卷第2期计算机应用与软件Vol.27No.22010年2月ComputerApplicationsandSoftwareFeb.2010Linux内核2.6.24的CFS调度器分析杜慧江王云光(上海医疗器械高等专科学校医用电子仪器系上海200093)摘要Linux内核2.6.24采用了新的调度器CFS(CompletelyFairScheduler),以公平的原则对待所有任务。其性能和对交互进程的响应速度都超过之前版本内核的O(1)调度器,并且算法与实现也更简单。先简单对比了O(1)和CFS,然后结合源

2、代码对CFS的算法和实现作了分析。关键词Linux内核调度器CFSANALYSISOFCOMPLETELYFAIRSCHEDULERINLINUXKERNEL2.6.24DuHuijiangWangYunguang(DepartmentofMedicalElectronicsApparatus,ShanghaiMedicalInstrumentationCollege,Shanghai200093,China)AbstractLinuxkernel2.6.24hasadoptedanewCompletelyF

3、airScheduler,theprincipleofitisthefairtreatmentonalltasks.Itsper-formanceandrespondingspeedoninteractivetasksareallsuperiortopreviousschedulerO(1),anditsalgorithmandimplementationaresim-plertoo.InthispaperwedrawasimplecomparisonbetweenCFSandO(1),andthenbrie

4、flyanalysethealgorithmandimplementationofCFSaccordingtoitssourcecode.KeywordsLinuxKernelSchedulerCFS为提高交互式任务的响应速度,每次时钟中断中,当前任务0引言的时间片被减1,当时间片为0时,调度器判断其类型,如果是交互式任务,则重置其时间片并重新插入active数组;否则将其Linux的稳定内核版本从2.6.24开始,使用了新的调度程序从active数组中移到expired数组,这样交互式任务就总能优先CFS,

5、能够更加公平高效地调度所有任务(包括进程和线程),平获得CPU。但是这些任务不能一直留在active数组中,当交互衡交互任务和普通任务。本文首先将2.6.22内核的O(1)调度任务已经占用CPU的时间超过一个固定值后,也会被移到ex-器与CFS进行比较,然后根据源代码对CFS的实现进行分析。pired数组中。若active数组为空,则交换active数组和expired数组,开始新的一轮调度。1O(1)调度器O(1)调度器算法的不足之处在于会在很多情况下失效,导致交互式任务反应缓慢。Linux2.6.22内核

6、使用的是O(1)调度器,它支持SMP并且能保证无论系统的负载和处理器的数目如何,用来选择合适的2CFS调度器任务并且给它分配处理器所花费的时间是固定的。O(1)调度器的任务调度主要包括两部分工作:CFS调度器由IngoMolnar提出,采用了完全公平的思想对(1)动态计算任务优先级普通任务的优先级是动态计算待所有任务。但是“公平”不等于同等对待所有任务,而是指相的,由公式dynamicpriority=max(100,min(staticpriority-bonus+对长程的、统计上的公平。在每个小的时间区间

7、很可能看起来[2]5,139))得出。其中bonus取决于任务的平均睡眠时间。普通并不公平,原因可能是需要对以往的不公平作出补偿、系统的负任务的平均睡眠时间越长,其bonus就越大,从而得到更高的优载变化等。先级。静态优先级越高,任务所能分配到的时间片也越长。实时CFS还增加了一个调度器模块管理器,各种不同的调度算任务的优先级不会动态修改,而且总是比普通任务的优先级高。法可以作为一个模块注册到该管理器中。不同的任务可以选择(2)选出下一个获得CPU的任务普通任务的调度选择使用不同的调度器模块,例如实时任务可以

8、选择实时任务调度算法基于任务的优先级,当前拥有最高优先级的任务被调度器模块。Linux2.6.24内核中,CFS实现了两个调度算法,CFS算选中。调度器为每个CPU维护了两个任务队列数组:active数法模块和实时调度模块。对应实时任务,将使用实时调度模块;组和expired数组。数组中的元素保存着某一优先级的任务队对应普通任务则使用CFS算法。列指针。当需要选择下一个任务时,不用遍历所有任务队列,

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

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

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