30.2. 使用 SCHED_FIFO 的静态优先级调度
SCHED_FIFO
也称为静态优先级调度,是一种实时策略,为每个线程定义固定优先级。此策略允许管理员提高事件响应时间并缩短延迟。建议您不要在时间敏感时执行此策略。
当使用 SCHED_FIFO
时,调度程序会按照优先级顺序扫描所有 SCHED_FIFO
线程的列表,并调度可随时运行的最高优先级线程。SCHED_FIFO
线程的优先级级别可以是从 1
到 99
的任何整数,其中 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 秒
。