Трудно в реальном времени в пользовательском пространстве с патчем preempt_rt

От: https://rt.wiki.kernel.org/articles/f/r/e/Frequently_Asked_Questions_7407.html

В режиме реального времени влияет только на ядро; Userspace не замечает разницы, за исключением лучшего поведения в реальном времени.

Означает ли это, что если мы напишем приложения в пространстве пользователя, они не получат жесткого эффекта в реальном времени?

4 ответа

Решение

Это зависит от того, что вы имеете в виду под "эффектом в реальном времени". Обычно вам требуется гарантированное поведение времени в системе реального времени. Вы не получите это. Однако ваше приложение будет работать более "гладко" и будет более отзывчивым. Для многих систем с максимальными усилиями этого будет достаточно.

Нет, это не то, что это значит.

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

API-интерфейсы в коде ядра, напротив, значительно изменены (например, путем изменения любой спин-блокировки на мьютекс и т. Д.)

Кстати, имейте в виду, что PREEMPT_RT уменьшает максимальную задержку, с которой сталкивается задача, но пропускная способность системы будет ниже (т.е. больше переключений контекста), и средняя задержка, вероятно, увеличится.

Я считаю, что на этот вопрос лучше всего ответить в контексте - спрашивая, были ли какие-либо API, введенные этим конкретным набором патчей, которые могут использовать авторы приложений - и ни один из них не добавляется этим набором патчей. Вам не нужно будет перекомпилировать приложение, и перекомпиляция не принесет никакой пользы. Вы также не будете заблокированы каким-либо конкретным API.

Если у вас есть хорошо написанное приложение пользовательского пространства, которое полагается на возможность запуска в кратчайшие сроки, когда условия оборудования требуют его ответа, тогда да, эти исправления могут помочь. Но вы все равно можете писать плохие приложения, которые мешают хорошему поведению в реальном времени, и набор патчей не может вам помочь.

Это означает, что Real-Time Patch будет манипулировать некоторыми кодами в ядре, и эффект от этой манипуляции состоит в том, что у нас будет мелкозернистое вытесняющее ядро. Все программы в пользовательском пространстве получат выгоду от вытесняющего ядра в реальном времени без каких-либо изменений. даже перекомпиляция не требуется! Целью патча PREEMPT_RT является преобразование Linux в систему реального времени, и это действительно хорошо для большинства задач. но в критически важных для безопасности системах, таких как военные и аэрокосмические, Linux ничего не может предложить, и мы должны использовать другие ОСРВ, такие как VxWorks, QNX и Integirty!

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