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

Linux内核设计与实现 - 第4章 进程的调度

目录

    • 4.1 调度器概述
    • 4.2 调度器演进
    • 4.3 CFS调度器
    • 4.4 调度相关系统调用
    • 4.5 实时调度
    • 4.6 多核负载均衡
    • 4.7 实验:观察调度行为

在这里插入图片描述

4.1 调度器概述

  • 核心功能:决定哪个进程获得CPU使用权
  • 设计目标
    • 最大化CPU利用率
    • 提供用户交互响应性
    • 保证公平性
  • 调度策略
    • 实时进程:SCHED_FIFO, SCHED_RR
    • 普通进程:SCHED_NORMAL(CFS)

4.2 调度器演进

版本调度器类型主要特点
2.4O(n)全局队列,遍历选择
2.6O(1)优先级数组,时间片计算
2.6.23+CFS完全公平,红黑树实现

4.3 CFS调度器

struct sched_entity {struct load_weight load;  // 进程权重struct rb_node run_node; // 红黑树节点u64 vruntime;            // 虚拟运行时间
};
  • 核心机制

    1. 虚拟时钟(vruntime)计算
    2. 红黑树组织可运行进程
    3. 最小vruntime优先调度
  • 权重计算

    time\_slice = \frac{weight}{total\_weight} \times scheduler\_period
    

4.4 调度相关系统调用

  • sched_setscheduler() - 设置调度策略
  • sched_yield() - 主动让出CPU
  • nice() - 调整普通进程优先级(-20~19)

4.5 实时调度

  • 两种策略

    • SCHED_FIFO:先到先服务,无时间片限制
    • SCHED_RR:轮转调度,有时间片限制
  • 优先级范围:1(最低)~99(最高)

4.6 多核负载均衡

  • 调度域(Sched Domain)
    • 核心级域
    • 套接字级域
    • NUMA节点域
  • 负载均衡触发
    • 周期性均衡(tick_balance)
    • 空闲CPU拉取任务

4.7 实验:观察调度行为

# 查看进程调度策略
chrt -p <pid># 实时进程测试
taskset -c 0 chrt -f 99 ./real_time_app
http://www.dtcms.com/a/286900.html

相关文章:

  • 函数返回值问题,以及返回值的使用问题(c/c++)
  • [FDBUS4.2] watcher的使用
  • STM32-CAN
  • vs openssl编译提示无法打开文件“libssl.lib”或“libcrypto.lib”
  • 理解 VMA 与 LMA
  • 【实战】Dify从0到100进阶--文档解读(8)文档列表节点
  • 深入剖析 Delta Live Tables (DLT):声明式数据管道的核心原理与底层实现
  • git:tag标签远程管理
  • 公贝固定资产管理系统对接HR、财务及采购系统的方案与效益
  • 【实用工具】HDCleaner:高效、安全、免费的系统清洁工具,免费的电脑清理垃圾神器,20秒扫出20G垃圾!
  • LP-MSPM0G3507学习--05中断及管脚中断
  • 习题4.1 输出3个人的顺序
  • APIs案例及知识点串讲(下)
  • NFS读写性能评估与优化指南(上)
  • Android性能优化之电量优化
  • C 语言字符大小写互转:tolower / toupper 详解与实战
  • MySQL使用any_value()函数解决only_full_group_by报错
  • IT 和OT指的什么?
  • 短视频矩阵的时代结束了吗?
  • 智能点餐推荐网站,解决选择困难
  • Linux基础IO通关秘籍:从文件描述符到重定向
  • 使用wrk对api接口进行性能测试
  • 机器视觉基础(直播回放)
  • git从本地仓库添加到远程仓库
  • 人工智能day9——模块化编程概念(模块、包、导入)及常见系统模块总结和第三方模块管理
  • MinIO 分布式文件系统
  • 阿里云ubuntu建一个简单网页+公网访问+域名访问
  • android14截屏
  • 短视频矩阵系统:从源头到开发的全面解析
  • 电源PCB设计的热管理攻坚战:从散热瓶颈到高功率密度突破