CFS 调度器

Posted honpey

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CFS 调度器相关的知识,希望对你有一定的参考价值。

CFS调度器的原理明白了但是有个地方,搜遍了整个网络也没找到一个合理的解释:

if (delta > ideal_runtime)

  resched_task(rq_of(cfs_rq)->curr);

这出代码是在patch:f685ceaca 

sched: Strengthen buddies and mitigate buddy induced latencies

patch中描述和是LAST_BUDDY 和 wakeup preemption相关

buddy是什么意思?是调度队列中的而一个缓存,一个缓存LAST_BUDDY,一个是NEXT_BUDDY,其中LAST_BUDDY是上次执行唤醒操作的进程,NEXT_BUDDY是上次被唤醒的进程,这两个操作为什么这么不同?上面的调度还是考虑到普通的大众进程,还是没有考虑到进程冷热性。

为什么这里要单独考虑进程的冷热性?

为什么软件层面要考虑进程的冷热性?

为什么要考虑唤醒的进程和被唤醒的进程,唤醒的进程有什么特征,非唤醒的进程有什么特征?唤醒别人的进程|被别人唤醒的进程

不知道为啥子

以上是关于CFS 调度器的主要内容,如果未能解决你的问题,请参考以下文章

Linux 内核CFS 调度器 ⑥ ( CFS 调度器就绪队列 cfs_rq | Linux 内核调度实体 sched_entity | “ 红黑树 “ 数据结构 rb_root_cached )

CFS Scheduler(CFS调度器)

调度器分析及完全公平调度器CFS

CFS调度器—— 基本原理

Linux 内核CFS 调度器 ④ ( 调度子系统组件模块 | 主调度器周期性调度器 | 调度器类 )

CFS 调度器数据结构篇