Realtime
Операционная система реального времени (в отличии от системы общего назначения) оптимизирована на уменьшение задержек реакции (latency) и детерминизм (maximum latency) при обработке событий. Применяется для построения систем в сферах телекоммуникаций, управления машинами, высокочастотной торговли и других (в отличии от работы с приложениями и конечным пользователем.)
На данный момент в репозиторий Сизиф под архитектуру x86_64 экспериментально собраны два ядра реального времени:
kernel-image-xenomai
"Двойное ядро" состоящее из высоко приоритетного ко-ядра Cobalt реализующего различные (skins) RTOS API Xenomai 3 и ядра линукс с I-Pipe (Adeos) патчем реализующим систему жёсткого реального времени. (Обратите внимание, что ядро Mercury не поддерживается.) Xenomai 3 может эмулировать RTOS API: pSOS+, uITRON, VxWorks, RTAI, VRTX, а так же содержит нативное API Alchemy и поддерживает Real-Time Driver Model (RTDM). Документация на англ.
Юзерспейс и специализированные тесты для этого ядра находятся в пакете xenomai
.
kernel-image-rt
Real Time Linux с PREEMPT_RT
патчем (Ingo Molnar, Thomas Gleixner) реализующим POSIX real-time API.
Считается, что ядра данного типа наиболее оптимально работают с vanilla конфигом. Поэтому была использована следующая методология создания конфига: defconfig + все опциональные модули из std_def ядра + тюнинг RT (отключено NO_HZ
, отключены многие опции _DEBUG
+ прочие мелкие оптимизации).
- Для облегчения тестирования это ядро содержит два дополнительных патча от консорциума OSADL:
- https://www.osadl.org/Latency-histograms.latencyhist.0.html
- https://www.osadl.org/Precise-load-measurement.precise-system-load.0.html
Для тестирования этого ядра можно использовать пакет linux-rt-tests
.
Тестирование ядра
Базовый способ тестирования ядра реального времени это запуск утилиты cyclictest
параллельно с созданием нагрузки на систему (например, запуск unixbench
в цикле) в течении длительного времени (не менее 24 часов). Пример запуска:
# cyclictest -a -m -Sp99 --smi
Для оценки результата следует смотреть на столбец Max
показывающий время задержки реакции на прерывания в микросекундах. Опция --smi
добавляет столбец SMI
, который показывает сколько было System Management Interrupts за время теста -- эти прерывания могут значительно ухудшить результаты системы. В системе пригодной для реального можно снизить их число через настройки BIOS. (Может быть полезно почитать HPC Tuning Guide для вашего железа). Если система превышает требуемый максимум, то она не пригодна для использования в реальном времени. Ещё один источник высоких задержек - не оптимизированные для реального времени драйвера оборудования (запрещающие прерывания на долгое время) или само железо (блокирующее процессор на долгое время).