Профилирование программ в QNX Momentics

Общие сведения



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 Основы применения — Сергей Зыль

Similar posts

Ads
AdBlock has stolen the banner, but banners are not teeth — they will be back

More

Comments 4

    0
    Эффект нового года — прошло 14 часов, ни одного комментария у серьёзной технической статьи…
      +1
      Просто скорее всего на хабре мало кто знаком с QNX. Я, как и многие, плюсанул хорошую но непонятную мне статью, и прошел мимо)
        0
        А по какому принципу оценили, что она хорошая? Я-то ничего не хочу сказать, мне она и самому нравиться, просто интересно)
          +2
          Как оценил? Ну наверное по принципу хомяка — «где-то, что-то слышал про QNX и крутость систем реального времени», да и в хотелках есть пунктик про них :-) В любом случае такие статьи лучше, чем «Вышла новая прошивка на Nexus S, бла-бла-бла».

    Only users with full accounts can post comments. Log in, please.