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 между спросом, выданным на компьютерную систему и началом отклика на тот же спрос.
Что такое Пропускная способность?
Объем работы, которую компьютер может выполнять за определенный период времени, называется пропускной способностью.
Что такое Контекстный коммутатор?
Контекстный коммутатор - это переключение центрального процессора из одного процесса/потока в другой. Контекстные коммутаторы могут возникать только в режиме ядра. Это процесс сохранения текущего состояния выполнения процесса (для возобновления выполнения позже) и загрузки сохраненного состояния нового процесса/потока для выполнения.
Опция, описанная в этом ответе как «CONFIG_PREEMPT_RT», соответствует описанию «CONFIG_PREEMPT», указанному в исходном URL-адресе. На самом деле, я читал в FAQ: «Если в реальном времени для Linux-приложений требуются задержки меньше однозначных миллисекунд, рекомендуется использовать патч CONFIG_PREEMPT_RT». – aleixrocks