Битва систем реального времени Preempt RT и Xenomai! Кто более мейнстримовый, а кто более реалистичный?
Битва систем реального времени Preempt RT и Xenomai! Кто более мейнстримовый, а кто более реалистичный?

Заявление об авторских правах:Основное содержание статьи основано на“Пекинская компания Mengtong Technology Co., Ltd.”Уполномоченные документы,Составлено компанией Chuanglong Technology. Спасибо компании «Mengtong Technology» за щедрую поддержку.,Пусть больше людей узнаютLinuxсистематический“Расширение в реальном времени”Выбирайте знания。

Споры о выборе продолжаются

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

Согласно статистике новых клиентов по всему миру, предоставленной поставщиком мастер-станций EtherCAT Acontis, доля клиентов, выбирающих системы Linux реального времени, увеличивалась из года в год за последние 10 лет. Доля всех новых клиентов Acontis в 2019 году, использующих реальные системы. -время Linux как операционной системы контроллера превысило 60%.

Из нашего опыта последних лет мы заметили, что у некоторых клиентов есть предубеждения и недопонимания относительно производительности в реальном времени. Кроме того, ведется много споров о выборе Linux-систем реального времени, использовать ли в основном Preempt RT или Xenomai. Мы составили эту статью на основе нашего опыта работы в предыдущих проектах и ​​выступления эксперта по системам Linux реального времени Яна Альтенберга на конференции Embedded Linux в 2015 году. Я надеюсь, что это поможет вам разобраться в режиме реального времени и предоставит рекомендации для правильного выбора между Preempt RT и Xenomai.

Что такое «в реальном времени»

Мы заметили в нашем взаимодействии с нашими клиентами,Некоторые инженеры путают режим реального времени со скоростью выполнения или производительностью.。AltenbergОсобый акцент в выступлении был сделан:Режим реального времени не имеет ничего общего со скоростью выполнения и производительностью!

Будь то операционная система реального времени или полевая шина реального времени, смысл реального времени заключается не в том, что чем быстрее, тем лучше, а в уверенности в выполнении задачи в течение заданного времени (детерминизм и гарантии времени). Если мы определим реальное время, то реальное время — это уверенность во времени.

Важной особенностью режима реального времени является выполнение заданных задач в течение заданного периода времени. В технических обсуждениях иногда у заказчиков возникают вопросы по поводу того, что протокол EtherCAT не имеет механизма автоматической повторной передачи ошибочных данных. Очевидно, что эта особенность работы в реальном времени была проигнорирована. Принцип работы главной станции EtherCAT заключается в отправке данных в соответствии с периодами времени (периодами цикла). Данные процесса (данные процесса) в каждом цикле имеют смысл только тогда, когда они достигают ведомой станции в течение этого цикла. Таким образом, на уровне протокола EtherCAT не будет автоматически отправлять данные о сбое процесса перед повторной отправкой в ​​последующих циклах.

Встроенный В своем выступлении на конференции по Linux Альтенберг также высказал интересную мысль. Он надеялся, что все забудут о «мягком реальном времени» (Soft Real-Time). Real Timeформулировка),Есть только реальные и нереальные.、Разница между уверенностью и недетерминизмом。Может гарантировать уверенность, то есть «жесткий режим реального времени».(Hard Real Time)。

Принцип реализации Xenomai и Preempt RT

В настоящее время основной выбор решений для Linux, работающих в режиме реального времени, лежит между Xenomai и Preempt RT. Xenomai — это двухъядерное решение, которое добавляет независимое микроядро к ядру Linux, а Preempt RT — это стандартное одноядерное решение реального времени.

Приложения реального времени Xenomai выполняются в микроядре, а система Linux используется в качестве задачи с низким приоритетом в микроядре. В отличие от RTAI, Xenomai в режиме реального времени реализуется в пользовательском пространстве. Linux увеличивает время выполнения только в том случае, если высокоприоритетные приложения реального времени не выполняются в микроядре. На рисунке ниже представлена ​​принципиальная схема двухъядерного решения, представленного Xenomai.

Рисунок 1. Принципиальная схема двухъядерного решения Xenomai.
Рисунок 1. Принципиальная схема двухъядерного решения Xenomai.

AltenbergСчитается, что двухъядерное решение реального времени имеет несколько очевидных недостатков.。Во-первых, объем работ по техническому обслуживанию очень велик.потому чтоLinuxНе запускается непосредственно на оборудовании,Таким образом, Xenomai необходимо поддерживать уровень аппаратной абстракции HAL, сохраняя при этом микроядро.,Это приводит кXenomaiСкорость обновления обычно выше, чем у основной линии.Linuxна шаг позади。Во-вторых, стандартную библиотеку C использовать нельзя.XenomaiРазработка приложений реального времени требует специальных инструментов и библиотек, а также отдельныхAPI。

Основное решение Linux для работы в реальном времени — это одноядерное решение, основанное на Preempt RT, которое переводит сам Linux в режим реального времени за счет максимального увеличения вытесняемой части ядра Linux. На рисунке ниже показана одноядерная схема Premept RT.

картина 2 Preempt RTПринцип одноядерного решениякартина
картина 2 Preempt RTПринцип одноядерного решениякартина

Так как около 80% Preempt Функциональность RT интегрирована в основную ветку Linux, поэтому любой разработчик Linux может использовать Preempt. Компоненты ядра Linux для RT. Вытеснение RT не только превращает Linux в систему реального времени, но и повышает стабильность Linux. Вытеснение RT широко распространен и имеет большое сообщество, разработчикам не обязательно иметь глубокие знания Preempt. RT вместо этого используйте стандартную библиотеку C для разработки приложений реального времени. Разработчикам не нужно глубоко разбираться в Preempt. RT,Вместо этого используйте стандартныйCБиблиотека для разработки приложений реального времени。Preempt RT — это система Linux, Preempt Приложения реального времени RT также являются приложениями Linux.

Поскольку оставшиеся 20% функций постепенно интегрируются в основную ветку Linux, возможно, в будущем можно будет использовать Preempt RT напрямую, без установки патчей на Linux.

Сравнение производительности Xenomai и Preempt RT

Наиболее важным показателем производительности в реальном времени является размер задержки. В Интернете есть много широко распространенных статей, в которых говорится, что Xenomai имеет преимущества по задержке. Альтенберг не согласен с этой точкой зрения. Он считает, что причиной такого вывода является неправильная конфигурация Preempt RT.

Чтобы убедиться наверняка, их команда нашла экспертов Xenomai и Preempt RT соответственно и провела тесты на одной и той же аппаратной платформе. Объектом тестирования является производительность Xenomai и Preempt RT с точки зрения задержки и джиттера при высокой нагрузке.

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

Результаты тестов в пользовательском пространстве показывают, что наихудшие задержки как для Xenomai, так и для Preempt RT составляют около 90-95 микросекунд. При использовании только одноядерного теста в системе Linux наихудшая задержка Preempt RT составила всего около 80 микросекунд, что лучше, чем у Xenomai.

В результатах теста задержки пространства ядра максимальная задержка Xenomai составляет 30 микросекунд, а максимальная задержка одноядерного запуска Preempt RT — 60 микросекунд. Если используется быстрое прерывание FIQ, наихудшая задержка Preempt RT может достигать 30 микросекунд, а средняя задержка может достигать даже 10 микросекунд.

Экспертное мнение

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

Однако Preempt RT практически слился с основной веткой ядра Linux. С точки зрения разработки и обслуживания системы рабочая нагрузка Preempt RT такая же, как и у стандартного Linux. Это дает Preempt RT больше преимуществ, чем Xenomai, например, упрощение разработки для инженеров, более длительный жизненный цикл продукта и упрощенное обслуживание системы.

картина 3 Наша системная платформа реального времени Linux поддерживает перечисление.
картина 3 Наша системная платформа реального времени Linux поддерживает перечисление.
boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose