CFS 调度器两种调度类型普通调度 和 组调度
在 Linux 的 CFS(Completely Fair Scheduler) 调度器中,确实存在两种调度类型:普通调度 和 组调度。这两种调度类型分别适用于不同的场景,并通过三个关键维度(权重、抢占优先级、最大配额)来影响程序对 CPU 资源的使用。以下是对这些概念的详细解析:
1. 普通调度与组调度
(1)普通调度
- 普通调度是指直接针对单个任务(进程或线程)进行调度。
- 不涉及 cgroup(Control Group),即没有将任务分组管理。
- 适合简单的应用场景,比如运行独立的任务。
(2)组调度
- 组调度是基于 cgroup 的调度方式,允许多个任务被组织到一个组中,并以组为单位分配 CPU 资源。
- 这种方式特别适合需要资源隔离或按组分配资源的场景,例如容器化环境(如 Docker、Kubernetes)。
- 在 cgroup 中,可以定义组级别的资源限制和优先级,从而实现更精细的资源管理。
2. 影响 CPU 资源使用的三个维度
在 CFS 调度器中,无论使用普通调度还是组调度,都会通过以下三个维度来影响任务对 CPU 资源的使用:
(1)权重(CPU Weight)
- 含义
权重决定了任务或组在 CPU 时间分配中的比例。权重越高,任务获得的 CPU 时间越多。 - 实现机制
- 在普通调度中,权重由任务的 nice 值 决定,范围为 -20(最高优先级,权重最高)到 +19(最低优先级,权重最低)。
- 在组调度中,权重由 cgroup 的 cpu.weight 参数控制,范围为 1 到 10000,默认值为 100。
- 示例
如果有两个任务,A 的权重为 200,B 的权重为 100,则 A 获得的 CPU 时间是 B 的两倍。
(2)抢占优先级(CPU Latency)
- 含义
抢占优先级决定了任务之间的响应时间,或者说调度器允许任务等待的最大延迟。 - 实现机制
- 在 CFS 中,调度器会根据任务的历史行为动态调整其抢占优先级。
- 对于 I/O 密集型任务(如文件读写),调度器会优先让它们运行,因为它们通常会快速释放 CPU。
- 对于 CPU 密集型任务(如计算密集型任务),调度器会让它们运行更长时间,减少上下文切换的开销。
- 影响
- 较低的 CPU Latency 表示调度器会更频繁地切换任务,从而提高响应速度。
- 较高的 CPU Latency 表示调度器会让任务运行更长时间,减少上下文切换,但可能会降低响应速度。
(3)最大配额(CPU Quota)
- 含义
最大配额限制了任务或组在一定时间周期内可以使用的最大 CPU 时间。 - 实现机制
- 在普通调度中,最大配额通常不直接设置,而是通过系统的整体负载动态调整。
- 在组调度中,最大配额由 cgroup 的 cpu.cfs_quota_us 和 cpu.cfs_period_us 参数控制:
cpu.cfs_quota_us:指定一个周期内任务或组最多可以使用的微秒数。cpu.cfs_period_us:指定时间周期的长度(默认为 100ms)。
- 示例:
- 如果
cpu.cfs_quota_us = 50000,cpu.cfs_period_us = 100000,则该任务或组每 100ms 最多可以使用 50ms 的 CPU 时间。
- 如果
- 用途
- 用于限制任务或组的 CPU 使用量,防止某个任务或组占用过多资源。
- 在容器化环境中,最大配额常用于保证不同容器之间的资源公平性。
3. 总结对比
| 维度 | 描述 | 适用场景 |
|---|---|---|
| 权重(CPU Weight) | 决定任务或组在 CPU 时间分配中的比例,权重越高,分配的 CPU 时间越多。 | 需要按比例分配资源的场景,如多个容器共享 CPU。 |
| 抢占优先级(CPU Latency) | 决定任务之间的响应时间,动态调整任务的运行时间,优先响应 I/O 密集型任务。 | 需要平衡响应速度和系统效率的场景,如桌面系统。 |
| 最大配额(CPU Quota) | 限制任务或组在一定时间周期内可以使用的最大 CPU 时间,防止资源过度占用。 | 需要资源隔离或限制的场景,如容器化环境。 |
4. 总结
-
普通调度
直接针对单个任务进行调度,适合简单的应用场景。通过权重、抢占优先级和最大配额来动态分配 CPU 资源。 -
组调度
基于 cgroup 的调度方式,允许多个任务被组织到一个组中,并以组为单位分配 CPU 资源。通过 cgroup 的参数(如cpu.weight、cpu.cfs_quota_us和cpu.cfs_period_us)来实现精细化的资源管理。 -
三个维度
- 权重:决定资源分配的比例。
- 抢占优先级:决定任务的响应速度。
- 最大配额:限制资源的使用上限。
通过这三个维度,CFS 调度器能够在多任务环境下实现高效的资源分配,同时满足不同场景的需求(如响应速度、资源隔离等)。
相关文章:
CFS 调度器两种调度类型普通调度 和 组调度
在 Linux 的 CFS(Completely Fair Scheduler) 调度器中,确实存在两种调度类型:普通调度 和 组调度。这两种调度类型分别适用于不同的场景,并通过三个关键维度(权重、抢占优先级、最大配额)来影响…...
Linux网络编程——详解网络层IP协议、网段划分、路由
目录 一、前言 二、IP协议的认识 1、什么是IP协议? 2、IP协议报头 三、网段划分 1、初步认识IP与路由 2、IP地址 I、DHCP动态主机配置协议 3、IP地址的划分 I、CIDR设计 II、子网数目的计算 III、子网掩码的确定 四、特殊的IP地址 五、IP地址的数量限…...
【图像生成之21】融合了Transformer与Diffusion,Meta新作Transfusion实现图像与语言大一统
论文:Transfusion: Predict the Next Token and Diffuse Images with One Multi-Modal Model 地址:https://arxiv.org/abs/2408.11039 类型:理解与生成 Transfusion模型是一种将Transformer和Diffusion模型融合的多模态模型,旨…...
Microsoft Office 如何启用和正常播放 Flash 控件
对于新安装的 Office 默认是不支持启用 Flash 组件的,Flash 组件会无法播放或者黑屏。 本片文章就带你解决这个问题,相关资料都在下方连接内。前提概要,教程对应的版本是 mso16,即 Office 2016 及更新版本,以及 365 等…...
深入浅出:信号灯与系统V信号灯的实现与应用
深入浅出:信号灯与系统V信号灯的实现与应用 信号灯(Semaphore)是一种同步机制,用于控制对共享资源的访问。在多线程或多进程环境下,信号灯能够帮助协调多个执行单元对共享资源的访问,确保数据一致性与程序…...
定位改了IP属地没变怎么回事?一文解析
明明用虚拟定位软件将手机位置改到了“三亚”,为何某某应用评论区显示的IP属地还是“北京”?为什么切换了代理IP,平台却似乎“无视”这一变化? 在“IP属地显示”功能普及后,许多用户尝试通过技术手段隐藏真实位置&…...
Cygwin中使用其它平台生成的动态库
在 Cygwin 环境下链接 VC 生成的 DLL 库需解决符号导出格式和调用约定的兼容性问题,以下是具体操作步骤: 一、VC 生成 DLL 的配置要点 声明 C 风格导出函数 在 VC 中使用 extern "C" 和 __declspec(dllexport) 避免 C 名称修饰,…...
《深入理解生命周期与作用域:以C语言为例》
🚀个人主页:BabyZZの秘密日记 📖收入专栏:C语言 🌍文章目入 一、生命周期:变量的存在时间(一)生命周期的定义(二)C语言中的生命周期类型(三&#…...
算法魅力揭秘:螺旋矩阵 II 的模拟填充与规则总结
算法魅力揭秘:螺旋矩阵 II 的模拟填充与规则总结 作为一个算法人,我们经常在竞赛和面试中遇到各种“矩阵类”问题,而螺旋矩阵 II 是其中一颗耀眼的明星。今天我将带大家从直观理解到实战代码,全面拆解螺旋矩阵 II 的规律与实现。…...
一个插件,免费使用所有顶级大模型(Deepseek,Gpt,Grok,Gemini)
DeepSider是一款集成于浏览器侧边栏的AI对话工具,可免费使用所有顶级大模型 包括GPT-4o,Grok3,Claude 3.5 Sonnet,Claude 3.7,Gemini 2.0,Deepseek R1满血版等 以极简交互与超快的响应速度,完成AI搜索、实时问答、内容创作、翻译、…...
springboot Filter实现请求响应全链路拦截!完整日志监控方案
一、为什么你需要这个过滤器? 日志痛点: 🚨 请求参数散落在各处? 🚨 响应数据无法统一记录? 🚨 日志与业务代码严重耦合? 解决方案: 一个Filter同时拦截请…...
智能车摄像头开源—9 动态权、模糊PID、速度决策、路径优化
目录 一、前言 二、动态权 1.概述 2.偏差值加动态权 三、模糊PID 四、速度决策 1.曲率计算 2.速度拟合 3.速度控制 五、路径 六、国赛视频 一、前言 在前中期通过识别直道、弯道等元素可进行加减速操作实现速度的控制,可进一步缩减一圈的运行速度ÿ…...
《2025蓝桥杯C++B组:D:产值调整》
**作者的个人gitee** 作者的算法讲解主页▶️ 每日一言:“泪眼问花花不语,乱红飞过秋千去🌸🌸” 题目 二.解题策略 本题比较简单,我的思路是写三个函数分别计算黄金白银铜一次新产值,通过k次循环即可获…...
蓝队技能-Web入侵-入口查杀攻击链
Web攻击事件 分析思路: 1、利用时间节点筛选日志行为 2、利用对漏洞进行筛选日志行为 3、利用后门查杀进行筛选日志行为 4、利用文件修改时间筛选日志行为 Web日志分析 明确存储路径以及查看细节 常见中间件存储路径 IIS、Apache、Tomcat 等中间件的日志存放目…...
Android11车载WiFi热点默认名称及密码配置
一、背景 基于车厂信息安全要求,车载热点默认名称不能使用统一的名称,以及默认密码不能为简单的1~9。 基于旧项目经验,组装工厂自动化测试及客户整车组装的时候均存在多台设备同时打开,亦不太推荐使用统一的热点名称,连接无法区分。 二、需求 根据客户的要求,默认名称…...
对于GAI虚假信息对舆论观察分析
摘要 生成式人工智能(Generative Artificial Intelligence, GAI)的技术革新重构了信息生产机制,但也加剧了虚假信息对舆论生态的异化风险。 关键词:生成式人工智能、虚假信息、舆论异化、智能治理 一、生成式人工智能虚假信息下…...
问题 | 对于初学者来说,esp32和stm32哪个比较适合?
对于初学者选择ESP32还是STM32入门嵌入式开发,需综合考虑学习目标、兴趣方向及未来职业规划。以下是两者的对比分析及建议: 1. 适合初学者的关键因素 ESP32的优势 内置无线通信:集成Wi-Fi和蓝牙功能,无需额外模块即可开发物联网…...
grafana/loki 部署搜集 k8s 集群日志
grafana/loki 和 grafana/loki-stack 的区别 Grafana 提供了多个 Helm Chart 用于在 Kubernetes 集群中部署 Loki 及相关组件,其中主要包括 grafana/loki 和 grafana/loki-stack。它们的主要区别如下: 1.grafana/loki Helm Chart: 专注于 Loki 部署: 该 Chart 专门…...
EN控制同步整流WD1020 ,3.0V-21V 的宽 VIN 输入范围,0.9V-20V 的宽输出电压范围
WD1020 是一款功能强大且性能卓越的电源管理芯片,凭借其独特的特点在众多电子设备领域中展现出广泛的应用前景。以下是对其特点和应用电路的详细阐述: 集成式功率 MOSFET:WD1020 集成了低 RDS(开)功率 MOSFETÿ…...
asm汇编语言源代码之-获取环境变量
提供1个子程序: 1. 读取环境变量 GETENVSTR 具体功能及参数描述如下 GETENVSTR PROC FAR ;IN: DSPSP SEG. ; ES:BX -> ENV VAR NAME ;OUT: DS:DX -> ENV VAR VALUE; IF DX0FFFFH, NOT FOUND ; more source code at http://www.ahjoe.com/source/srcdown.aspPU…...
2025认证杯一阶段各题需要使用的模型或算法(冲刺阶段)
A题(小行星轨迹预测) 问题一:三角测量法、最小二乘法、空间几何算法、最优化方法 问题二:Gauss/Laplace轨道确定方法、差分校正法、数值积分算法(如Runge-Kutta法)、卡尔曼滤波器 B题(谣言在…...
①(PROFINET 转 EtherNet/IP)EtherCAT/Ethernet/IP/Profinet/ModbusTCP协议互转工业串口网关
型号 协议转换通信网关 PROFINET 转 EtherNet/IP MS-GW32 概述 MS-GW32 是 PROFINET 和 EtherNet/IP 协议转换网关,为用户提供两种不同通讯协议的 PLC 进行数据交互的解决方案,可以轻松容易将 EtherNet/IP 网络接入 PROFINET 网络中,方便…...
LeetCode 3272.统计好整数的数目:枚举+排列组合+哈希表
【LetMeFly】3272.统计好整数的数目:枚举排列组合哈希表 力扣题目链接:https://leetcode.cn/problems/find-the-count-of-good-integers/ 给你两个 正 整数 n 和 k 。 如果一个整数 x 满足以下条件,那么它被称为 k 回文 整数 。 x 是一个…...
Linux中的tar -P选项
tar -P选项 Linux中的tar命令可用于文件和目录的归档以及压缩解压缩。而其中的-P选项是什么含义呢?下面我们就来看一看 1、不添加-P选项 对于如下压缩命令: tar -czvf pkg.tar.gz /opt/software执行该命名,控制台首行输出将会提示…...
Linux目录探秘:文件系统的核心架构
引言 Linux文件系统就像一棵精心设计的大树🌳,每个分支都有其特定的用途和规范。与Windows不同,Linux采用单一的目录结构,所有设备、分区和网络资源都挂载在这个统一的目录树下。本文将带你深入探索Linux目录结构的奥秘ÿ…...
国标GB28181视频平台EasyCVR如何搭建汽车修理厂远程视频网络监控方案
一、背景分析 近年我国汽车保有量持续攀升,与之相伴的汽车保养维修需求也逐渐提高。随着社会经济的发展,消费者对汽车维修服务质量的要求越来越高,这使得汽车维修店的安全防范与人员管理问题面临着巨大挑战。 多数汽车维修店分布分散&#…...
python【标准库】multiprocessing
文章目录 介绍多进程Process 创建子进程共享内存数据多进程通信Pool创建子进程多进程案例多进程注意事项介绍 python3.10.17版本multiprocessing 是一个多进程标准模块,使用类似于threading模块的API创建子进程,充分利用多核CPU来并行处理任务。提供本地、远程的并发,高效避…...
南墙WAF非标端口防护实战解析——指定端口安全策略深度剖析
本文系统解析非标端口DDoS攻击防护难点,重点阐述南墙WAF在指定端口防御中的技术突破。通过某金融机构真实攻防案例,结合Gartner最新防御架构模型,揭示如何构建基于智能流量建模的精准防护体系,为金融、政务等关键领域提供可落地的…...
PostIn安装及入门教程
PostIn是一款国产开源免费的接口管理工具,包含项目管理、接口调试、接口文档设计、接口数据MOCK等模块,支持常见的HTTP协议、websocket协议等,支持免登陆本地接口调试,本文将介绍如何快速安装配置及入门使用教程。 1、安装 私有…...
spring cloud微服务API网关详解及各种解决方案详解
微服务API网关详解 1. 核心概念 定义:API网关作为微服务的统一入口,负责请求路由、认证、限流、监控等功能,简化客户端与后端服务的交互。核心功能: 路由与转发:将请求分发到对应服务。协议转换:HTTP/HTTP…...
