Недостаток preempt_rt

целевая аппаратная платформа имеет ограниченную мощность и/или вы хотите в режиме реального времени, чтобы максимально снизить накладные расходы система. Это то, где двойные ядра обычно лучше, чем родные система преемственности.

Отсюда: http://www.xenomai.org/index.php/Xenomai:Roadmap#Xenomai_3_FAQ

Preempt_rt действительно вытесняет весь Linux. Каким образом вытеснение Linux загружает систему?

В FAQ часто говорится о preempt_rt по сравнению с Xenomai.

Ответ 1

CONFIG_PREEMPT_VOLUNTARY -
              Этот параметр вводит проверки на наиболее распространенные причины длительных латентностей в коде ядра, так что ядро ​​может добровольно получить контроль над задачей с более высоким приоритетом, ожидающей выполнения. Говорят, что эта опция значительно уменьшает появление длинных латентностей, но все же она не полностью их устраняет.

CONFIG_PREEMPT_RT -
              Этот параметр заставляет весь код ядра за пределами защищенных от спин-блокинга областей (созданных raw_spinlock_t), чтобы иметь право на недобровольное преемство посредством потоков ядра более высокого приоритета. Spinlocks, созданные spinlock_t и rwlock_t, и прерывания также становятся превентивными при включении этой опции. С помощью этой опции наихудшее время ожидания уменьшается до (миллионных) миллисекунд.

Недостаток -
              Нормальное ядро ​​Linux позволяет предубеждать задачу с помощью задачи с более высоким приоритетом только при выполнении кода пространства пользователя.

Чтобы уменьшить задержку, патч CONFIG_PREEMPT_RT заставляет ядро ​​принудительно вытеснить задачу под рукой, по прибытии задачи ядра с более высоким приоритетом. Это неизбежно приведет к снижению общей пропускной способности системы , так как будет несколько переключателей контекста, а также задачи с более низким приоритетом не получат много шансов пройти через.

Источник: https://rt.wiki.kernel.org/index.php/Frequently_Asked_Questions


Описание используемых технических терминов:

Что такое латентность?
Время, достигнутое между требованием, выданным в компьютерной системе, и началом ответа на тот же спрос, называется временем ожидания или временем ответа.
Виды задержек:

  • Задержка прерывания:
    Время, прошедшее между генерацией прерывания и началом выполнения соответствующего обработчика прерываний.
    Пример. Когда аппаратное устройство выполняет задачу, оно генерирует прерывание. Это прерывание содержит информацию о выполняемой задаче и о выполняемом обработчике прерываний. Обработчик прерываний выполняет конкретную задачу.
  • Задержка планирования:
    Это время между сигналом пробуждения, что произошло событие, и планировщик ядра получает возможность запланировать поток, ожидающий пробуждения (ответ). Задержка планирования также известна как латентность отправки.
  • Задержка с наихудшим случаем:
    Максимальное количество времени, которое может быть обеспечено между спросом, выпущенным в компьютерной системе, и началом ответа на тот же спрос.

Что такое пропускная способность?
Объем работы, которую компьютер может выполнять за определенный период времени, называется пропускной способностью.

Что такое Контекстный коммутатор?
Контекстный коммутатор - это переключение CPU из одного процесса/потока в другой. Контекстные коммутаторы могут возникать только в режиме ядра. Это процесс сохранения текущего состояния выполнения процесса (для возобновления выполнения позже) и загрузки сохраненного состояния нового процесса/потока для выполнения.

Ответ 2

В качестве альтернативы вы можете проверить эту презентацию: http://www.slideshare.net/jserv/realtime-linux для более длинных описаний. Он охватывает общие понятия о системах реального времени, о том, как работает ядро ​​Linux для preemption, латентности в Linux, PREEMPT_RT и Xenomai, в режиме реального времени, как двухъядерный подход.