16.2. 实时内核中的调度程序节流
实时内核包含一个保护机制,用于启用分配给实时任务使用的带宽。保护机制称为实时调度程序节流。
实时节流机制的默认值定义了实时任务可以使用 95% 的 CPU 时间。剩余的 5% 将专用于非实时任务,例如在 SCHED_OTHER 和类似调度策略下运行的任务。务必要注意,如果单个实时任务占用 95% 的 CPU 时间插槽,则该 CPU 上的剩余实时任务将不会运行。只有非实时任务使用剩余的 CPU 时间。默认值可以有以下性能影响:
- 实时任务最多有 95% 的 CPU 时间,这可能会影响其性能。
- 实时任务不允许运行非实时任务来锁定系统。
实时调度程序节流由 /proc 文件中的以下参数控制:
/proc/sys/kernel/sched_rt_period_us参数-
定义在 CPU
带宽的100% 中的周期(微秒)。默认值为 1,000,000 HEKETIs,即 1 秒。必须仔细考虑对 period 值的更改,因为一个期限值非常高或低可能会导致问题。 /proc/sys/kernel/sched_rt_runtime_us参数-
定义可用于所有实时任务的总带宽。默认值为 950,000 HEKETIs (0.95 s),这是 CPU 带宽的 95%。将值设为
-1将配置实时任务,使其最多使用 100% 的 CPU 时间。只有当实时任务经过精心设计且没有明显的注意事项(如未绑定的轮询循环)时,这才有效。