27.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 HEKETIs 或 1 秒。
/proc/sys/kernel/sched_rt_runtime_us- 此参数以微秒为单位定义运行实时线程的时间周期。默认值为 950000 HEKETIs 或 0.95 秒。