linux调度器比较,Linux2.4与Linux2.6内核调度器的比较研究.pdf

Linux2.4与Linux2.6内核调度器的比较研究

计算飙技术 ·软件研究与探讨

L_n

ux2.4与L.nux2.6内核调度器的比较研究

叶超1’2,郭立红1,邹荣士l,2

(1.中国科学院长春光学精密机械与物理研究所,吉林长春130033;

2.中国科学院研究生院,北京100039)

u)【2.6的调度器,分析了新调度器的不足并提出了改进建议。

关键词:Linux调度SMP处理器亲和性

Linux的内核开发是一个漫长的过程,自2001年11这个队列没有任何有意义的排

全局就绪进程队列

月开发出2.5.0以来,Linux内核的发展十分迅速,作了序;时间片重算算法是在所有的 田

很多重大的改进,性能也有了很大的提高。内核调度器 进程都用尽它们的时间片以后

的改进是最主要的进步之一,本文对比研究了Linux2.4才重新计算。整个队列由一个

和Linux2.6的调度器,全面剖析了Linux2.6对调度器的

读/写自旋锁(read,writespinlock) 田

改进。 保护着,这样多个处理器可以并

一个成功的调度器的基本要求可以概括为以下三 行访问,但同时提供写操作的互

点: 斥访问。

图1所有的进程共用

(1)减少花在调度上的时间,以增加花在执行程序上 由算法可以看出,Linux2.4

一个全局的就绪进程队列

的时间; 的调度算法可以说是一个O(n)

(2)在多处理器系统上,保持处理器的负载平衡; 算法,因为调度器挑选执行进程的开销是随系统中就绪

(3)对交互式应用有良好的响应速度。 进程的增长而线性增长的…。同时,当系统中有多个处

但是,一个成功的调度器是很难设计好的,因为一 理器时,访问就绪进程队列就成了瓶颈,性能也会显著

个真正投入运行的系统受到很多因素的制约。相对于 的下降。因而有很多的缺点:

Linux2.6,“nux2.4的调度器有很多的不足之处,2.6版(1)每次调度时,调度器都要线性遍历这个队列,以

本的Linux内核使用了新的调度器算法,称为0(1)算法,找出最值得运行的进程执行:当系统负载很高的时候,

它在高负载的情况下执行得极其出色,并且当有很多处 可执行进程队列会很长,线性搜索的时间是线性增长

理器时也可以很好地扩展。 的,这个时间会很长,当这个时间足够长的时候,有可能

0(凡)算法,0代表order,括号里的数字代表最坏情出现多个处理器选择了同一个进程的情况,这样,有些

况下算法效率的上限取决于算法涉及到的元素的个数, 处理器会发现,他选择的进程已经分配了其他的处理

O(1)说明是一个常数,在这种情况下,每次调度的效率器,而不得不重新选择,甚至出现选择运行进程的时间

是一样的,与涉及的元素的多少没有关系,O(n)表示算比实际执行进程的时间还要长的情况。

法效率取决于算法涉及元素的个数。 (2)当大多数的就绪进程的时间片都用完而又还没

1 Linux2.4的调度机制 有重新分配时间片的时候,SMP系统中有些处理器处于

空闲状态,这将影响SMP的效率。

Linux2.4的调度机制可以用下面的算法来描述[3】,

示意图如图1所示。

你可能感兴趣的:(linux调度器比较)