Поделиться через


Профилирование ЦП и GPU с записью времени

Записи времени объединяют данные профилирования ЦП и GPU в одну запись для подробного анализа приложения. Эти данные собираются во время выполнения игры и с минимальными затратами, чтобы увидеть такие вещи, как работа распределяется по ядрам ЦП, задержка между графическими работами, отправляемыми ЦП и выполняемыми GPU, при доступе к файлам и выделении памяти и т. д. Это также включает в себя определяемые приложением события, маркеры и счетчики через PixEvents.

Получение отслеживания времени

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

Настройте параметры отслеживания времени при необходимости и нажмите кнопку "Начать запись времени ", чтобы начать запись. Нажмите Остановить захват (или завершите приложение), чтобы завершить запись. После краткого периода обработки запись откроется.

Параметры отслеживания времени

Имя Описание
Режим записи Последовательный: запись полного хода событий в промежутке между началом и окончанием захвата.
Цикл: запись событий в буфер фиксированного размера, сохраняя только последние n секунды данных. Дополнительные сведения см. в этой записи блога о захватах циклической синхронизации.
Примеры ЦП Выполните пример профилирования, чтобы узнать, где ЦП тратит время. Частота выборки настраивается.
Стек вызовов при переключениях контекста Сбор стеков вызовов при переключении контекста потока.
Доступ к файлам Отслеживание доступа к файлам.
Время gpu Соберите подробные сведения о времени запуска и остановки работы GPU.
Ресурсы GPU Соберите подробные сведения о объектах D3D, таких как кучи и ресурсы. Кроме того, отслеживайте расположение GPU, демотированные выделения и перемещение выделений.
События VirtualAlloc/VirtualFree Отслеживает выделения, сделанные с помощью функций VirtualAlloc и VirtualFree.
События HeapAlloc/HeapFree Отслеживает выделения, сделанные с помощью функций HeapAlloc и HeapFree.
События настраиваемого распределителя Отслеживает выделения, выполняемые пользовательскими распределителями памяти, инструментируемыми с помощью PixEvents.
События сбоя страницы Собирайте данные о сбоях страниц, возникающих при выполнении захвата. Ошибки страниц отображаются на временной шкале и в представлении сведений об элементе.
Стек вызовов для процессов без заголовка Сбор стеков вызовов для процессов, отличных от заглавного процесса (запущенного или подключенного процесса).
Сведения об изображении ядра Сбор данных, необходимых для отображения стеков вызовов в двоичных файлах ядра.
Создание ETL-файла вместо WPIX-файла Созданный ETL-файл может быть преобразован в WPIX-файл в файле | Меню преобразования. Этот параметр полезен при отправке отчетов об ошибках в команду PIX или если у вас есть другие инструменты для обработки данных ETW.

Программные фиксации

Вы можете программно взять запись с помощью WinPixEventRuntime. Дополнительные сведения см. в блоге о программном захвате.

Профилирование ЦП

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

Существует несколько записей блога, которые подробно охватывают эти функции:

Профилирование GPU

Возникает ли у вашего приложения периодические падения кадров? Чрезмерное использование VRAM? Неожиданные операции обмена страницами между системной памятью и видеопамятью? Функции профилирования GPU в PIX помогут вам добраться до конца этих распространенных и сложных ситуаций.

Время gpu

Включите параметр времени GPU при создании захвата, чтобы собрать данные о времени работы GPU. В представлении временной шкалы можно найти полосы для каждой очереди GPU (в Селекторе полос можно быстро закрепить эти полосы с настройкой закрепления очередей API). Эти полосы содержат несколько подполосы

  • События PIX (GPU): иерархические, определяемые приложением рабочие области GPU. См. раздел PixEvents.
  • Выполнения GPU: выполнение соответствует заданиям на уровне API; например, с помощью ExecuteCommandLists.
  • Работа GPU: любая работа, выполняемая на GPU, например: "Отрисовка", "Выполнения", "Копирование".
  • Маркеры PIX (GPU): определяемые приложением маркеры. См. раздел PixEvents.

Когда вы выбираете событие в полосе, появляются стрелки, показывающие, где на процессоре возникло это событие. В меню параметров полосы также есть различные параметры визуализации (значок шестеренки рядом с именем полосы). Наиболее заметно, что параметры Сглаживание событий и Сглаживание работы GPU включены по умолчанию для экономии пространства, но вы можете захотеть увидеть полную иерархию событий PIX или параллелизацию работы GPU при погружении в определенный кадр.

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

Просмотр неуплощённых событий PIX GPU и выполнения GPU в дорожке очереди API со стрелкой, показывающей, какой поток ЦП отправил выполнение на GPU

Презентация и отображение сведений

Виртуальные синхронизации отображаются в виде маркеров в отдельной полосе мониторинга и можно найти в представлении сведений о диапазоне в другой категории.

Объекты памяти GPU и Direct3D

Включите параметр ресурсов GPU при захвате, чтобы собрать информацию о объектах Direct3D. Для графа общего использования памяти можно найти несколько счетчиков в представлении метрик. Вы можете настроить различные бюджетные линии, чтобы получить быструю идею о том, соответствуют ли вы целям использования памяти. Если вы найдете интересующую область, вы можете захотеть исследовать дальше, выбрав временной диапазон и щелкнув Масштабировать временную шкалу, чтобы выбрать диапазон в контекстном меню по правому щелчку, и установите для раскрывающегося списка 'Выбранный диапазон времени' значение Выбрать видимый диапазон.

Просмотр использования памяти объекта API D3D в представлении метрик

Совет

Установка стиля линии на "Квадрат" упрощает идентификацию мест выделения.

В Детали диапазона можно просмотреть различные сведения о объектах API Direct3D, таких как куча, ресурсы и объекты состояния конвейера. Чтобы упростить идентификацию любых подозрительных объектов, эта информация сгруппирована по времени их выделения и освобождения.

Просмотр объектов API D3D в подробном представлении диапазона

Место жительства

Сведения о вопросах, связанных с размещением, см. в Операции размещения, Перемещенные выделения и Миграция распределений в представлении 'Сведения о диапазоне'. Эти маркеры и события также отображаются в полосе Операции резиденции.

Операции проживания включают операции MakeResident и Evict (инициированные через API Direct3D 12), а также любые операции PageIn и PageOut (Дополнительные сведения см. в разделе "Место проживания"). Пониженные выделения происходят, когда графическое ядро (DXGK) не может выделить ресурс в виртуальной памяти GPU (из-за давления памяти или фрагментации). В этом случае DXGK также попытается выполнить миграцию выделения для этих пониженных выделений. Обратите внимание, что эти миграции являются дорогостоящими операциями, так как они требуют приостановки GPU.

Просмотр миграций распределения

Счетчики использования и отображения GPU

Включите параметр Capture SysMon counters, чтобы собрать счётчики, присутствующие в системном мониторе (или SysMon), который включает различные счётчики, связанные с производительностью GPU. В частности, существуют счетчики для:

  • Использование GPU с разбивкой на обработчик GPU для целевого процесса и всех процессов.
  • Данные презентации, такие как кадры в секунду (и обратное, в миллисекундах, MsBetweenPresents) и MsUntilRenderComplete (время между нынешним запуском и завершением работы GPU).
  • Сведения о памяти GPU, включая использование локальной и не локальной памяти, проживание и бюджеты.

Просмотр кадров в секунду и использование GPU в представлении метрик

Совет

Наведите указатель мыши на имена счетчиков в системном мониторе для описания.

Эти счетчики также можно отслеживать в режиме реального времени, используя запись времени или нажав кнопку "Начать сбор счетчиков" в представлении системного монитора . Графы могут быть перестроены, а счетчики можно добавлять или удалять динамически. Щелкните счетчики , чтобы просмотреть все доступные счетчики.

Просмотр графиков и счетчиков системного монитора

Win32 файловый ввод/вывод

См. запись в блоге по анализу производительности операций ввода-вывода файлов Win32 в измерениях времени.

Другие функции анализа