Инструмент Microprofile
UNIGINE has support for Microprofile, an advanced external embeddable CPU/GPU profiler with support for per-frame inspection. UNIGINE поддерживает Microprofile, расширенный внешний встраиваемый профилировщик CPU / GPU с поддержкой покадровой проверки.
The profiler features the following: Профилировщик имеет следующее:
- Profiling operations performed by the engine on CPU and GPU. Операции профилирования, выполняемые движком на CPU и GPU.
- Profiling the engine threads. Профилирование потоков движка.
- Profiling up to 1000 frames. Профилирование до 1000 кадров.
- The performance data output to a local web server. Вывод данных о производительности на локальный веб-сервер или в файл HTML.
Running MicroprofileЗапуск Microprofile#
The performance data obtained by the Microprofile can be output to a local web server.
Visualization Using Built-In ServerВизуализация с использованием встроенного сервера#
To visualize the performance data using the local web server, perform the following: Чтобы визуализировать данные о производительности с помощью локального веб-сервера, выполните следующие действия:
- In the console, set the the number of frames to be profiled via the microprofile_webserver_frames console command. You can skip this step: by default, 500 frames will be profiled. В консоли установите количество кадров для профилирования с помощью консольной команды microprofile_webserver_frames . Вы можете пропустить этот шаг: по умолчанию будет профилировано 500 кадров.
- При необходимости отключите профилирование графического процессора .
- On the Menu Bar of UnigineEditor, choose Tools -> Microprofile. В строке меню UnigineEditor выберите Tools -> Microprofile.
The performance data will be displayed in your Web browser. Данные о производительности будут отображаться в вашем веб-браузере.
- You can display only a part of the profiled frames: in the Web browser address bar, add /<number_of_frames> to the current URL.You can display only a part of the profiled frames: in the Web browser address bar, add /<number_of_frames> to the current URL.
- Don't forget to refresh (F5) the page in the Web browser while the profiling data is collected as it is not performed automatically.Don't forget to refresh (F5) the page in the Web browser while the profiling data is collected as it is not performed automatically.
- You can display only a part of the profiled frames: in the Web browser address bar, add /<number_of_frames> to the current URL.Вы можете отображать только часть профилированных фреймов: в адресной строке веб-браузера добавьте /<number_of_frames> к текущему URL-адресу.
- Don't forget to refresh (F5) the page in the Web browser while the profiling data is collected as it is not performed automatically.Не забудьте обновить ( F5 ) страницу во время сбора данных профилирования, поскольку это не выполняется автоматически.
For example, if you specify localhost:1337/100, only the first 100 frames will be displayed. Например, если вы укажете localhost:1337/100, будут отображаться только первые 100 кадров.
Визуализация с использованием файлов#
Чтобы вывести данные о производительности в файлы HTML, выполните следующие действия:
- В консоли задайте количество кадров для профилирования с помощью консольной команды microprofile_dump_frames . Вы можете пропустить этот шаг: по умолчанию будет профилировано 1000 кадров.
- При необходимости отключите профилирование графического процессора .
- Запустите консольную команду microprofile_dump_html.
Данные производительности будут сохранены в указанном файле .html.
Использование дампов профилирования упрощает фиксацию «всплесков» производительности: движок продолжает отрисовывать приложение в фоновом режиме, даже когда оно не в фокусе, поэтому кадр, в котором произошел всплеск, может быть перезаписан в случае использования веб-сервера для повышения производительности. визуализация данных. Также его можно использовать для оценки результатов оптимизации: вы можете дампить кадры до и после оптимизации и сравнивать их.
Performance DataДанные о производительности#
The Microprofile visualizes the detailed per frame performance data on the operations performed by the engine on CPU and GPU and on the engine threads. In the Microprofile main menu, you can change the visialization mode: click Mode and choose the required one. By default, the Detailed mode is set. Microprofile визуализирует подробные данные о производительности для каждого кадра операций, выполняемых движком на CPU и GPU (если включен ) и в потоках движка. В главном меню Microprofile вы можете изменить режим визуализации: нажмите Mode и выберите нужный. По умолчанию установлен режим Detailed.
In the Detailed mode, each operation (function) and thread is displayed as a separate colored region. The regions are hierarchical: the function called by the other function is displayed under the last one. The size of the region is determined by the time the corresponding operation takes. В режиме Detailed каждая операция (функция) и поток отображаются в виде отдельной цветной области. Регионы являются иерархическими: функция, вызванная другой функцией, отображается под последней. Размер области определяется временем выполнения соответствующей операции.
In the picture below, the Engine::do_render() function calls the RenderRenderer::renderWorld() functions and so on: На рисунке ниже функция Engine::do_render() вызывает функции RenderRenderer::renderWorld() и так далее:
To view the data on a certain operation or a thread, point to the corresponding region. To zoom in/out the displayed regions, scroll the mouse wheel. Чтобы просмотреть данные об определенной операции или потоке, наведите указатель мыши на соответствующую область. Чтобы увеличить / уменьшить отображаемые области, прокрутите колесико мыши.
CPU DataДанные ЦП#
In the Main group of the performance data, the call stack of the operations (e.g., update, rendering, etc.) performed by the engine on CPU is displayed. В группе данных производительности Main отображается стек вызовов операций (например, update, rendering и т. д.), выполняемых движком на ЦП.
GPU DataДанные GPU#
In the GPU group of the performance data, the call stack of the operations performed by the engine on GPU is displayed. In addition to the main performance data, for each function (e.g. environment rendering, post materials rendering and so on), the number of DIP calls and rendered triangles is shown. Also there can be the number of surfaces, lights, shadows rendered by this function, the number of materials and shaders used; the information on the node or material for which the function is called (identifier, name, etc.). В группе данных о производительности GPU отображается стек вызовов операций, выполняемых движком на GPU. В дополнение к основным данным о производительности для каждой функции (например, рендеринга среды, рендеринга пост-материалов и т.д.) отображается количество вызовов DIP и визуализированных треугольников. Также может отображаться количество поверхностей, источников света, теней, отрендеренных этой функцией, количество используемых материалов и шейдеров; информация об узле или материале, для которого вызывается функция (идентификатор, имя и т.д.).
When the region that corresponds to the certain function is pointed, the Microprofile displays when this function is called on CPU and how much time is spent on its performing. Когда указывается область, соответствующая определенной функции, отображается Microprofile, когда эта функция вызывается на CPU и сколько времени затрачивается на ее выполнение.
OpenGL or DirectX commands can be combined into GPU Debug groups that are created automatically when defining a profiling scope. All graphic resources loaded from external files, such as textures, shaders, static or skinned meshes, as well as the Engine's internal resources, have their own debug names to simplify identification. This information can be useful when using Graphics API debuggers, such as NVIDIA Nsight or RenderDoc. OpenGL или команды DirectX можно объединить в группы отладки графического процессора, которые создаются автоматически при определении области профилирования. Все графические ресурсы, загружаемые из внешних файлов, такие как текстуры, шейдеры, статические сетки или сетки со скинами, а также внутренние ресурсы движка имеют свои собственные имена отладки для упрощения идентификации. Эта информация может быть полезна при использовании отладчиков Graphics API, таких как NVIDIA Nsight или RenderDoc.
Engine Threads DataДанные о потоках движка#
The performance data on the engine threads is visualized in the CPUThread, SoundThread, AsyncQueueThread, WorldSpawnMeshClutterThread, WorldSpawnGrassThread groups. Данные о производительности потоков движка визуализируются в группах CPUThread, SoundThread, AsyncQueueThread, WorldSpawnMeshClutterThread, WorldSpawnGrassThread.