Рубрика:
БИТ. Бизнес & Информационные технологии /
Технологии
|
Facebook
Мой мир
Вконтакте
Одноклассники
Google+
|
АЛЕКСЕЙ ЕРМАКОВ, инженер. Работает в НЦПР, участвует в проектах по виртуализации Red Hat
Red Hat Enterprise MRG Realtime Linux реального времени – война за микросекунды
В бортовых системах, в системах управления на производстве и на транспорте счет идет на микросекунды. В финансовом мире роботы соревнуются с роботами, и выигрывает тот, кто оказывается быстрее на доли секунды. Для таких задач, когда просто «быстро» недостаточно и нужно «гарантированно быстро», существуют системы реального времени
Операционные системы реального времени «на пальцах»
Основная задача ОС реального времени – обеспечить гарантированное время отклика для задачи. Если необходимо, чтобы критичный процесс получал процессорное время не реже, чем каждые 100 микросекунд, то ОС должна это гарантировать. Если нагрузка растет и система не справляется с ней, второстепенные задачи могут пострадать, но критичный процесс все равно должен получать свое процессорное время каждые 100 микросекунд.
Такие жесткие ограничения применимы далеко не всегда. Разумеется, от любых приложений и информационных систем всегда хотят, чтобы они работали быстро. Обычно это означает «чтобы пользователю было комфортно и не приходилось ждать». Для большинства задач задержки в десятую долю секунды или даже в секунду никто просто не заметит. Если иногда для каких-то отдельных запросов задержки и возникают, это не страшно, если в среднем система отвечает быстро.
У ОС реального времени другой приоритет – для них неприемлемо «в среднем быстро», у них должно быть «гарантированно быстро для каждого отдельного запроса». Решение этой задачи требует другого подхода к внутренней архитектуре. Поэтому ОС реального времени и операционные системы общего назначения – это разные классы систем.
Red Hat Enterprise MRG Realtime: основные особенности
Одной из наиболее распространенных систем реального времени является Red Hat Enterprise MRG Realtime. Технически MRG Realtime – это набор пакетов, превращающих стандартный Red Hat Enterprise Linux (RHEL) в ОС реального времени. MRG Realtime состоит фактически из двух компонентов – ядра реального времени, заменяющего стандартное ядро RHEL, и набора инструментов для настройки и тонкой профилировки.
MRG Realtime обеспечивает для критичных к задержкам задач стабильное время отклика с разрешением вплоть до микросекунд. Разница в скорости обработки событий стандартной ОС общего назначения и MRG Realtime наглядно видна из рис. 1.
Рисунок 1. Время обработки события системой на базе стандартного ядра Linux и на базе MRG Realtime
На графике красным показано время обработки событий системой на базе стандартного ядра Linux и зеленым – системой на базе MRG Realtime. По оси X отложен номер события, по оси Y – время обработки в микросекундах. Масштаб времени по шкале Y логарифмический. Обычное ядро в среднем тратит на обработку одного события 9 мкс со стандартным отклонением 54.94 мкс. Ядро MRG Realtime позволяет достичь значения 8 мкс со стандартным отклонением 1.49 мкс.
Чтобы такие результаты стали возможны, в ядро MRG Realtime было внесено заметное количество изменений по сравнению со стандартным ядром RHEL – переработаны механизмы работы с блокировками, включены таймеры высокого разрешения, невытесняемые участки кода ядра разбиты на минимальные блоки, сделан ряд других оптимизаций.
Но все же основная особенность MRG Realtime не в этом. Главное отличие MRG Realtime от других ОС реального времени в том, что фактически, кроме ядра, не изменено ничего (строго говоря, изменения были, но они уже внесены в апстрим). Сегодня API RHEL и API MRG одинаковы, с точки зрения приложений они ничем не отличаются, и это позволяет запустить на MRG Realtime все то же программное обеспечение, которое было написано и собрано для RHEL.
В результате становится возможным крайне быстро перенести приложения на ОС реального времени и начать работать с ними в новой среде. Разумеется, это не гарантирует, что все мгновенно заработает с микросекундными задержками. Внедрение MRG Realtime – это всегда процесс взаимной оптимизации приложений, системы и инфраструктуры. Тем не менее крайне важно, что для начала работы не нужно что-либо переписывать и заново отлаживать. Можно сначала запустить систему с привычными приложениями, измерить полученные задержки на разных этапах обработки, после чего для достижения целевых показателей вносить правки только там, где они оказались объективно нужны.
Где это работает
Области применения систем реального времени разнообразны.
В телекоммуникациях для обеспечения качества связи. Так, на базе MRG Realtime работает оборудование Alcatel-Lucent [4].
В финансовом секторе – на биржах и в инвестиционных банках, где роботы соревнуются с роботами и «время – деньги». Большинство мировых компаний в этой области перешло на MRG Realtime, среди российских компаний ее используют ММВБ [2] и «Тройка-Диалог» [3].
В военных системах, когда время уже даже не деньги, а гораздо больше. Например, MRG Realtime активно используется в проекте Zumwalt Destroyer ВМФ США [5].
- Материалы по MRG Realtime (на английском) – http://www.redhat.com/products/mrg/realtime.
- Опыт использования MRG Realtime в ММВБ – http://www.cnews.ru/news/line/index.shtml?2011/12/09/468195.
- Опыт использования MRG Realtime в «Тройка-Диалог» – http://www.pcweek.ru/foss/wp/detail.php?ID=130860.
- MRG Realtime в оборудовании Alcatel-Lucent – http://www.europe.redhat.com/news/article/2373.html.
- Разработка системы реального времени для Zumwalt Destroyer – http://press.redhat.com/about/news/blog/red-hat-enterprise-mrg-red-hat-customer-driven-innovation-and-open-source-leadership.
Facebook
Мой мир
Вконтакте
Одноклассники
Google+
|