sched_wakeup_granularity_ns в CFS правильно спроектированы или нет?

Я работал над планировщиком Linux CFS и наткнулся на этот настраиваемый параметр под названием sched_wakeup_granularity_ns, Использование этого происходит следующим образом, как описано в этой статье.

Этот параметр контролирует задержку запуска задачи, т. Е. Количество времени, которое должно пройти, прежде чем она сможет выгрузить текущую задачу.

Далее ищем этот параметр отсюда:

Если разница между виртуальным временем выполнения текущего запущенного процесса и виртуальным временем выполнения вытесняющего процесса больше, чем виртуальное время выполнения sched_wakeup_granularity_ns (здесь перенесите sched_wakeup_granularity_ns в виртуальное время выполнения с весом процесса вытеснения), вытеснение происходит.

Значение по умолчанию в моей системе составляет 2,5 миллисекунды.

Мой вопрос: если процесс с крайним сроком <= 2,5 мс наступает в то время, когда выполняется другой процесс с низким приоритетом, он не получит шанса на выполнение из-за этой минимальной степени детализации и всегда будет пропускать свой крайний срок.

Я прав в своем иске? Почему ядро ​​Linux разработано именно так?

Конечно, мы можем установить этот параметр равным 0 мс и перекомпилировать ядро, но разве задачи с крайними сроками 2,5 мс не происходят часто в повседневной жизни? Видеодекодеры, приложения для обработки звука и другие критически важные рабочие нагрузки?

0 ответов

Другие вопросы по тегам