CFS 和实时策略

CFS 和实时策略

我正在尝试在 Linux 中实现实时算法。

我研究了linux实时策略:调度_rr,调度先进先出

比我更深入,我找到了完全公平的调度程序。我推断,如果我使用 CFS,我就会失去可预测性,因为 CFS 只关心公平性。

如果我想严格实现实时调度算法,我不应该使用 CFS。我对么 ?如果是,我应该使用什么 Linux 调度程序?

答案1

CFS 在不同的并发工作负载之间公平地共享带宽,从而为交互式工作负载提供低延迟的吸引力。实时意味着按时完成任务,这听起来像是低延迟,但又不一样。由于 CFS 不提供截止日期,因此不适合实时。我建议你看看SCHED_DEADLINE调度程序。它是一个相当好的通用实时调度程序,适用于有截止日期的定期或零星任务。

SCHED_DEADLINE 任务具有最高优先级,因此会抢占所有其他任务。 SCHED_RR 和 SCHED_FIFO 根据优先级 1 到 99 进行调度,其中较大的数字优先于较低的优先级。 SCHED_OTHER 的优先级为 0,低于之前的优先级,因此该 CFS 调度程序仅获取实时任务剩余的 CPU。实时调度程序最多可以分配 95% 的 CPU 带宽,为 SCHED_OTHER 任务留下 5% 的带宽(除非通过 sysctl 进行更改)。还有SCHED_BATCH和SCHED_IDLE,它们告诉调度程序与SCHED_OTHER相比给出不同的缺点。 Linux 手册页预定(7)提供更多详细信息。

相关内容