Инструмент Microprofile
UNIGINE поддерживает Microprofile, расширенный внешний встраиваемый профилировщик CPU / GPU с поддержкой покадровой проверки.
Профилировщик имеет следующее:
- Операции профилирования, выполняемые движком на CPU и GPU.
- Профилирование потоков движка.
- Профилирование до 1000 кадров.
- Вывод данных о производительности на локальный веб-сервер или в файл HTML.
Запуск Microprofile#
Данные о производительности, полученные Microprofile могут выводиться на локальный веб-сервер или в файл HTML.
Визуализация с использованием встроенного сервера#
Чтобы визуализировать данные о производительности с помощью локального веб-сервера, выполните следующие действия:
- В консоли установите количество кадров для профилирования с помощью консольной команды microprofile_webserver_frames . Вы можете пропустить этот шаг: по умолчанию будет профилировано 500 кадров.
- При необходимости отключите профилирование графического процессора .
- В строке меню UnigineEditor выберите Tools -> Microprofile.
Данные о производительности будут отображаться в вашем веб-браузере.
Например, если вы укажете localhost:1337/100, будут отображаться только первые 100 кадров.
Визуализация с использованием файлов#
Чтобы вывести данные о производительности в файлы HTML, выполните следующие действия:
- В консоли задайте количество кадров для профилирования с помощью консольной команды microprofile_dump_frames . Вы можете пропустить этот шаг: по умолчанию будет профилировано 1000 кадров.
- При необходимости отключите профилирование графического процессора .
- Запустите консольную команду microprofile_dump_html.
Данные производительности будут сохранены в указанном файле .html.
Использование дампов профилирования упрощает фиксацию «всплесков» производительности: движок продолжает отрисовывать приложение в фоновом режиме, даже когда оно не в фокусе, поэтому кадр, в котором произошел всплеск, может быть перезаписан в случае использования веб-сервера для повышения производительности. визуализация данных. Также его можно использовать для оценки результатов оптимизации: вы можете дампить кадры до и после оптимизации и сравнивать их.
Данные о производительности#
Microprofile визуализирует подробные данные о производительности для каждого кадра операций, выполняемых движком на CPU и GPU (если включен ) и в потоках движка. В главном меню Microprofile вы можете изменить режим визуализации: нажмите Mode и выберите нужный. По умолчанию установлен режим Detailed.
В режиме Detailed каждая операция (функция) и поток отображаются в виде отдельной цветной области. Регионы являются иерархическими: функция, вызванная другой функцией, отображается под последней. Размер области определяется временем выполнения соответствующей операции.
На рисунке ниже функция Engine::do_render() вызывает функции RenderRenderer::renderWorld() и так далее:
Чтобы просмотреть данные об определенной операции или потоке, наведите указатель мыши на соответствующую область. Чтобы увеличить / уменьшить отображаемые области, прокрутите колесико мыши.
Данные ЦП#
В группе данных производительности Main отображается стек вызовов операций (например, update, rendering и т. д.), выполняемых движком на ЦП.
Данные GPU#
В группе данных о производительности GPU отображается стек вызовов операций, выполняемых движком на GPU. В дополнение к основным данным о производительности для каждой функции (например, рендеринга среды, рендеринга пост-материалов и т.д.) отображается количество вызовов DIP и визуализированных треугольников. Также может отображаться количество поверхностей, источников света, теней, отрендеренных этой функцией, количество используемых материалов и шейдеров; информация об узле или материале, для которого вызывается функция (идентификатор, имя и т.д.).
Когда указывается область, соответствующая определенной функции, отображается Microprofile, когда эта функция вызывается на CPU и сколько времени затрачивается на ее выполнение.
OpenGL или команды DirectX можно объединить в группы отладки графического процессора, которые создаются автоматически при определении области профилирования. Все графические ресурсы, загружаемые из внешних файлов, такие как текстуры, шейдеры, статические сетки или сетки со скинами, а также внутренние ресурсы движка имеют свои собственные имена отладки для упрощения идентификации. Эта информация может быть полезна при использовании отладчиков Graphics API, таких как NVIDIA Nsight или RenderDoc.
Данные о потоках движка#
Данные о производительности потоков движка визуализируются в группах CPUThread, SoundThread, AsyncQueueThread, WorldSpawnMeshClutterThread, WorldSpawnGrassThread.