一个关于Linux调度的问题:
- 我有几个使用CFS
A
调度的进程和一个使用 (SCHED_FIFO) 调度运行的进程“ ”Real-Time (RT)
——所有进程都绑定到一个特定的 CPU 内核。 - 进程 " " 在RT
A
(SCHED_FIFO)上运行,因为它不应该被其他CFS进程抢占。 - 相反,进程 "
A
" 会在它决定时自动释放 CPU,并让其他进程(使用CFS调度)来使用 CPU。
现在的问题:
- 进程“”如何
A
释放 CPU,让其他准备运行的CFS进程来占用 CPU? - 如果“A”将其策略更改为CFS (SCHED_OTHER),则Linux 调度程序可能也会让它运行。
- 此外,如果 "
A
" 将其策略更改为IDLE,调度程序仍然可以让它运行。
我希望进程“ A
”在以下情况下恢复 CPU:
- 没有准备好运行的其他CFS进程,或者经过了预定义的时间 (
e.g. 10ms
) - 以先发生者为准。 - 第二个条件可以通过另一个进程(在 CPU 内核上运行)将“
A
”策略更改回RT来实现。
关于如何实现这一点的任何想法?
更具体地说,如何保证只有其他准备好的CFS 进程才会运行,而不是“
A
”,直到满足上述条件之一?
谢谢!