linux cfs scheduler

本文介绍了Linux内核中CFS完全公平调度器的工作原理及其实现机制,包括使用红黑树来跟踪进程执行时间,以及如何确保每个进程都能获得公平的CPU时间份额。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Linux调度相关模块组件图

    

  80% of CFS's design can be summed up in a single sentence: CFS basically models an "ideal, precise multi-tasking CPU" on real hardware.

   和以前在老的linux 2.6内核中使用的O(1)调度器不同,CFS调度器实现并不是基于run queues。事实上,CFS使用红黑树实现将来任务执行的时间线。同时,CFS使用了纳秒级的统计粒度。

主要特性:

模块化调度程序

完全公平调度

CFS组调度

算法:

scheduler将任务记录存储在一棵红黑树中,使用所花费的处理器时间作为键值。使用处理器时间最少的进程为红黑树中最左叶子节点。所选择的进程leftmost leaf node 从树中移除,花费的执行时间更新,然后再次添加到树中,通常与上次所添加的节点位置不同。不断反复。

如果一个任务大部分时间都在睡眠,则其花费时间值就低,那么其自动获得优先级加速当他需要的时候。所以这种任务较之于不断运行的任务并没有获得更少的处理器时间。

CFS调度程序使用安抚策略确保公平性。当某个任务进入运行队列后,将记录当前时间,但某个进程等待CPU时,将对这个进程的wait_runtime值加一个数,这个数取决于运行队列当前的进程数。当执行这些计算时,也将考虑不同任务的优先级值。将这个任务调度到CPU后,它的wait_runtime值开始递减,当这个值递减到其他任务成为红黑树的最左侧任务时,当前任务被抢占。通过这种方式,CFS努力实现一种理想状态,即wait_runtime值为0!

 

 

转载于:https://my.oschina.net/longscu/blog/56016

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值