Linux CPU scheduling

在 2.5 版之前,Linux 使用传统的 UNIX 调度算法。
2.6 版使用了一种称为 O(1) 的算法,无论任务数量如何,该算法都在恒定时间内运行,并为 SMP 系统提供了更好的支持。然而,它产生了较差的交互性能。
从 2.6.23 开始,完全公平调度器 CFS成为标准的 Linux 调度系统。

 CFS(完全公平调度器)性能

Linux CFS 调度程序提供了一种高效的算法来选择接下来要运行的任务。每个可运行的任务都放置在一个红黑树中——一个平衡的二叉搜索树,其键基于vruntime的值。这棵树,如下图所示:

 

5c76f3ad81d04db88264da676d9e93e4.png

当任务变为可运行时,它被添加到树中。如果树上的任务不可运行(例如,如果它在等待 I/O 时被阻塞),它将被删除。一般来说,被赋予较少处理时间的任务(较小的vruntime值)位于树的左侧,而被赋予更多处理时间的任务位于右侧。根据二叉搜索树的性质,最左边的节点具有最小的键值,这对于 CFS 调度器来说意味着它是具有最高优先级的任务。因为红黑树是平衡的,导航它发现最左边的节点将需要O(lgN)操作(其中N是树中的节点数)。但是,出于效率原因,Linux 调度程序将此值缓存在变量rb_leftmost中,因此确定下一个要运行的任务只需要检索缓存的值。

Linux 调度程序是一种基于优先级的抢占式算法,具有两个优先级范围 -Real time从 0 到 99 和nice level的范围从 100 到 140。
与 Solaris 或 XP 不同,Linux 将更长的时间片分配给更高优先级的任务。

63602b867e454f21a0199f4d2447139a.png

 Scheduling priorities on a Linux system.

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

太极淘

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值