Фильтр по тематике

Результаты тестов производительности QNX Neutrino

В статье приводятся результаты тестирования производительности операционной системы реального времени QNX Neutrino на различных аппаратных платформах и в сравнении с другими встраиваемыми операционными системами. Рассматриваются задержки переключения между потоками, время обработки прерывания от системного таймера, производительность механизмов синхронизации и т.д.

Бельгийская компания Dedicated Systems Experts*, специализирующаяся на работе с системами реального времени, провела независимое тестирование и оценку нескольких операционных систем. В публичный доступ выложены документы с описанием методики тестирования, обзорное описание операционных систем и отчеты по тестированию QNX Neutrino 6.5, ОС на базе ядра Linux 2.6.33.7.2 с патчами реального времени v.30 и Windows Embedded Compact 7 (бывшая Windows CE) [1–6].

QNX традиционно получил очень хорошие оценки, как при обзорном сравнении (8-9 из 10), так и при тестировании на конкретной аппаратуре (9 из 10). Среди сильных сторон по- прежнему отмечают отличную архитектуру и хорошую документацию, производительность и соответствие требованиям реального времени. Среди недостатков отмечено, что не все компоненты системы доступны в исходных кодах, и несмотря на то что QNX обладает достаточно внушительным списком сетевых и Интернет-технологий, по этому параметру он уступает конкурентам – 8/10 против 9/10 и 10/10 у Windows и Linux.

Другие тестируемые системы получили оценки в целом ниже, чем QNX, хотя достаточно любопытно отметить, что за тесты реального времени Linux-RT получила 4/10 (большего от PREEMPT_RT ожидать и не следовало – [7]. – Прим. ред.), а Windows Embedded Compact 7 благодаря предсказуемому поведению получила такую же высокую оценку, как и QNX (9/10).

Периодически при работе с системами реального времени в QNX возникает необходимость спрогнозировать или объяснить ту или иную задержку, например при обработке прерываний. Особый интерес добавляет то, что есть возможность сравнить поведение достаточно современных систем с разными архитектурами. Тестирование QNX проводилось на следующих аппаратных платформах:

  • достаточно старом компьютере на базе Pentium MMX 200;
  • процессорном модуле Advantech SOM-6760 на базе про­цессора Intel Atom;
  • процессорной плате Beagle-XM Board на базе системы на кристалле TI DM3730 с процессорным ядром ARM Cortex A8.

Погрешность измерений составляет 0,2 микросекунды.

Время обработки прерывания от системного таймера

Одна из ключевых величин, влияющих на работу всей системы, – время обработки прерывания от системного таймера. Прерывание от системного таймера (системный тик) – это периодическое событие, в QNX 6 по умолчанию оно происходит с интервалом в 1 мс. Системный тик является основой для большинства системных функций работы с временем и задержками. Длительность системного тика в QNX может быть изменена с помощью системной функции ClockPeriod() вплоть до минимального значения в 10 мкс. Такая гибкость позволяет тонко настроить систему на требуемое время реакции, однако следует помнить, что при уменьшении периода системного тика возрастёт нагрузка на систему вследствие большего количества прерываний от таймера.

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

Время обработки прерывания от системного таймера в QNX 6.5 по результатам тестов

Для сравнения – Linux-RT на компьютере на базе Pentium MMX 200 обрабатывает прерывание от системного таймера в среднем в течение 19-21 микросекунды с единичными всплесками до 55 микросекунд. У Windows Compact 7 время обработки системного таймера на платформе Intel Pentium II 233 МГц (на Pentium MMX 200 Windows Compact 7 отказался работать) имеет в среднем разброс 4-7 микросекунд.

Производительность менеджера процессов

Единицей выполнения и планирования в QNX является поток. Каждый поток имеет собственный контекст выполнения (IP – instruction pointer, SP – stack pointer и др.), но находится в адресном пространстве процесса, и каждый процесс включает как минимум один поток.

Планированием потоков в QNX занимается менеджер процессов. Менеджер процессов объединён с микроядром QNX в модуль procnto и является неотъемлемой частью системы.

QNX 6.5 предоставляет 255 уровней приоритетов и следующие типы планирования: FIFO, карусельное (Round Robin) и спорадическое.

Время переключения между потоками с одинаковым приоритетом

В этом тесте измерялось время переключения между потоками с одинаковым приоритетом, работающими с дисциплиной диспетчеризации FIFO. Для переключения потоки добровольно освобождали процессор (yield).

Результаты тестирования компьютера на базе Pentium 200 MMX


Результаты тестирования процессорного модуля Advantech SOM-6760 на базе Intel Atom

Результаты тестирования процессорной платы Beagle-XM Board (ARM Cortex A8)

Результаты для Linux-RT, компьютер на базе Pentium MMX 200 (для сравнения)

Результаты для Windows Compact 7, компьютер на базе Intel Pentium II 233 МГц (для сравнения)


Время создания и удаления потока

Тест проводился в трех различных сценариях:

  • сценарий 1: создаётся поток с приоритетом ниже, чем у текущего; в этом сценарии не происходит переключения между потоками, т.е. создаваемый и удаляемый поток не получает управление;
  • сценарий 2: создаётся поток с приоритетом выше, чем у текущего; создаваемый поток сразу получает управление и уничтожается;
  • сценарий 3: создаётся поток с приоритетом выше, чем у текущего, но при получении управления он снижает свой приоритет.

При создании потока в сценарии 1 измеряется время системного вызова, а для сценариев 2 и 3 измеряется время от момента системного вызова до получения управления создаваемым потоком.

Итак, результаты тестов по созданию и удалению потока. 

Компьютер на базе Pentium 200 MMX


Процессорный модуль Advantech SOM-6760 на базе Intel Atom

Процессорная плата Beagle-XM Board (ARM Cortex A8)


Производительность механизмов синхронизации

QNX предоставляет стандартные для POSIX-систем механизмы синхронизации в виде семафоров и мьютексов.

Длительность операций с семафорами

Операции по созданию и удалению семафора в среднем занимают:

  • 3,8 и 3,6 микросекунд (максимум 39,2 и 19,7 мкс) для компьютера на базе Pentium 200 MMX;
  • 0,7 и 0,6 мкс (максимум 11,7 и 5,4 мкс) для Advantech SOM–6760;
  • 1,5 мкс (максимум 26,3 и 13,5 мкс) для Beagle-XM Board.

Время захвата и освобождения семафора, не использующегося другими потоками, невелико и составляет в среднем для тех же платформ соответственно 0,5/1,2/2,5 мкс.

В следующем тесте ставилась задача выяснить, каким образом количество заблокированных потоков влияет на время захвата и освобождения семафора. В случае когда на семафоре заблокировано несколько потоков, его захват или освобождение вызывает перепланирование, то есть такой тест отвечает на вопрос, сколько времени тратит ОС на перепланирование.

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

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

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

Компьютер на базе Pentium 200 MMX


Процессорный модуль Advantech SOM-6760 на базе Intel Atom

Процессорная плата Beagle-XM Board (ARM Cortex A8)


Время создания, захвата и удаления мьютексов

Взаимно исключающий семафор – мьютекс можно назвать двоичным семафором, но его поведение отличается от семафоров. Мьютекс имеет концепцию захвата владельцем и в отличие от семафоров может использоваться для предотвращения инверсии приоритетов.

Время захвата и освобождения мьютекса единственным потоком, то есть без конкуренции за мьютекс, очень мало и в случае с Intel Atom и Beagle-XM Board находится на уровне погрешности измерений. Это достигается за счёт поддержки атомарных операций и отсутствия необходимости в полноценном системном вызове.

Компьютер на базе Pentium 200 MMX


Процессорный модуль Advantech SOM-6760 на базе Intel Atom


Процессорная плата BeagleXM Board (ARM Cortex A8)

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

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

Время освобождения мьютекса измеряется от момента запроса на освобождение мьютекса до момента получения управления потоком, ожидающим мьютекс.

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

Компьютер на базе Pentium 200 MMX


Процессорный модуль Advantech SOM-6760 на базе Intel Atom

 

Процессорная плата BeagleXM Board (ARM Cortex A8)

Обработка прерываний

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

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

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

Для последующих тестов в качестве независимого источника прерываний используется внешняя PCI-плата для систем X86 и внутренний таймер (General Puprose) для платы на базе ARM.

Задержка обработки прерывания

В этом тесте измерялось время перехода из выполняемого потока в обработчик прерывания.

Компьютер на базе Pentium 200 MMX


Процессорный модуль Advantech SOM-6760 на базе Intel Atom


Процессорная плата Beagle-XM Board (ARM Cortex A8)


При сравнении с результатами других систем следует иметь в виду, что в их тестах учитывается также аппаратная задержка обработки прерывания. Задержка обработки прерывания для Linux-RT на компьютере на базе Pentium MMX 200 составляет в среднем 8,5 мкс с максимумом в 32,4 мкс. Для Windows Compact 7 на компьютере Intel Pentium II 233 МГц задержка составляет в среднем 6,8 мкс, максимум 12,3 мкс.

Задержка планирования

В этом тесте измерялось время перехода из обработчика прерывания обратно в поток.

Компьютер на базе Pentium 200 MMX


Процессорный модуль Advantech SOM-6760 на базе Intel Atom


Процессорная плата Beagle-XM Board (ARM Cortex A8)


Для сравнения – задержка планирования для Linux-RT на компьютере на базе Pentium MMX 200 составляет в среднем 2,7 мкс с всплесками до 26,1 мкс.

Задержка перехода из обработчика прерывания в пользовательский поток

В этом тесте обработчик прерывания разблокирует самый высокоприоритетный поток в системе. Измеряется время перехода из обработчика в этот поток (включает задержку переключения между потоками). 

Компьютер на базе Pentium 200 MMX

Процессорный модуль Advantech SOM-6760 на базе Intel Atom


Процессорная плата Beagle-XM Board (ARM Cortex A8)


Для сравнения – задержка планирования для Linux-RT на компьютере на базе Pentium MMX 200 составляет в среднем 21,6 мкс, с всплесками до 76,4 мкс. Для Windows Compact 7 на компьютере Intel Pentium II 233 МГц задержка составляет в среднем 7,5 мкс, максимум 17,7 мкс.

Максимальная выдерживаемая частота прерываний

Этот тест отвечает на вопрос, какой минимальный интервал возникновения прерываний может выдержать QNX без потери прерываний.

Тест проводился с различными интервалами и количеством прерываний:

  • 1000 прерываний, начальный этап;
  • 1 000 000 (миллион) прерываний, такой тест выполняется меньше минуты, но уже даёт наглядный результат;
  • 1 000 000 000 (миллиард) прерываний, выполнение теста занимает более 24 часов.

Компьютер на базе Pentium 200 MMX


Процессорный модуль Advantech SOM-6760 на базе Intel Atom


Процессорная плата Beagle-XM Board (ARM Cortex A8)


Для сравнения – интервал прерываний, на котором Linux-RT на компьютере на базе Pentium MMX 200 не теряет ни одно прерывание из миллиарда, составляет 150 мкс. У Win­dows Compact 7 на компьютере Intel Pentium II 233 МГц эта же величина составляет всего 13 мкс. ●

Литература

  1. Операционная система реального времени QNX Neutrino 6.3. Системная архитектура : пер. с англ. – СПб. : БХВ-Петербург, 2006. – 336 с.
  2. QNX6.5 on X86 platform evaluation report [Электронный ресурс] // Dedicated Systems Portal. – Режим доступа : http://download.dedicated-systems.com/4Download/tabid/103/fileshareact/viewfile/Default.aspx?Fileid=Dt289Np+6PA|, свободный, требуется регистрация. – Загл. с экрана. – Яз. англ.
  3. QNX 6.5 on ATOM platform evaluation report [Электронный ресурс] //Dedicated Systems Portal. – Режим доступа : http://download.dedicated-systems.com/4Download/tabid/103/fileshareact/viewfile/Default.aspx?Fileid=VpYqMhKqfZs|, свободный, требуется регистрация. – Загл. c экрана. – Яз. англ.
  4. QNX6.5 on ARM platform evaluation report [Электронный ресурс] // Dedicated Systems Portal. – Режим доступа : http://download.dedicated-systems.com/4Download/tabid/103/fileshareact/viewfile/Default.aspx?Fileid=hBLoV4vLh7g|, свободный, требуется регистрация. – Загл. с экрана. – Яз. англ.
  5. Linux on X86 platform evaluation report [Электронный ресурс] // Dedicated Systems Portal. – Режим доступа : http://download.dedicated-systems.com/4Download/tabid/103/fileshareact/viewfile/Default.aspx?Fileid= sV7IHKtRaZE|, свободный, требуется регистрация. – Загл. с экрана. – Яз. англ.
  6. Microsoft Compact 7 on X86 platform evaluation report [Электронный ресурс] // Dedicated Systems Portal. – Режим доступа : http://download.dedicated-systems.com/4Download/tabid/103/fileshareact/viewfile/Default.aspx?Fileid=ICqTl8nmXLQ|, свободный, требуется регистрация. – Загл. с экрана. – Яз. англ.
  7. Гленн Сайлер. Операционные системы VxWorks и Wind River Linux: подходы к реализации реального времени. – Современные технологии автоматизации. – 2011. – № 3.

Комментарии
Рекомендуем

ООО «ПРОСОФТ» 7724020910 2SDnjdbfYK3
ООО «ПРОСОФТ» 7724020910 2SDnjdbfYK3