Fork me on GitHub
侧边栏

实时内核中的调度程序节流

实时内核包含一个保护机制,它允许分配供实时任务使用的带宽。保护机制被称为实时调度程序节流。

实时节流机制的默认值定义实时任务可以使用 95% 的 CPU 时间。其余的 5% 将被视为非实时任务,例如在 SCHED_OTHER 和类似调度策略下运行的任务。务必要注意,如果单个实时任务占据了 95% 的 CPU 时间插槽,则该 CPU 上的剩余实时任务将不会运行。只有非实时任务会使用剩余的 CPU 时间的 5%。默认值可能会有以下性能影响:

  • 实时任务最多为它们提供 95% 的 CPU 时间,这可能会影响其性能。
  • 实时任务不允许运行非实时任务来锁定系统。

实时调度程序节流由 /proc 文件系统的以下参数控制:

  • /proc/sys/kernel/sched_rt_period_us 参数

    定义 CPU 带宽 100% 中的周期(微秒)。默认值为 1,000,000 crius,其值为 1 秒。必须仔细考虑对句点值的更改,因为一个非常高或低的值可能会导致问题。

  • /proc/sys/kernel/sched_rt_runtime_us 参数

    定义可用于所有实时任务的总带宽。默认值为 950,000 crius (0.95 s),即 CPU 带宽的 95%。将值设为 -1, 将实时任务配置为使用最多 100% 的 CPU 时间。这只适用于实时任务,且没有明显的注意事项,如未绑定的轮询循环。

  • kernel.sched_rr_timeslice_ms
    仅作用于 SCHED_RR(实时轮转)进程:同一优先级的 SCHED_RR 任务之间按该“时间片(ms)”轮流运行。不影响 SCHED_FIFO

posted @ 2025-09-16 14:01  yooooooo  阅读(25)  评论(0)    收藏  举报