linux 2.6.23时钟中断与调度分析,linux2.6CFS调度算法分析(13页)-原创力文档

CFS(Completely Fair Scheduler)是Linux内核2.6版本采用的调度器,它实现了完全公平的理念,不再区分交互式进程。CFS抛弃了时间片,通过虚拟运行时间(vruntime)来平衡所有进程的执行时间,保证每个任务在理想多任务处理器下获得相等的执行机会。睡眠进程也会得到补偿,以确保公平。CFS调度器的运行时间复杂度为O(logN),提高了调度效率。
摘要由CSDN通过智能技术生成

linux2.6 CFS 调度算法分析

概述

CFS( completely fair schedule )是最终被内核采纳的

调度器。它从 RSDL/SD 中吸取了完全公平的思想,不再跟 踪进程的睡眠时间,也不再企图区分交互式进程。它将所有

的进程都统一对待,这就是公平的含义。 CFS 的算法和实现

都相当简单, 众多的测试表明其性能也非常优越。CFS

都相当简单, 众多的测试表明其性能也非常优越。

CFS

背后的主要想法是维护为任务提供处理器时间方面的平衡

公平性)。这意味着应给进程分配相当数量的处理器。分 给某个任务的时间失去平衡时(意味着一个或多个任务相对

于其他任务而言未被给予相当数量的时间) ,应给失去平衡 抛弃了复杂的算法,从一个新的起点开始了调度器的新时 代,最开始的 2.6.23 版本, CFS 提供一个虚拟的时钟,所有 进程复用这个虚拟时钟的时间, CFS 将时钟的概念从底层体 系相关的硬件中抽象出来,进程调度模块直接和这个虚拟的 时钟接口 而不必再为硬件时钟操作而操心,如此一来,整个进程调度 模块就完整了, 从时钟到调度算法, 到不同进程的不同策略, 全部都由虚拟系统提供,也正是在这个新的内核,引入了调 度类。因此新的调度器就是不同特性的进程在统一的虚拟时

的任务分配时间,让其执行。CFS 抛弃了时间片,

的任务分配时间,让其执行。

CFS 抛弃了时间片,

钟下按照不同的策略被调度。按照作者

钟下按照不同的策略被调度。

按照作者 Ingo Molnar

的说法: "CFS 百分之八十的工作可以用一句话概括:CFS

在真实的硬件上模拟了完全理想的多任务处理器 "。在“完全

理想的多任务处理器 “下,每个进程都能同时获得 CPU 的 执行时间。当系统中有两个进程时, CPU 的计算时间被分成 两份,每个进程获得 50% 。然而在实际的硬件上,当一个进 程占用 CPU 时,其它进程就必须等待。这就产生了不公平。

相关概念

调度实体(sched entiy):就是调度的对象,可以理解为进程。

虚拟运行时间 (vruntime) :即每个调度实体的运行时间。 任务 的虚拟运行时间越小, 意味着任务被允许访问服务器的时间越短 — 其对处理器 的需求越高。

公平调度队列(cfs_rq):采取公平调度的调度实体的运行队 列。 3.CFS 的核心思想

全公平调度器(CFS)的设计思想是:在一个真实的

硬件上模型化一个理想的、精确的多任务 CPU

硬件上模型化一个理想的、

精确的多任务 CPU

该理想 CPU

模型运行在 100%的负荷、在精确

平等速度下并行运行每个任务, 每个任务运行在1/n

平等速度下并行运行每个任务, 每个任务运行在

1/n 速度下,

CPU 整个即理想 CPU 有 n

CPU 整个

负荷的 1/n。

由于真实硬件上,每次只能运行一个任务,这就得引

入"虚拟运行时间 "(virtual runtime )的概念,虚拟运行时间 为一个任务在理想 CPU 模型上执行的下一个时间片

(timeslice) 。实际上, 一个任务的虚拟运行时间为考虑到运行

任务总数的实际运行时间。CFS

任务总数的实际运行时间。

CFS 背后的主要想法是

维护为任务提供处理器时间方面的平衡(公平性)。

维护为任务提供处理器时间方面的平衡(公平性)

。CFS 为

了体现的公平表现在 2 个方面

(1)进程的运行时间相等

CFS 在叫做虚拟运行时 的地方维持提供给某个任务

的时间量。任务的虚拟运行时越小, 意味着任务被允许访问服务器的时间越短 — 其对处理器 的需求越高。

例如,如果具有 4 个可运行的任务,那么 fair_clock

将按照实际时间速度的四分之一增加。每个任务将设法跟上 这个速度。这是由分时多任务处理的量子化特性决定的。也 就是说, 在任何一个时间段内只有一个任务可以运行; 因此, 其他进程在时间上的拖欠将增大( wait_runtime )。因此,

旦某个任务进入调度,它将努力赶上它所欠下的时间(并且 会停止计时)。

要比所欠时间多一点,因为在追赶时间期间,fair_clock

要比所欠时间多一点,因为在追赶时间期间,

fair_clock 不

加权任务引入了优先级。假设我们有两个任务:其

中一个任务占用 CPU 的时间量是另一个任务的两倍,比例 为 2:1 。执行数学转换后,对于权重为 0.5 的任务,时间流 逝的速度是以前的两倍。

(2)睡眠的进程进行补偿

CFS 还包含睡眠公平概念以便确保那些目前没有运

行的任务(例如,等待 I/0 )在其最终需要时获得相当份额

的处理器。CFS 调度器的运行时间是 O(logN) ,而以

的处理器。

前的调度器的运行时间是0(1),这是不是就是说 CFS的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值