Вопрос о планировании в 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
", пока один из упомянутых
условия соблюдены?
Спасибо!