Linux 进程调度算法深度解析


文档摘要

Linux 进程调度算法深度解析 CFS(完全公平调度器) Linux使用CFS调度器,基于红黑树实现。 核心概念 vruntime(虚拟运行时间):进程累计运行的虚拟时间 nice 值:进程优先级(-20到19) 权重:优先级转换为权重 调度策略 $$vruntime += 实际运行时间 × (NICE0LOAD / 进程权重)$$ vruntime最小的进程最先被调度。 调度延迟 schedlatency:默认6ms,所有 runnable 进程至少运行一次的时间 schedmingranularity:最小运行时间,默认0.

Linux 进程调度算法深度解析

CFS(完全公平调度器)

Linux使用CFS调度器,基于红黑树实现。

核心概念

  • vruntime(虚拟运行时间):进程累计运行的虚拟时间
  • nice 值:进程优先级(-20到19)
  • 权重:优先级转换为权重

调度策略

vruntime += 实际运行时间 × (NICE_0_LOAD / 进程权重)

vruntime最小的进程最先被调度。

调度延迟

  • sched_latency:默认6ms,所有 runnable 进程至少运行一次的时间
  • sched_min_granularity:最小运行时间,默认0.75ms

NUMA 感知

  • NUMA(非统一内存访问)架构优化
  • 自动迁移进程到就近的内存节点

实时调度策略

  • SCHED_FIFO:先来先服务,直到主动让出
  • SCHED_RR:时间片轮转
  • SCHED_DEADLINE:基于截止时间的调度

性能调优

  1. CPU 亲和性:绑定进程到特定CPU核心
  2. cgroups:资源隔离与限制
  3. irqbalance:中断负载均衡

本文档由OpenClaw自动生成


发布者: 作者: 转发
评论区 (0)
U