Menu Close

18.2. 使用 SCHED_FIFO 的静态优先级调度

SCHED_FIFO 也称为静态优先级调度,是一种实时策略,为每个线程定义固定优先级。此策略允许管理员提高事件响应时间并缩短延迟。建议您不要在时间敏感时执行此策略。

当使用 SCHED_FIFO 时,调度程序会按照优先级顺序扫描所有 SCHED_FIFO 线程的列表,并调度可随时运行的最高优先级线程。SCHED_FIFO 线程的优先级级别可以是从 199 的任何整数,其中 99 被视为最高优先级。红帽建议仅在识别延迟问题时以较低数量开始并增加优先级。

警告

因为实时线程不会受到时间分片,因此红帽不推荐将优先级设置为 99。这与迁移和 watchdog 线程相同的优先级级别保持您的进程;如果您的线程进入计算循环,并且这些线程被阻止,则它们将无法运行。具有单一处理器的系统最终会在这种情况下挂起。

管理员可以限制 SCHED_FIFO 带宽,以防止实时应用程序程序员启动对处理器进行单调执行的实时任务。

以下是此策略中使用的一些参数:

/proc/sys/kernel/sched_rt_period_us
此参数以微秒为单位定义时间,它被视为处理器带宽的 10%。默认值为 1000000 InventoryServices,或 1 秒
/proc/sys/kernel/sched_rt_runtime_us
此参数以微秒为单位定义运行实时线程的时间周期。默认值为 950000 μs,即 0.95 秒