Профилирование ЦП и 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 при погружении в определенный кадр.
Эти данные также доступны в табличной форме с помощью подробного представления диапазона, выбрав соответствующую категорию в раскрывающемся списке Элементы для отображения.
Презентация и отображение сведений
Виртуальные синхронизации отображаются в виде маркеров в отдельной полосе мониторинга и можно найти в представлении сведений о диапазоне в другой категории.
Объекты памяти GPU и Direct3D
Включите параметр ресурсов GPU при захвате, чтобы собрать информацию о объектах Direct3D. Для графа общего использования памяти можно найти несколько счетчиков в представлении метрик. Вы можете настроить различные бюджетные линии, чтобы получить быструю идею о том, соответствуют ли вы целям использования памяти. Если вы найдете интересующую область, вы можете захотеть исследовать дальше, выбрав временной диапазон и щелкнув Масштабировать временную шкалу, чтобы выбрать диапазон в контекстном меню по правому щелчку, и установите для раскрывающегося списка 'Выбранный диапазон времени' значение Выбрать видимый диапазон.
Совет
Установка стиля линии на "Квадрат" упрощает идентификацию мест выделения.
В Детали диапазона можно просмотреть различные сведения о объектах API Direct3D, таких как куча, ресурсы и объекты состояния конвейера. Чтобы упростить идентификацию любых подозрительных объектов, эта информация сгруппирована по времени их выделения и освобождения.
Место жительства
Сведения о вопросах, связанных с размещением, см. в Операции размещения, Перемещенные выделения и Миграция распределений в представлении 'Сведения о диапазоне'. Эти маркеры и события также отображаются в полосе Операции резиденции.
Операции проживания включают операции MakeResident и Evict (инициированные через API Direct3D 12), а также любые операции PageIn и PageOut (Дополнительные сведения см. в разделе "Место проживания"). Пониженные выделения происходят, когда графическое ядро (DXGK) не может выделить ресурс в виртуальной памяти GPU (из-за давления памяти или фрагментации). В этом случае DXGK также попытается выполнить миграцию выделения для этих пониженных выделений. Обратите внимание, что эти миграции являются дорогостоящими операциями, так как они требуют приостановки GPU.
Счетчики использования и отображения GPU
Включите параметр Capture SysMon counters, чтобы собрать счётчики, присутствующие в системном мониторе (или SysMon), который включает различные счётчики, связанные с производительностью GPU. В частности, существуют счетчики для:
- Использование GPU с разбивкой на обработчик GPU для целевого процесса и всех процессов.
- Данные презентации, такие как кадры в секунду (и обратное, в миллисекундах, MsBetweenPresents) и MsUntilRenderComplete (время между нынешним запуском и завершением работы GPU).
- Сведения о памяти GPU, включая использование локальной и не локальной памяти, проживание и бюджеты.
Совет
Наведите указатель мыши на имена счетчиков в системном мониторе для описания.
Эти счетчики также можно отслеживать в режиме реального времени, используя запись времени или нажав кнопку "Начать сбор счетчиков" в представлении системного монитора . Графы могут быть перестроены, а счетчики можно добавлять или удалять динамически. Щелкните счетчики , чтобы просмотреть все доступные счетчики.
Win32 файловый ввод/вывод
См. запись в блоге по анализу производительности операций ввода-вывода файлов Win32 в измерениях времени.
Другие функции анализа
- Статистические сравнения помогают определить, какие части иерархии событий PIX имеют статистически разные длительности для набора точек сравнения. Для получения дополнительной информации см. запись в блоге Функции статистического сравнения времени захвата.
- Настройка бюджетов производительности позволяет быстро определить проблемные области записи. Дополнительные сведения см. в записи блога Использование бюджетов производительности в представлении метрик захвата времени.
- Также см. запись блога о анализе критически важных путей в записи времени.