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是上次被唤醒的进程,这两个操作为什么这么不同?上面的调度还是考虑到普通的大众进程,还是没有考虑到进程冷热性。

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

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

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

不知道为啥子

时间: 2024-12-11 12:18:16

CFS 调度器的相关文章

CFS调度器

一.前言 随着内核版本的演进,其源代码的膨胀速度也在递增,这让Linux的学习曲线变得越来越陡峭了.这对初识内核的同学而言当然不是什么好事情,满腔热情很容易被当头浇灭.我有一个循序渐进的方法,那就是先不要看最新的内核,首先找到一个古老版本的内核(一般都会比较简单),将其吃透,然后一点点的迭代,理解每个版本变更背后的缘由和目的,最终推进到最新内核版本. 本文就是从2.4时代的任务调度器开始,详细描述其实现并慢慢向前递进.当然,为了更好的理解Linux调度器设计和实现,我们在第二章给出了一些通用的概

第一次作业:Linux 2.6.28进程模型与CFS调度器分析

第一次作业 1.摘要 本文主要针对Linux Kernel 2.6.28内核版本,描述了进程的概念以及调用过程. Linux Kernel源码查阅地址:https://elixir.bootlin.com/linux/v4.6/source/include/linux/types.h 2. 何谓进程 2.1 进程的概念 进程的一种官方定义: 进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动,也是操作系统进行资源分配和调度的一个独立单位. 简而言之,进程是操作系统为正在运行的程序所建

第一次作业:关于Linux进程模型及CFS调度器分析

第一次作业内容 挑选一个开源的操作系统,深入源码分析其进程模型,具体包含如下内容: 操作系统是怎么组织进程的 进程状态如何转换(给出进程状态转换图) 进程是如何调度的 谈谈自己对该操作系统进程模型的看法 1. 前言 本文基于Linux Kernel 2.6.28 的源代码,分析本版本linux的进程模型和CFS调度器的基本算法. 源码浏览地址:https://elixir.bootlin.com/linux/v2.6.28/source 2. 进程 2.1 进程的定义 <计算机操作系统>这门课

Linux 调度器发展简述

引言 进程调度是操作系统的核心功能.调度器只是是调度过程中的一部分,进程调度是非常复杂的过程,需要多个系统协同工作完成.本文所关注的仅为调度器,它的主要工作是在所有 RUNNING 进程中选择最合适的一个.作为一个通用操作系统,Linux 调度器将进程分为三类: 交互式进程 此类进程有大量的人机交互,因此进程不断地处于睡眠状态,等待用户输入.典型的应用比如编辑器 vi.此类进程对系统响应时间要求比较高,否则用户会感觉系统反应迟缓. 批处理进程 此类进程不需要人机交互,在后台运行,需要占用大量的系

朴素的UNIX之-调度器前传

Linux目前的进程调度算法是CFS算法,替换了之前的时间片轮转调度算法,CFS算法平滑了动态优先级的计算过程,使整个系统在任何时间都可以被任何 执行实体抢占,事实上这是分时系统的基本原则,试想,如何每一个进程/线程都像中断那样,依靠自己的优先级随时执行,那整个系统才真的成了"公平的"利他 系统.要想理解这种利他行为的本质,如果我们去研究CFS调度算法的各种统计数据,或者去研究其代码,那么其效果肯定是不好的,如果我们去研究 Windows NT内核的调度算法,无疑也会浪费大量的时间和精

朴素的UNIX之-调度器细节

0.多进程调度的本质 我们都知道UNIX上有一个著名的nice调用,何谓nice,当然是"好"了,常规的想法是nice值越大越好,实际上,nice值越好,自己的优先级越低,那么为何不用badness呢? 事实上,如果我们理解了操作系统多进程调度系统是一个"利他"系统,这个问题就不是个问题了.nice当然还是好,不是对自己好,而是对别人好.利他系统 是一个人人为我我为人人的系统,类似还有TCP流量控制和拥塞控制,人类的宗教社会组织等等,利他系统都有一个负反馈机制,让波

Linux核心调度器之周期性调度器scheduler_tick--Linux进程的管理与调度(十八)

日期 内核版本 架构 作者 GitHub CSDN 2016-6-29 Linux-4.6 X86 & arm gatieme LinuxDeviceDrivers Linux进程管理与调度 我们前面提到linux有两种方法激活调度器:核心调度器和 一种是直接的, 比如进程打算睡眠或出于其他原因放弃CPU 另一种是通过周期性的机制, 以固定的频率运行, 不时的检测是否有必要 因而内核提供了两个调度器主调度器,周期性调度器,分别实现如上工作, 两者合在一起就组成了核心调度器(core schedu

进程调度 ---CFS调度

完全公平算法CFS调度分析方法: 是依据进程就绪队列中等待的时间长短来进行调度选择,即在就绪队列中等待时间越长的进程得到调度的机会就越大,否则,机会就越小:CFS在所有可运行进程总数基础上计算出一个进程应该运行多久,而不是依靠nice值来计算时间片;nice值在CFS中被作为进程获得的处理器运行比的权重:越高的nice值(越低的优先级)进程获得更低的处理器使用权重,这是相对默认nice值进程的进程而言的:相反,更低的nice值(越高的优先级)的进程获得更高的处理器使用权重. 在初始化时: __i

linux调度器源码研究 - 概述(一)

本文为原创,转载请注明:http://www.cnblogs.com/tolimit/ 引言 调度器作为操作系统的核心部件,具有非常重要的意义,其随着linux内核的更新也不断进行着更新.本系列文章通过linux-3.18.3源码进行调度器的学习和分析,一步一步将linux现有的调度器原原本本的展现出来.此篇文章作为开篇,主要介绍调度器的原理及重要数据结构. 调度器介绍 随着时代的发展,linux也从其初始版本稳步发展到今天,从2.4的非抢占内核发展到今天的可抢占内核,调度器无论从代码结构还是设