完整教程:Linux CFS(完全公平调度器)全面总结

news/2026/1/22 8:18:59/文章来源:https://www.cnblogs.com/yangykaifa/p/19514915
  1. 核心设计理念

基本目标

• 完全公平:按权重而非绝对时间分配CPU份额

• 低开销:调度决策高效,适合大规模任务

• 良好响应性:保证交互式任务及时响应

公平性定义

• 公平 = 每个任务获得与其权重成比例的CPU时间

• 高优先级任务(低nice值)获得更多CPU时间

• 防止任何任务饿死

  1. 核心机制:虚拟运行时(vruntime)

vruntime计算

vruntime_increase = 实际运行时间 × (NICE_0_LOAD / 任务权重)

• 普通优先级任务:vruntime ≈ 实际运行时间

• 高优先级任务:vruntime增长更慢

• 低优先级任务:vruntime增长更快

vruntime的意义

• 衡量任务"已消耗的公平份额"

• vruntime越小,表示"吃亏"越多,优先级越高

• 调度目标:让所有任务的vruntime尽可能同步

  1. 数据结构与调度算法

红黑树管理

• 键值:任务的vruntime

• 最左节点:vruntime最小的任务,下一个被调度

• 操作效率:插入、删除、查找均为O(logN)

调度过程

  1. 选择任务:从红黑树取最左节点(vruntime最小)

  2. 任务运行:在CPU上执行

  3. 时间统计:更新实际运行时间和vruntime

  4. 重新插入:任务放回红黑树(如果仍可运行)

  5. 选择下一个:重复步骤1

  6. 时间管理与调度周期

关键参数

• sched_latency_ns:目标调度周期(默认24ms)

• sched_min_granularity_ns:最小时间片(默认3ms)

动态时间片计算

时间片 = max(调度周期/N, 最小时间片)

• 任务少时:每个任务获得较长时间片

• 任务多时:保证所有任务都能在周期内运行

  1. 任务状态处理

新任务创建

• vruntime初始化为当前运行队列的min_vruntime

• 给予适当补偿,避免过度"插队"

睡眠任务唤醒

• 关键机制:vruntime补偿 = -sched_latency_ns/2

• 目的:提升交互式任务响应性,但不破坏公平性

• 补偿值固定:不随任务数变化,保证最小响应性

实时进程关系

• 调度类优先级:RT > CFS > Idle

• 实时进程:总是抢占普通CFS任务

• 独立队列:实时进程使用优先级数组,CFS使用红黑树

  1. 多核与负载均衡

CPU间迁移

• vruntime调整:新vruntime = 原vruntime - 源CPUmin_vruntime + 目标CPUmin_vruntime

• 保持公平:迁移后维持相对进度位置

• 防止蜂拥:迁移不会获得不公平优势

负载均衡触发

• 周期性检查(每1-10ms)

• 新任务创建

• 任务唤醒

• CPU空闲时

  1. 抢占机制

调度触发点

  1. 主动调度:系统调用、阻塞操作
  2. 时钟中断:周期性检查(tick机制)
  3. 实时抢占:高优先级实时任务就绪
  4. 唤醒抢占:睡眠任务唤醒时可能抢占

完全抢占支持

• CONFIG_PREEMPT:允许内核态抢占

• 关键区域保护:持有自旋锁时不可抢占

• 中断返回路径:实际调度发生点

  1. 实际表现特性

优点

• ✅ 真正公平:按权重精确分配CPU时间

• ✅ 高扩展性:红黑树支持大量任务高效调度

• ✅ 良好响应性:交互式任务获得优先处理

• ✅ 自适应:动态调整时间片,平衡延迟和吞吐量

可调参数

查看和调整调度参数

/proc/sys/kernel/sched_latency_ns
/proc/sys/kernel/sched_min_granularity_ns
/proc/sys/kernel/sched_migration_cost_ns

  1. 总结

CFS是Linux调度器的重大进步,依据vruntime机制实现了真正的公平性:
• 核心创新:用vruntime替代传统时间片

• 高效实现:红黑树保证调度决策高效

• 公平保证:权重机制确保按比例分配CPU

• 响应性保障:睡眠补偿和完全抢占机制

• 多核优化:负载均衡和vruntime迁移保持跨CPU公平

这种设计使Linux能够同时满足服务器的高吞吐量和桌面的交互性需求,是现代操作系统调度算法的典范。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1198980.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Sambert-HiFiGAN功能测评:中文情感语音合成的真实表现

Sambert-HiFiGAN功能测评:中文情感语音合成的真实表现 1. 引言:为什么我们需要有情感的语音合成? 你有没有听过那种“机器腔”十足的语音助手?一字一顿、毫无起伏,就像在念经。这种声音虽然能传递信息,但…

阈值怎么调?CAM++相似度判定优化技巧分享

阈值怎么调?CAM相似度判定优化技巧分享 1. 引言:为什么阈值如此关键? 在使用 CAM 这类说话人识别系统时,你是否遇到过这样的问题: 明明是同一个人的声音,系统却判定“不是同一人”?不同的人说…

fft npainting lama API文档生成:Swagger集成实战

fft npainting lama API文档生成:Swagger集成实战 1. 背景与目标 你可能已经用过 fft npainting lama 这个图像修复工具——它能轻松实现图片重绘、物品移除、水印清除等操作,界面友好,效果惊艳。但如果你正在做二次开发,比如想…

口碑好的2026年废气柱状活性炭直销厂家推荐

在工业废气处理领域,选择优质的废气柱状活性炭供应商至关重要。本文基于企业生产能力、产品性能稳定性、客户服务响应速度三大核心指标,结合实地调研与行业用户反馈,筛选出五家值得关注的废气柱状活性炭生产企业。其…

SAM3大模型镜像发布|支持英文提示词的万物分割Web交互

SAM3大模型镜像发布|支持英文提示词的万物分割Web交互 1. 引言:让图像分割变得更简单 你有没有想过,只需输入一个简单的词语,比如“狗”或者“红色汽车”,就能自动从一张复杂的图片中把对应物体完整地抠出来&#xf…

保姆级教程:ComfyUI中使用Cute_Animal_Qwen生成卡通动物

保姆级教程:ComfyUI中使用Cute_Animal_Qwen生成卡通动物 1. 这个镜像到底能帮你做什么 你有没有试过给孩子画一只会跳舞的熊猫?或者想为幼儿园活动设计一套萌系动物贴纸,却卡在“怎么让小兔子看起来既可爱又不幼稚”上?别折腾绘…

新手福音!Qwen3-Embedding-0.6B极简安装指南

新手福音!Qwen3-Embedding-0.6B极简安装指南 你是不是也遇到过这样的问题:想用大模型做文本搜索、分类或者聚类,但不知道从哪下手?模型太大跑不动,环境配置复杂到崩溃?别急,今天这篇教程就是为…

Sambert-HiFiGAN模型结构解析:语音合成原理入门必看

Sambert-HiFiGAN模型结构解析:语音合成原理入门必看 1. 什么是Sambert-HiFiGAN?语音合成的“黄金组合” 你有没有想过,手机里的语音助手、有声书里的播音员、甚至短视频中的配音,是怎么把文字变成自然人声的?背后的核…

NotaGen音乐生成模型上线|科哥打造的LLM古典作曲工具

NotaGen音乐生成模型上线|科哥打造的LLM古典作曲工具 你是否曾幻想过,只需轻点几下鼠标,就能让AI为你创作一首巴赫风格的赋格曲?或者生成一段肖邦式的夜曲,在深夜里静静聆听?现在,这一切不再是…

FSMN-VAD功能测评:支持上传与实时录音双模式

FSMN-VAD功能测评:支持上传与实时录音双模式 语音处理系统中,一个常被忽视却至关重要的环节是语音端点检测(Voice Activity Detection, VAD)。它负责从连续的音频流中精准识别出“人在说话”的时间段,自动剔除静音或无…

开发者必备工具:BERT语义填空镜像免配置部署推荐

开发者必备工具:BERT语义填空镜像免配置部署推荐 1. BERT 智能语义填空服务 你有没有遇到过这样的场景:写文案时卡在一个词上,怎么都不够贴切?或者读一段文字发现缺了一个字,却怎么也猜不出原意?现在&…

YOLOv11与Detectron2对比:企业级部署成本实测分析

YOLOv11与Detectron2对比:企业级部署成本实测分析 近年来,目标检测技术在工业质检、智能安防、自动驾驶等领域广泛应用。企业在选择技术方案时,除了关注模型精度和推理速度外,部署成本、开发效率和维护难度也成为关键考量因素。Y…

IndexTTS-2工业级TTS部署教程:零样本文本转语音快速上手指南

IndexTTS-2工业级TTS部署教程:零样本文本转语音快速上手指南 Sambert 多情感中文语音合成——开箱即用版。本镜像基于阿里达摩院 Sambert-HiFiGAN 模型,已深度修复 ttsfrd 二进制依赖及 SciPy 接口兼容性问题。内置 Python 3.10 环境,支持知…

IQuest-Coder-V1与DeepSeek-Coder对比评测:竞技编程场景谁更优?

IQuest-Coder-V1与DeepSeek-Coder对比评测:竞技编程场景谁更优? 在当前AI辅助编程快速发展的背景下,越来越多的大模型开始聚焦于专业编码任务,尤其是对逻辑严密性、算法设计能力和代码生成准确率要求极高的竞技编程场景。IQuest-…

智能合同解析实战:用MinerU快速提取关键信息

智能合同解析实战:用MinerU快速提取关键信息 1. 场景痛点与解决方案引入 在企业日常运营中,合同审查是一项高频且耗时的任务。法务人员需要从数十页的PDF或扫描件中手动提取甲方、乙方、金额、付款周期、违约责任等关键条款,不仅效率低下&a…

5分钟部署Open-AutoGLM,手机AI助手一键上手

5分钟部署Open-AutoGLM,手机AI助手一键上手 你有没有想过,让AI帮你操作手机?不是简单的语音唤醒,而是真正“看懂”屏幕、理解界面、自动点击滑动,像真人一样完成复杂任务。比如你说一句:“打开小红书搜美食…

Qwen3-Embedding-4B批量处理:大规模数据嵌入实战

Qwen3-Embedding-4B批量处理:大规模数据嵌入实战 在自然语言处理任务中,文本嵌入(Text Embedding)是连接原始文本与下游应用的关键桥梁。无论是搜索引擎、推荐系统,还是语义去重、聚类分析,高质量的向量表…

高效语音分析方案|使用科哥二次开发的SenseVoice Small镜像

高效语音分析方案|使用科哥二次开发的SenseVoice Small镜像 在日常工作中,我们经常需要处理大量语音内容——无论是会议录音、客户访谈,还是客服对话。传统的做法是人工逐字听写,耗时又低效。有没有一种方式,能快速把…

语音增强技术落地|FRCRN-16k大模型镜像快速部署教程

语音增强技术落地|FRCRN-16k大模型镜像快速部署教程 你是否经常被录音中的背景噪音困扰?会议录音听不清、采访音频杂音多、远程沟通质量差——这些问题其实都可以通过AI语音增强技术解决。今天,我们就来手把手教你如何快速部署一个高效的单通…

5分钟部署bge-large-zh-v1.5,sglang镜像让中文语义匹配快速落地

5分钟部署bge-large-zh-v1.5,sglang镜像让中文语义匹配快速落地 1. 快速上手:为什么选择sglang部署bge-large-zh-v1.5? 你是不是也遇到过这样的问题:想用一个高质量的中文embedding模型做语义匹配、文本检索或者相似度计算&…