Partilhar via


Crie o perfil da CPU e GPU com capturas de temporização

** As capturas temporizadas combinam dados de perfilagem de CPU e GPU numa única captura para uma análise aprofundada da sua aplicação. Esses dados são coletados enquanto o jogo está em execução, e com sobrecarga mínima, para que você possa ver coisas como como o trabalho é distribuído pelos núcleos da CPU, a latência entre o trabalho gráfico que está sendo enviado pela CPU e executado pela GPU, quando ocorrem acessos de E/S de arquivos e alocações de memória, e assim por diante. Isso também inclui eventos, marcadores e contadores definidos pela aplicação através do PixEvents.

Fazer uma captura de tempo

Na visualização Conexão , inicie ou ligue-se ao processo desejado (garantindo que a opção relevante For GPU Capture esteja desmarcada).

Configure as suas opções de captura de cronometragem como necessário e, quando estiver pronto, clique no botão Iniciar Captura de Cronometragem para iniciar a gravação. Clique Parar a Captura de Tempo (ou encerre a sua aplicação) para encerrar a gravação. Após um breve período de processamento, a captura iniciará.

Opções de captura de temporização

Nome Descrição
Modo de captura Sequencial: Registre a totalidade dos eventos entre o início e a interrupção da captura.
Circular: Registre eventos em um buffer de tamanho fixo, salvando apenas os últimos n segundos de dados. Consulte este post do blog Circular Timing Captures para obter mais detalhes.
Amostras de CPU Realizar a perfilagem de amostras para ver onde a CPU está a gastar tempo. A taxa de amostragem é configurável.
Pilhas de chamadas em comutadores de contexto Colete pilhas de chamadas quando um thread alterna contextos.
Acessos a ficheiros Rastreie acessos a arquivos.
Temporizações da GPU Colete informações detalhadas de tempo sobre quando o trabalho da GPU é iniciado e interrompido.
Recursos da GPU Colete informações detalhadas sobre objetos D3D, como pilhas e recursos. Acompanhe também a residência da GPU, as alocações rebaixadas e as migrações de alocação.
Eventos VirtualAlloc/VirtualFree Rastreia alocações feitas através das funções VirtualAlloc e VirtualFree.
Eventos HeapAlloc/HeapFree Rastreia alocações feitas através das funções HeapAlloc e HeapFree.
Eventos de alocador de memória personalizados Rastreia as alocações feitas por alocadores de memória personalizados que foram instrumentados com PixEvents.
Eventos de falha de página Colete dados sobre falhas de página que ocorrem quando a captura está em execução. As falhas de página são mostradas na linha do tempo e na visualização de detalhes do elemento.
Pilhas de chamadas para processos sem título Capture pilhas de chamadas para processos diferentes do processo de título (o processo iniciado ou anexado ao processo).
Informações da imagem do kernel Coletar informações necessárias para mostrar os callstacks para binários do kernel.
Gerar arquivo .etl em vez de arquivo .wpix O arquivo .etl gerado pode ser convertido posteriormente em um arquivo .wpix no Arquivo | Menu Converter. Essa opção é útil ao relatar reproduções de bugs para a equipe do PIX ou se você tiver outras ferramentas para processar dados ETW.

Capturas programáticas

Você pode capturar programaticamente usando o WinPixEventRuntime. Para obter detalhes, consulte a postagem do blog Captura programática.

Criação de perfil da CPU

Ativar a opção Amostras de CPU ao fazer uma captura pode ajudá-lo a identificar funções lentas no caminho crítico do seu aplicativo, bem como encontrar problemas relacionados a esperas de threads e trocas de contexto. Você também poderá rastrear diferentes tipos de alocações (com a opção de captura apropriada ativada).

Há várias postagens de blog que abordam esses recursos em detalhes:

Criação de perfil de GPU

Seu aplicativo está enfrentando quedas de quadros intermitentes? Uso excessivo de VRAM? Operações de paginação inesperadas entre a memória do sistema e a VRAM? Os recursos de criação de perfil de GPU no PIX podem ajudá-lo a chegar ao fundo dessas situações comuns e difíceis de analisar.

Temporizações da GPU

Habilite a opção de tempos da GPU ao fazer uma captura para recolher dados de cronometragem do trabalho da GPU. Na visualização da Linha do Tempo, podes encontrar faixas para cada fila de GPU (no Seletor de Faixa, podes fixar rapidamente essas faixas com a configuração Filas de API fixadas). Essas faixas contêm várias subfaixas:

  • PIX Events (GPU): regiões hierárquicas definidas por aplicativos do trabalho da GPU. Consulte PixEvents.
  • Execuções GPU: As execuções correspondem a envios de trabalho no nível da API; por exemplo, via ExecuteCommandLists.
  • Trabalho da GPU: Qualquer trabalho que ocorra na GPU; por exemplo, Desenhos, Despachos, Cópias.
  • PIX Markers (GPU): marcadores definidos pelo aplicativo. Consulte PixEvents.

Ao selecionar um evento na pista, você verá setas mostrando onde na CPU esse evento se originou. Há também várias opções de visualização no menu de opções da pista (o ícone de engrenagem ao lado do nome da pista). Mais notavelmente, as opções Flatten Events e Flatten GPU Work estão habilitadas por padrão para preservar espaço, mas você pode querer ver a hierarquia completa de eventos PIX ou paralelização GPU Work ao mergulhar em um quadro específico.

Esses dados também estão disponíveis em forma de tabela por meio exibição Detalhes do intervalo selecionando a categoria relevante na lista suspensa Itens para mostrar.

Visualização de eventos de GPU PIX não nivelados e trabalho de GPU na faixa de fila de API, com uma seta mostrando qual thread de CPU enviou o trabalho da GPU

Informações de apresentação e exibição

Os Vsyncs são exibidos como marcadores numa faixa separada do Monitor e podem ser encontrados na visualização Detalhes do intervalo na categoria Outros .

Memória GPU e objetos Direct3D

Habilite a opção de recursos da GPU ao realizar uma captura para recolher informações sobre objetos Direct3D. Para representar graficamente o uso geral da memória, pode-se encontrar vários contadores na visualização métricas. Você pode configurar várias linhas de orçamento para ter uma ideia rápida se está atingindo suas metas de uso de memória. Quando encontrar uma área de interesse, poderá querer investigá-la mais a fundo ao selecionar o intervalo de tempo, clicando em Visualização de Zoom da Linha do Tempo para Selecionar Intervalo no menu de contexto com o botão direito do rato e configurando a lista suspensa Intervalo de Tempo Selecionado para Selecionar Intervalo Visível.

Visualizando o uso de memória de objeto da API D3D na visualização de Métricas

Dica

Definir o Estilo de Linha como Quadrado torna mais fácil ver onde as alocações são feitas.

Na exibição Detalhes do Intervalo, você pode exibir várias informações sobre objetos de API do Direct3D, como heaps, recursos e objetos de estado de pipeline. Para facilitar a identificação de objetos suspeitos, essas informações são agrupadas por quando foram alocadas e liberadas.

Visualização de Objetos da API D3D na Visualização de Detalhes do Intervalo

Residência

Para questões relacionadas com a residência, consulte as categorias de Operações de Residência , Alocações Rebaixadas , e Migrações de Alocação na vista de Detalhes do Intervalo . Esses marcadores e eventos também são mostrados na pista Residence Operations.

As operações de residência incluem as operações MakeResident e Evict (iniciadas através da API Direct3D 12), bem como quaisquer operações PageIn e PageOut (Para obter mais detalhes, consulte Residency). As alocações rebaixadas ocorrem quando o kernel gráfico (DXGK) não consegue alocar um recurso na VRAM da GPU (devido à pressão ou fragmentação da memória). Se isso acontecer, o DXGK também tentará executar migrações de alocação para essas alocações rebaixadas. Observe que essas migrações são operações caras, porque exigem a suspensão da GPU.

Visualizando migrações de alocação

Utilização da GPU e contadores de apresentação

Habilite a opção Capture SysMon contadores quando estiver a fazer uma captura para recolher contadores presentes no Monitor do Sistema (também conhecido como SysMon), que inclui vários contadores relacionados com o desempenho da GPU. Importa referir que existem contadores para:

  • A utilização da GPU é detalhada por mecanismo de GPU, tanto para o processo-alvo como para todos os processos.
  • Dados de apresentação, como fotogramas por segundo (e o inverso, em milissegundos, MsBetweenPresents) e MsUntilRenderComplete (tempo entre o início de uma apresentação e a conclusão do trabalho da GPU).
  • Informações de memória GPU, incluindo uso de memória local e não local, residência e orçamentos.

Visualização de quadros por segundo e utilização de GPU na vista de Métricas

Dica

Passe o cursor sobre os nomes dos contadores no Monitor do Sistema para obter uma descrição.

Esses contadores também podem ser monitorizados em tempo real, seja durante a captura de temporização ou ao clicar no botão Iniciar Recolha de Contadores na vista do Monitor do Sistema. Os gráficos podem ser reorganizados e os contadores podem ser adicionados ou removidos dinamicamente. Clique em Contadores para ver todos os contadores disponíveis.

Visualização de gráficos e contadores do Monitor do Sistema

E/S de arquivo Win32

Consulte a postagem do blog Analisando o desempenho de E/S do arquivo Win32 em Capturas de temporização.

Outras características de análise