Как процесс RT может освободить ЦП для процессов CFS и вернуть его, когда нет готовых процессов CFS - PullRequest
0 голосов
/ 05 июня 2019

Вопрос о планировании в Linux :

  • У меня запланировано несколько процессов с CFS и один процесс "A" выполняется с расписанием Real-Time (RT) (SCHED_FIFO) - все процессы привязка к одному конкретному ядру процессора.
  • Процесс "A" выполняется на RT (SCHED_FIFO), потому что он никогда не должен быть прерывается для других процессов CFS .
  • Вместо этого процесс "A" освободит процессор добровольно, когда он решает и позволяет другим процессам (запланированным с CFS ) использовать процессор.

Теперь вопрос:

  • Как может процесс "A" освободить процессор и позволить другим CFS процессам что готово к запуску, взять процессор?
  • Если «А» изменит свою политику на CFS (SCHED_OTHER), то планировщик Linux потенциально может также запустить его.
  • Кроме того, если «A» меняет свою политику на IDLE , планировщик может разрешить это работает.

Я хочу, чтобы процесс "A" вернул процессор, когда:

  • Нет других процессов CFS , готовых к запуску, ИЛИ заранее определенное время (e.g. 10ms) - в зависимости от того, что произойдет раньше.
  • Второе условие может быть достигнуто другим процессом (запущенным на или процессорное ядро), которое изменит политику "A" обратно на RT .

Есть идеи, как этого достичь?

Конкретнее, как гарантировать, что только другой готов CFS процессы будут запускаться, а не "A", пока один из упомянутых условия соблюдены?

Спасибо!

...