Ответ 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 из одного процесса/потока в другой. Контекстные коммутаторы могут возникать только в режиме ядра. Это процесс сохранения текущего состояния выполнения процесса (для возобновления выполнения позже) и загрузки сохраненного состояния нового процесса/потока для выполнения.