CFS

CFS调度器 【ChatGPT】

https://www.kernel.org/doc/html/v6.6/scheduler/sched-design-CFS.html CFS调度器 1. 概述 CFS代表“完全公平调度器”,是由Ingo Molnar实现并合并到Linux 2.6.23中的新“桌面”进程调度器。它是替代先前普通调 ......
ChatGPT CFS

CFS(七)带宽控制

前言 CFS带宽控制顾名思义是控制CPU的使用量,作为CFS一个可配置特性需要开启CONFIG_CGROUP_SCHED CONFIG_FAIR_GROUP_SCHED 和 CONFIG_CFS_BANDWIDTH三个配置选项,实现的效果就是对任务组实施CPU带宽限流,让任务组在单位周期内只能使用定 ......
带宽 CFS

CFS(五)组调度

前言 以进程为CPU资源的分配单位在某些场景下是有缺陷的,比如容器场景需要支持按照组做资源的分配,然后组内再按照进程做细化的资源分配。组调度技术是cgroup实现的一个重要组成部分。 CFS组调度需要开启CONFIG_CGROUP_SCHED和CONFIG_FAIR_GROUP_SCHED选项。 组 ......
CFS

CFS(六)PELT负载统计

前言 PELT全称per-entity load tracking,用于实现调度实体级别的负载信息统计,能够为调度决策提供更细粒度的信息。上文中的组调度的任务组权重分配就依赖于负载信息,除此之外负载均衡场景也需要精准的对每个核的负载情况进行分析,PELT相比于rq级的负载统计,除了能知道负载的情况还 ......
PELT CFS

CFS(四)新任务的创建流程

前言 新任务产生接口有clone、fork等系统调用,这些系统调用的都是通过do_fork函数实现。本文主要对do_fork中CFS新任务的调度初始化过程进行了探究,看看一个CFS新任务如何完成调度信息的初始化以及进入就绪队列的。 CFS的调度信息初始化 long _do_fork(...) { / ......
流程 任务 CFS

CFS(三)调度周期与最小抢占粒度

前言 CFS的调度逻辑是将一个调度周期的物理时间按照任务的权重分配给每一个任务,确保在一个调度周期内,队列中的每一个任务都能够得到执行,尽管执行的时长会有差异。本文对调度周期的设定规则以及配置参数进行探究。 调度周期 调度周期的计算函数__sched_period如下,计算结果与以下参数有关: nr ......
粒度 周期 CFS

CFS(二)load_weight与vruntime

前言 在理清楚了CFS的基本实现以后,调度类fair_sched_class中规定了调度器的基本操作集合,cfs_rq实现了被操作的就绪队列。剩下的就是研究操作集合中的具体实现,看看CFS是如何管理这些队列中的进程的。本文主要解释了两个问题: 什么样的任务归CFS管? CFS如何实现队列内部的优先级 ......
load_weight vruntime weight load CFS

CFS(一)设计理念与实现架构

前言 本文对CFS的基础的设计理念以及在内核实现上的基本代码架构进行了分析,从宏观上梳理调度和CFS的脉络。本文所有的代码基于Linux 4.19。 CFS的设计理念和目标 CFS(Completely Fair Scheduler)完全公平调度器,从字面上看定义的很清晰,首先CFS的本质是一个调度 ......
设计理念 架构 理念 CFS

极简cfs公平调度算法

1. 说明 1> linux内核关于task调度这块是比较复杂的,流程也比较长,要从源码一一讲清楚很容易看晕 2> 本篇文章主要是讲清楚cfs公平调度算法如何将task在时钟中断驱动下切换调度,所以与此无关的代码一律略过 3> 本篇只讲最简单的task调度,略过组调度,组调度在下一篇《极简组调度-C ......
算法 cfs
共9篇  :1/1页 首页上一页1下一页尾页