2012-04-06 4 views
11

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

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

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

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

ответ

16

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


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

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

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

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

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

+0

Опция, описанная в этом ответе как «CONFIG_PREEMPT_RT», соответствует описанию «CONFIG_PREEMPT», указанному в исходном URL-адресе. На самом деле, я читал в FAQ: «Если в реальном времени для Linux-приложений требуются задержки меньше однозначных миллисекунд, рекомендуется использовать патч CONFIG_PREEMPT_RT». – aleixrocks

1

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