当前位置: 首页 > ds >正文

Linux 任务调度策略

🌟 概述

Linux 内核以线程(任务)为单位进行调度,支持 SCHED_FIFO 和 SCHED_RR(实时调度)以及 SCHED_OTHER(基于 CFS,非实时调度)。

🔍 调度策略

1. SCHED_FIFO(先进先出)

  • 机制:按优先级和到达顺序运行,无时间片,直到阻塞、被抢占或终止。
  • 特点:优先级 1-99,低延迟,适合硬实时任务。
  • 场景:音频处理、工业控制。

2. SCHED_RR(轮转法)

  • 机制:同优先级线程按时间片轮转,用尽后重新排队。
  • 特点:优先级 1-99,平衡实时性和公平性。
  • 场景:视频流、实时通信。

3. SCHED_OTHER(CFS)

  • 机制:基于 vruntime 公平调度,动态分配 CPU 时间。
  • 特点:nice 值 -20 到 19,适合非实时任务。
  • 场景:Web 服务器、桌面应用。

📊 调度策略对比

特性SCHED_FIFOSCHED_RRSCHED_OTHER (CFS)
类型实时实时非实时
调度单位线程线程线程
调度方式先进先出时间片轮转vruntime 公平分配
时间片固定(10-100ms)动态调整
优先级1-991-99nice 值 -20 到 19
场景硬实时(如音频)软实时(如多媒体)通用任务(如服务器)
权限需 root需 root无需权限
风险低优先级线程可能被饿死时间片切换增加延迟不适合实时任务

🛠️ 主要 API

  • sched_setscheduler(pid, policy, param):设置线程策略和优先级。
  • sched_getscheduler(pid):查询线程策略。
  • sched_setparam(pid, param):设置优先级(SCHED_OTHER 忽略)。
  • sched_yield():让出 CPU。
  • 结构struct sched_param { int sched_priority; };

⚠️ 注意

  • SCHED_FIFO/RR 需 root 权限,优先级高于 SCHED_OTHER。
  • SCHED_OTHER 使用 nice 值调整优先级。
  • SCHED_FIFO 高优先级线程可能导致低优先级线程被饿死。

✅ 优点

  • SCHED_FIFO:低延迟,硬实时。
  • SCHED_RR:实时与公平平衡。
  • SCHED_OTHER:公平,适合通用任务。

🚫 局限性

  • SCHED_FIFO:可能饿死低优先级线程。
  • SCHED_RR:切换开销。
  • SCHED_OTHER:不适合实时。
http://www.xdnf.cn/news/13682.html

相关文章:

  • 一数一源一标准的补充
  • 论文阅读:强化预训练
  • 强化学习入门:交叉熵方法实现CartPole智能体
  • 一个超强的推理增强大模型,开源了,本地部署
  • 跨网数据摆渡系统:破解数据流通难题的“标准答案”
  • 别人如何访问我的内网呢? 设置让外网访问内网本地服务器和指定端口应用的几种方式
  • 曼昆《经济学原理》第九版 第十八章生产要素市场
  • Vue Electron 使用来给若依系统打包成exe程序,出现登录成功但是不跳转页面(已解决)
  • Vue 中 data 选项:对象 vs 函数
  • Rust 学习笔记:通过异步实现并发
  • 【题解-洛谷】P2935 [USACO09JAN] Best Spot S
  • 算法训练第十五天
  • docker推荐应用汇总及部署实战
  • ComfyUI-安装
  • 不装 ROS 也能用 PyKDL!使用kdl_parser解析URDF并进行IK
  • Linux-进程间的通信
  • 大数据服务器的特点都指什么?
  • Python----OpenCV(图像处理——边界填充、图像融合、图像阈值、深拷贝与浅拷贝)
  • 零基础学前端-传统前端开发(第三期-CSS介绍与应用)
  • 【报错】【docker】write /opt/test/Model.gguf: no space left on device
  • 飞书多维表格利用 Amazon Bedrock AI 能力赋能业务
  • GlusterFS概述
  • 鸿蒙新闻应用全链路优化实践:从内核重构到体验革新
  • JavaEE-发展历史
  • AI Agent核心技术深度解析:Function Calling与ReAct对比报告
  • 鹰盾视频加密器播放器跨平台播放器开发的技术架构与实现方案
  • 无需 Mac,使用Appuploader简化iOS上架流程
  • Flutter - 原生交互 - 相机Camera - 02
  • 编程学习网站大全(C++/OpenCV/QT方向)—— 资源导航与深度评测
  • AI任务相关解决方案8-基于卷积神经网络(CNN)和反向传播神经网络(BPNN)的数字图像水印改进算法