Video Tutorials
Interface
Essentials
Advanced
Полезные советы
UnigineEditor
Interface Overview
Assets Workflow
Settings and Preferences
Working With Projects
Adjusting Node Parameters
Setting Up Materials
Setting Up Properties
Lighting
Landscape Tool
Using Editor Tools for Specific Tasks
Extending Editor Functionality
Программирование
Fundamentals
Setting Up Development Environment
Usage Examples
UnigineScript
C++
C#
UUSL (Unified UNIGINE Shader Language)
File Formats
Rebuilding the Engine Tools
GUI
Double Precision Coordinates
API
Containers
Common Functionality
Controls-Related Classes
Engine-Related Classes
Filesystem Functionality
GUI-Related Classes
Math Functionality
Node-Related Classes
Objects-Related Classes
Networking Functionality
Pathfinding-Related Classes
Physics-Related Classes
Plugins-Related Classes
IG Plugin
CIGIConnector Plugin
Rendering-Related Classes
Работа с контентом
Content Optimization
Materials
Art Samples
Tutorials

Инструмент Microprofile

UNIGINE поддерживает Microprofile, расширенный внешний встраиваемый профилировщик CPU / GPU с поддержкой покадровой проверки.

Инструмент Microprofile

Профилировщик имеет следующее:

  • Операции профилирования, выполняемые движком на CPU и GPU.
  • Профилирование потоков движка.
  • Профилирование до 1000 кадров.
  • Вывод данных о производительности на локальный веб-сервер или в файл HTML.

Запуск Microprofile#

Примечание
Инструмент Microprofile доступен только для Development сборок движка: он не будет компилироваться для сборок Debug и Release. Вы можете использовать консольную команду microprofile_info, чтобы проверить, скомпилирован ли Microprofile.

Данные о производительности, полученные Microprofile могут выводиться на локальный веб-сервер или в файл HTML.

Примечание
Microprofile показывает действительную информацию только после рендеринга первых 1000 кадров (например, при частоте кадров 60 кадров в секунду такое время "разогрева" составляет около 16 секунд).

Визуализация с использованием встроенного сервера#

Чтобы визуализировать данные о производительности с помощью локального веб-сервера, выполните следующие действия:

  1. В консоли установите количество кадров для профилирования с помощью консольной команды microprofile_webserver_frames . Вы можете пропустить этот шаг: по умолчанию будет профилировано 500 кадров.
  2. При необходимости отключите профилирование графического процессора .
  3. В строке меню UnigineEditor выберите Tools -> Microprofile.

Данные о производительности будут отображаться в вашем веб-браузере.

Примечание
Вы можете отображать только часть профилированных фреймов: в адресной строке веб-браузера добавьте /<number_of_frames> к текущему URL-адресу.

Например, если вы укажете localhost:1337/100, будут отображаться только первые 100 кадров.

Визуализация с использованием файлов#

Чтобы вывести данные о производительности в файлы HTML, выполните следующие действия:

  1. В консоли задайте количество кадров для профилирования с помощью консольной команды microprofile_dump_frames . Вы можете пропустить этот шаг: по умолчанию будет профилировано 1000 кадров.
  2. При необходимости отключите профилирование графического процессора .
  3. Запустите консольную команду microprofile_dump_html.

Данные производительности будут сохранены в указанном файле .html.

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

Примечание
Все доступные консольные команды можно найти в разделе Performance Profiling статьи о Консоли .

Данные о производительности#

Microprofile визуализирует подробные данные о производительности для каждого кадра операций, выполняемых движком на CPU и GPU (если включен ) и в потоках движка. В главном меню Microprofile вы можете изменить режим визуализации: нажмите Mode и выберите нужный. По умолчанию установлен режим Detailed.

Группы профилирования, отображаемые в режиме Detailed

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

На рисунке ниже функция Engine::do_render() вызывает функции RenderRenderer::renderWorld() и так далее:

Чтобы просмотреть данные об определенной операции или потоке, наведите указатель мыши на соответствующую область. Чтобы увеличить / уменьшить отображаемые области, прокрутите колесико мыши.

Данные ЦП#

В группе данных производительности Main отображается стек вызовов операций (например, update, rendering и т. д.), выполняемых движком на ЦП.

Данные о производительности функции World Update

Данные GPU#

В группе данных о производительности GPU отображается стек вызовов операций, выполняемых движком на GPU. В дополнение к основным данным о производительности для каждой функции (например, рендеринга среды, рендеринга пост-материалов и т.д.) отображается количество вызовов DIP и визуализированных треугольников. Также может отображаться количество поверхностей, источников света, теней, отрендеренных этой функцией, количество используемых материалов и шейдеров; информация об узле или материале, для которого вызывается функция (идентификатор, имя и т.д.).

Данные о производительности отложенного рендеринга освещения

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

OpenGL или команды DirectX можно объединить в группы отладки графического процессора, которые создаются автоматически при определении области профилирования. Все графические ресурсы, загружаемые из внешних файлов, такие как текстуры, шейдеры, статические сетки или сетки со скинами, а также внутренние ресурсы движка имеют свои собственные имена отладки для упрощения идентификации. Эта информация может быть полезна при использовании отладчиков Graphics API, таких как NVIDIA Nsight или RenderDoc.

Пример данных отладки, просматриваемых в RenderDoc

Данные о потоках движка#

Данные о производительности потоков движка визуализируются в группах CPUThread, SoundThread, AsyncQueueThread, WorldSpawnMeshClutterThread, WorldSpawnGrassThread.

Данные о производительности в потоках симуляции физики

Видеоурок: Проверка производительности с помощью Microprofile#

Последнее обновление: 10.10.2020