3 кнопки, котоpые потpясли DOS.

Unix Dos Linux Windows Os/2 Qnx Beos Gios Hard Etc Link Форум (тестовый режим) Гостевая Юмор Soft Связь
 
 
 

QNX: QNX NEUTRINO RTOS V 6.2

Содержание

4 Практическая оценка


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


4.1 Тестируемая система

Все тесты были проведены с использованием следующего оборудования:

  • Материнская плата: Chaintech 5TTMT M201 с 33MHz PCI-шиной
  • BIOS: Award BIOS v4.51PG
  • ЦП: Intel Pentium 200MHz MMX Family 5 Model 4 Stepping 3 (с 32KB L1 Cache)
  • RAM: 32 Mb DIMM
  • L2 Memory Cache: 512KB
  • Жесткий диск: Western Digital Caviar 34300, primary master, UDMA 2
  • Графический адаптер: S3 Trio 64V2/DX в PCI slot 1
  • Сетевая карта: SVEC NE2000 Plug & Play ISA network card
  • VMETRO PCI exerciser in PCI slot 3 (PCI interrupt level D, local bus interrupt level 10)
  • VMETRO PBT-315 PCI analyzer in PCI slot 4.
  • Во время проведения тестов, по умолчанию внешний и ЦП внутренний КЭШи задействованы, если не указано обратное.
  • DRAM-таймирование установлено на 60 нс.


4.1.1 Операционная система и конфигурация приложения

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

Все тестовые приложения используют POSIX-совместимое API, там где это возможно.


4.1.2 Дополнительные комментарии

Все тесты были проведены с использованием модели памяти "d", подробно описанной в документе DS "Report definition and test plan".

Данная модель памяти предоставляет полную защиту виртуальной памяти для всех процессов.


4.1.3 Сравнение результатов теста с QNX 6.1

Сравнение результатов тестов для рассматриваемой и предшествующей версий является хорошим упражнением.


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

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

Все показатели были сняты на уровне ISR. QNX NEUTRINO RTOS v6.2 также предоставляет возможность непосредственной обработки прерываний на уровне потоков (без явной обработки ISR), но здесь данный метод не использовался.


4.2.1 Одиночное прерывание – без перепланировки

Для этого теста была создана высокоприоритетная нить, устанавливающая обработчик прерываний, и затем начинающая постоянную запись отсчетов на шину PCI. Прерывания генерировались приблизительно каждые 50мкс и прерывали работу нити. Каждый раз при возникновении прерывания запускался их обработчик, писал отсчет на PCI шину и завершался. После завершения обработчика прерываний, прерванная нить возобновляла работу. Система не перепланировалась.

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

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

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

Для обсуждения времени обработки прерывания таймера (его ISR), читатель может обратиться к пункту 4.10.


4.2.1.1 Время ожидания обработки прерывания

 
  • Число нитей: 1
  • Модель памяти: d
Число опытовМинимальное (мкс)Максимальное (мкс)Среднее (мкс)
1551.64.31.7


 

Рис. 4.2-1 IL-a-1.d


Рис. 4.2-2 IL-a-1.d - распределение частоты



4.2.1.2 Время обработки прерывания

 
  • Число нитей: 1
  • Модель памяти: d
Число опытовМинимальное (мкс)Максимальное (мкс)Среднее (мкс)
1551.92.71.9


 

Рис. 4.2-3 IDL-a-1.d


Рис. 4.2-4 IDL-a-1.d - распределение частоты



4.2.2 Одиночное прерывание – с перепланировкой

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

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


4.2.2.1 Время обработки прерывания

 
  • Число нитей: 2
  • Модель памяти: d
Число опытовМинимальное (мкс)Максимальное (мкс)Среднее (мкс)
163832.37.72.3


 

Рис. 4.2-5 IDL-b-1.d


Рис. 4.2-6 IDL-b-1.d - распределение частоты



4.2.3 Два одновременных прерывания

В данном тесте генерировались два (почти) одновременных прерывания. Это было реализовано путем добавления в систему второй программы тестирования PCI (PDrive).
  • PDrive_HI (генерирует высокоприоритетные прерывание) реализует PCI-прерывание по линии C (INTC#) и генерирует прерывания с уровнем IRQ 9.
  • PDrive_LO (генерирует низкоприоритетные прерывания) реализует PCI-прерывание по линии B (INTB#) и генерирует прерывания с уровнем IRQ 10.

Две обрабатывающие прерывания процедуры (ISR_HI and ISR_LO) сопоставлены уровням IRQ 9 и 10 соответственно.

Время ожидания обработки прерываний оценивалось и для ISR_HI, и для ISR_LO. Время ожидания обработки прерывания измерялось как время между выполнением последней команды прерываемой нити и первой команды ISR. Разница во времени возникновения прерываний не превышала 100нс, что по определению классифицируется как одновременное возникновение прерываний.

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


4.2.3.1 Время ожидания обработки прерывания – ISR_HI

 
  • Число нитей: 2
  • Модель памяти: d
Число опытовМинимальное (мкс)Максимальное (мкс)Среднее (мкс)
1301.62.51.6


 

Рис. 4.2-7 : Время ожидания обработки прерывания для высокоприоритетной ISR


Рис. 4.2-8: Время ожидания обработки прерывания для высокоприоритетной ISR – Распределение частоты



4.2.3.2 Время ожидания обработки прерывания – ISR_LO

 
  • Число нитей: 2
  • Модель памяти: d
Число опытовМинимальное (мкс)Максимальное (мкс)Среднее (мкс)
1304.04.94.1


 

Рис. 4.2-9: Время ожидания обработки прерывания для низкоприоритетной ISR


Рис. 4.2-10: Время ожидания обработки прерывания для низкоприоритетной ISR – Распределение частоты



4.2.4 Обработка вложенных прерываний

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

Цель заключается в генерации высокоприоритетного прерывания во время обработки прерывания с более низким приоритетом соответствующим ему ISR.

Хорошая RTOS должна обрабатывать вложенные прерывания без каких либо проблем.

В рассматриваемом тесте задержка между прерываниями с низким и высоким приоритетами будет варьироваться от 1.5 до 3 мкс.


4.2.4.1 Обработка вложенных прерываний – интервал 1.5 мкс

В начале PDrive_LO генерирует низкоприоритетное прерывание (INTB#, IRQ 10), затем через 1.5 мкс PDrive_HI (INTC#, IRQ 9) генерирует высокоприоритетное прерывание. Результаты разделов 4.2.4.1.1 и 4.2.4.1.2 показывают, что все высокоприоритетные прерывания обслуживаются раньше их низкоприоритетных аналогов. Однако, скриншот анализатора шины, показанный на рис. 4.2-11, демонстрирует, что IRQ_LO возникает раньше IRQ_HI (INTB# сигнал становится неактивным раньше INTC#).

Этот факт является хорошим свидетельством того, что прерывания могут быть вложенными, но все же не представляет неопровержимого доказательства. Например, возможна ситуация, когда IRQ_HI возникшее раньше IRQ_LO, было обработано ISR_LO. Однако, в результате инспектирования отсчетов анализатора, мы можем подтвердить возможность обработки вложенных прерываний.

 

Рис. 4.2-11: скриншот анализатора PCI шины



4.2.4.1.1 Время ожидания обработки прерывания – ISR_HI

 
  • Число нитей: 1
  • Модель памяти: d
Число опытовМинимальное (мкс)Максимальное (мкс)Среднее (мкс)
1301.63.82.7


 

Рис. 4.2-12: Время ожидания обработки прерывания для высокоприоритетной ISR


Рис. 4.2-13: Время ожидания обработки прерывания для высокоприоритетной ISR – Распределение частоты



4.2.4.1.2 Время ожидания обработки прерывания – ISR_LO

 
  • Число нитей: 1
  • Модель памяти: d
Число опытовМинимальное (мкс)Максимальное (мкс)Среднее (мкс)
1304.05.14.2


 

Рис. 4.2-14: Время ожидания обработки прерывания для низкоприоритетной ISR


Рис. 4.2-15: Время ожидания обработки прерывания для низкоприоритетной ISR – Распределение частоты



4.2.4.2 Обработка вложенных прерываний – интервал 2.25мкс

Тест совпадает с рассмотренным в предыдущем разделе, но интервал времени между прерываниями теперь составляет 2.25мкс. Результаты показывают, что в большинстве случаев ISR_LO выполняется раньше ISR_HI.


4.2.4.2.1 Время ожидания обработки прерывания – ISR_HI

 
  • Число нитей: 1
  • Модель памяти: d
Число опытовМинимальное (мкс)Максимальное (мкс)Среднее (мкс)
1301.65.03.8


 

Рис. 4.2-16: Время ожидания обработки прерывания для высокоприоритетной ISR


Рис. 4.2-17: Время ожидания обработки прерывания для высокоприоритетной ISR – Распределение частоты



4.2.4.2.2 Время ожидания обработки прерывания – ISR_LO

 
  • Число нитей: 1
  • Модель памяти: d
Число опытовМинимальное (мкс)Максимальное (мкс)Среднее (мкс)
1302.93.93.0


 

Рис. 4.2-18: Время ожидания обработки прерывания для низкоприоритетной ISR


Рис. 4.2-19: Время ожидания обработки прерывания для низкоприоритетной ISR – Распределение частоты



4.2.4.3 Обработка вложенных прерываний – интервал 3 мкс

Теперь, когда интервал между прерываниями с разными приоритетами увеличивается до 3 мкс, ISR_LO всегда начинает работу раньше ISR_HI, так как максимальное время ожидания для ISR_LO меньше минимального времени ожидания ISR_HI.


4.2.4.3.1 Время ожидания обработки прерывания – ISR_HI

 
  • Число нитей: 1
  • Модель памяти: d
Число опытовМинимальное (мкс)Максимальное (мкс)Среднее (мкс)
1303.27.33.8


 

Рис. 4.2-20: Время ожидания обработки прерывания для высокоприоритетной ISR


Рис. 4.2-21: Время ожидания обработки прерывания для высокоприоритетной ISR – Распределение частоты



4.2.4.3.2 Время ожидания обработки прерывания – ISR_LO

 
  • Число нитей: 1
  • Модель памяти: d
Число опытовМинимальное (мкс)Максимальное (мкс)Среднее (мкс)
1301.66.81.9


 

Рис. 4.2-22: Время ожидания обработки прерывания для низкоприоритетной ISR


Рис. 4.2-23: Время ожидания обработки прерывания для низкоприоритетной ISR – Распределение частоты



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

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

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

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

Все прерывания обслуживаются на ISR-уровне. При этом ISR не выполняет никакой полезной работы, а только записывает отсчет в анализатор шины и завершается.


4.2.5.1 Короткие тесты

Таблица 4.2-1 показывает, что при генерации прерываний с периодичностью менее 5.5мкс, система неизбежно начинает "терять" их. Максимальная частота прерываний по сравнению с предшествующей версией QNX (6.1) не изменилась.

 
Периодичность (мкс)Число обработанных прерыванийЧисло потерянных прерываний
1510000
1210000
910000
710000
5.510000
59982
49964
3685315
Таблица 4.2-1: 1000 периодических прерываний, генерирующихся с различной частотой



4.2.5.2 Испытания на долговечность

Таблица 4.2-2 демонстрирует результаты теста, в котором система подвергалась одному миллиарду (109) периодических прерываний, возникающих с определенной частотой.

Из-за характера тестовой системы определить точное количество потерянных прерываний, если это число превышало 32768, не представлялось возможным.

Максимальная частота возникновения прерываний по сравнению с предшествующей версией системы QNX (6.1) не изменилась.

 
Периодичность (мкс)Число обработанных прерыванийЧисло потерянных прерываний
101,000,000,0000
91,000,000,0000
8999,999,98812
7999,999,799201
Таблица 4.2-2: Один миллиард прерываний, сгенерированных с различной частотой


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

Когда периодичность возникновения прерываний была уменьшена до 8мкс, 12 прерываний обслужены не были.

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


4.3 Нити (потоки)

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

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

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

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


4.3.1 Создание

 
  • Число нитей: 1
  • Модель памяти: d
Число опытовМинимальное (мкс)Максимальное (мкс)Среднее (мкс)
65531722880175


 

Рис. 4.3-1 TF-a-1.a


Рис. 4.3-2 TF-a-1.a - распределение частоты



4.3.2 Удаление

 
  • Число нитей: 1
  • Модель памяти: d
Число опытовМинимальное (мкс)Максимальное (мкс)Среднее (мкс)
655376.510278


 

Рис. 4.3-3 TF-b-1.a


Рис. 4.3-4 TF-b-1.a - распределение частоты



4.4 Переключение между нитями одного процесса

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


4.4.1 Время переключения между нитями (TSL-a-2.d)

 
  • Число нитей: 2
  • Модель памяти: d
Число опытовМинимальное (мкс)Максимальное (мкс)Среднее (мкс)
327662.58.32.6


 

Рис. 4.4-1 TSL-a-2.d

#
Рис. 4.4-2 TSL-a-2.d - распределение частоты



4.4.2 Время переключения между нитями (TSL-a-10.d)

 
  • Число нитей: 10
  • Модель памяти: d
Число опытовМинимальное (мкс)Максимальное (мкс)Среднее (мкс)
327662.87.92.8


 

Рис. 4.4-3 TSL-a-10.d


Рис. 4.4-4 TSL-a-10.d - распределение частоты



4.4.3 Время переключения между нитями (TSL-a-128.d)

 
  • Число нитей: 128
  • Модель памяти: d
Число опытовМинимальное (мкс)Максимальное (мкс)Среднее (мкс)
327662.99.53.6


 

Рис. 4.4-5 TSL-a-128.d


Рис. 4.4-6 TSL-a-128.d - распределение частоты



4.5 Переключение между нитями разных процессов

Данный тест практически повторяет тест времени переключения между нитями, рассмотренный в разделе 4.4, за исключением того, что каждая нить в данной системе будет принадлежать разным процессам. Т.о., данный тест будет оценивать время переключения между процессами. Тест проводится для 2, 10 и 128 процессов. Время переключения между процессами дольше времени переключения между нитями, так как каждый процесс имеет свое собственное пространство виртуальной памяти. Однако, в самом худшем случае время переключения между процессами не превысило 22 мкс. Результаты худшего случая получаются при первой активации процесса, это легко можно заметить при проведении теста с 128 процессами.


4.5.1 Время переключения между нитями (TSL-b-2.d)

 
  • Число нитей: 2
  • Модель памяти: d
Число опытовМинимальное (мкс)Максимальное (мкс)Среднее (мкс)
32766511.25.2


 

Рис. 4.5-1 TSL-b-2.d


Рис. 4.5-2 TSL-b-2.d - распределение частоты



4.5.2 Время переключения между нитями (TSL-b-10.d)

 
  • Число нитей: 10
  • Модель памяти: d
Число опытовМинимальное (мкс)Максимальное (мкс)Среднее (мкс)
327665.5125.9


 

Рис. 4.5-3 TSL-b-10.d


Рис. 4.5-4 TSL-b-10.d - распределение частоты



4.5.3 Время переключения между нитями (TSL-b-128.d)

 
  • Число нитей: 128
  • Модель памяти: d
Число опытовМинимальное (мкс)Максимальное (мкс)Среднее (мкс)
327666.721.88.8


 

Рис. 4.5-5 TSL-b-128.d


Рис. 4.5-6 TSL-b-128.d - распределение частоты

Далее >>>

 

© Krio, Xbyte, BooM
2004-2012

id-sign