Общие сведения
QNX Momentics Professional Edition (PE) основанная на платформе Eclipse — это полнофункциональный и высокоинтегрированный профессиональный комплект разработчика, который содержит все необходимое для построения и оптимизации приложений для ОСРВ QNX Neutrino. Благодаря широкому набору удобных инструментов – от средств встраивания на процессорную плату до средств удаленной диагностики – комплект QNX Momentics PE обеспечивает единую, гибкую программную среду для всего цикла разработки.
Профилирование программ предоставляет простой и удобный механизм исследования выполнения программы с целью ее оптимизации. Профилирование — это сбор характеристик работы программы, таких как время выполнения отдельных фрагментов программы, число верно предсказанных условных переходов т. д. Инструмент, используемый для анализа работы, называют профилировщиком.
В данном руководстве по шагам профилируем учебное, многопоточное приложение sy21 с помощью инструментов QNX System Profiler и QNX Application Profiler, для демонстрации возможностей средств профилирования в QNX Momentics.
Много картинок
Профилировщик Application Profiler показывает время выполнения отдельных фрагментов программы, позволяет видеть количество времени, которое программа тратит на каждую строку и каждую функцию.
Профилировщик System Profiler идет дальше обычных отладчиков и анализаторов кода, он представляет собой графический инструмент системного анализа, позволяя исследовать то, как взаимодействуют друг с другом все компоненты сложной системы реального времени. Результатом являются дополнительные удобства для пользователей в плане поиска ошибок и оптимизации кода, а также повышение скорости работы и большая предсказуемость самих систем.
Многопоточное приложение sy21 построенное на семафорах (Семафо́р — объект, позволяющий войти в заданный участок кода не более чем n потокам) иллюстрирует работу синхронизации потоков, в рамках данного руководства позволит лучше продемонстрировать работу профилировщика.
Подготовка
Для работы с этим руководством вам потребуется:
- QNX Momentics, для компиляции приложения и выполнения самого профилирования (в руководстве используется последняя версия — 6.5, но средства профилирования доступны с более ранних версий)
- Установленная QNX Neutrino, для запуска скомпилированного приложения (в руководстве используется виртуальная машина VMware Workstation)
- Средние знания языка C++
Профилирование
В QNX Momentics создадим новый QNX C++ проект, во вкладке Buld Variants установим конфигурацию

Проект создан, теперь скомпилируем приложение Project->Build Project, при успешной компиляции в окне консоли увидим следующее

Создадим C/C++ QNX QConn (ip) конфигурацию для выполнения программы run->run configurations

В поле C/C++ Aplication выберем наш проект

В поле Target Options запишем ip адрес запущенной ОС QNX Neutrino

Ip адрес можно узнать, запустив в операционной системе терминал, командой ifconfig, для мониторинга процессов в momentics необходимо запустить целевой агент qconn

Переходим к вкладке аргументов выполняемой программы, запустим программу с аргументами -n20 -t2, n — количество итераций цикла синхронизации (передачи управления), t — количество потоков, между которыми выполняется синхронизация

теперь создадим конфигурацию профилировщика:

Запустим созданную конфигурацию профилировщика, пока он работает, запускаем на выполнение нашу программу. Откроем создавшийся лог, для этого переходим на вкладку QNX System Profiler и открываем лог (файл с расширением kev)
Общая информация:

Загрузка процессора:

Графическое представление взаимодействия процессов и потоков:

Рассмотрим подробнее. Найдем наш процесс и посмотри поближе.
Создание первого дочернего потока:

Цикл синхронизации:

Теперь перейдем на вкладку QNX Aplication Profiler

здесь можно посмотреть общее время выполнения отдельных как отдельных функций так и потоков.
Так же если перейти на вкладку QNX System information можно посмотреть статус работающей операционной системы.
Запущенные процессы:

Информацию о выбранном процессе:

Информацию о памяти:

Файловую систему:

В данном руководстве мы не будем ничего оптимизировать, так оно было написано для демонстрирования средств профилирования.
Литература
- Анатомия параллелизма — Олег Цирюлик, Егор Горошко
- QNX Momentics Основы применения — Сергей Зыль