第 6 章 RHEL for Real Time 的调度策略


在实时中,调度程序是决定要执行的可运行线程的内核组件。每个线程都有关联的调度策略和静态调度优先级(sched_priority)。当具有较高静态优先级的线程就绪时,当前正在运行的线程会停止执行。然后,当前线程返回到其静态优先级的 waitlist

所有 Linux 线程都有以下调度策略之一:

  • SCHED_OTHER 或 'SCHED_NORMAL: 默认策略
  • SCHED_BATCH :与 SCHED_OTHER 类似,但会考虑吞吐量。
  • SCHED_IDLE: 比 SCHED_OTHER 更低的优先级策略。
  • SCHED_FIFO :第一个位于 和第一个实时策略。
  • SCHED_RR :轮循实时策略。
  • SCHED_DEADLINE :一种调度程序策略,根据任务期限排列任务,最先运行最早的绝对期限。

6.1. 调度程序策略

在实时中,线程的优先级高于正常的线程。策略具有调度优先级值,范围从最小值为 1 到最大 99 值。

以下策略对实时至关重要:

  • SCHED_OTHERSCHED_NORMAL:

    这是 Linux 线程的默认策略。它有一个动态优先级,它根据线程的特性对系统进行更改。SCHED_OTHER 线程在 20(最高优先级)和 19(最低优先级)之间有 nice 值。默认情况下,SC HED_OTHER 线程的 nice 值为 0。

  • SCHED_FIFO 策略

    带有 SCHED_FIFO 的线程,在 SCHED_OTHER 任务前运行。SCHED_FIFO 不使用 nice 值,而是使用 1(最低)和 99(最高)之间的固定优先级。优先级为 1 的 SCHED_FIFO 线程始终调度任何 SCHED_OTHER 线程。

  • SCHED_RR 策略:

    SCHED_RR 策略与 SCHED_FIFO 策略类似。优先级相等的线程以轮循方式调度。SCHED_FIFOSCHED_RR 线程运行,直到发生以下事件之一:

    • 线程进入 sleep 状态或等待事件。
    • 高优先级实时线程准备好运行。

      除非发生上述事件,线程在指定处理器上无限期运行,而较低优先级线程则停留在等待运行的队列中。这可能导致系统服务线程处于常驻,并防止交换出并失败文件系统数据冲刷。

  • SCHED_DEADLINE:SCHED_DEADLINE 策略指定时间要求。它会根据任务的截止时间调度每个任务,即首先运行最早的截止时间的任务。

    内核要求 runtimelatexdeadlineperiod 为 true。所需选项之间的关系是 runtime1028deadlineperiod

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat