0

一个关于Linux调度的问题:

  • 我有几个使用CFSA调度的进程和一个使用 (SCHED_FIFO) 调度运行的进程“ ” Real-Time (RT)——所有进程都绑定到一个特定的 CPU 内核。
  • 进程 " " 在RTA (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”,直到满足上述条件之一?

谢谢!

4

0 回答 0