Compartilhar via


Usando o WPT (Kit de Ferramentas de Desempenho do Windows) com o WDF

A partir do Windows 10, você pode usar o WPT (Windows Performance Toolkit) para exibir dados de desempenho de um determinado driver KMDF (Kernel-Mode Driver Framework) ou UMDF (User-Mode Driver Framework) 2.

Como as extensões do Windows Driver Frameworks (WDF) para WPT podem ajudar?

Você pode usar o WPT para obter insights de desempenho ou solucionar problemas de desempenho. Por exemplo:

  • Examine a taxa de conclusão da solicitação de E/S do WDF do driver, a utilização da CPU e o tempo gasto em PnP e retornos de chamada de energia.
  • Compare um driver UMDF 2 com um driver KMDF semelhante e determine se o UMDF atende aos seus requisitos de desempenho.
  • Identifique falhas de desempenho no caminho de E/S do WDF.
  • Determine qual instância de um determinado retorno de chamada está demorando muito. Em seguida, examine o uso da CPU de amostra para entender o motivo.
  • Verifique se o dispositivo está fazendo transições de energia dentro e fora do estado de energia D0 com muita frequência.

Introdução

O WPT faz parte do ADK (Kit de Avaliação e Implantação do Windows). Você pode instalar o ADK em Baixar e instalar o Windows ADK.

O WPT consiste em duas ferramentas separadas: Windows Performance Recorder e Windows Performance Analyzer (WPA). Neste tópico, usamos o WPR para registrar um rastreamento e, em seguida, o WPA para exibir o rastreamento em um formato de GUI configurável.

Para saber como usar o Kit de Ferramentas de Desempenho do Windows para medir o desempenho de um driver WDF, assista ao vídeo a seguir ou leia as etapas abaixo do vídeo. O vídeo e as etapas cobrem o mesmo procedimento.

Gravando e exibindo um log de eventos para um driver WDF

  1. Instale o driver, se ainda não estiver instalado.

  2. Em um prompt de comando com privilégios elevados, insira o comando a seguir.

    <WdfPerfEnhancedVerifier.cmd ServiceName><UMDF ou KMDF>

    Observe WdfPerfEnhancedVerifier.cmd deve ser copiado do local em que você instalou o WPT. Se você instalou o WPT em uma máquina de desenvolvimento, precisará copiar o script do diretório de instalação do WPT para a máquina de destino.

Esse script define entradas do Registro para o driver especificado para que a estrutura registre os eventos necessários para habilitar a análise de desempenho quando o provedor ETW estiver habilitado na etapa 4.

  1. Reinicialize o computador.

  2. Em um prompt de comando com privilégios elevados, insira o comando a seguir.

    Wpr.exe -Start WdfTraceLoggingProvider -filemode

    Esse comando habilita o provedor ETW para WDF. O computador começa a gravar um rastreamento.

    Observação Como na etapa 2, Wpr.exe deve ser copiado do local em que você instalou o WPT. Se você instalou o WPT em uma máquina de desenvolvimento, copie esses arquivos do diretório de instalação do WPT para a máquina de destino.

    No Windows 10 para edições da área de trabalho (Home, Pro, Enterprise e Education), você também pode iniciar o rastreamento com Wprui.exe, que fornece uma GUI para registrar rastreamentos. Em mais opções, expanda Análise de Recursos e selecione Atividade do Driver WDF.

  3. Exercite seu cenário de interesse.

  4. Interrompa a sessão de rastreamento do ETW: Wpr.exe -Stop MyPerfTrace.etl

  5. Abra o log de rastreamento de eventos no visualizador do Windows Performance Analyzer:

    Wpa.exe MyPerfTrace.etl

Para capturar outro rastreamento para o mesmo driver, use Wpr.exe para iniciar e parar um novo rastreamento. Para capturar um rastreamento para um driver diferente, primeiro execute novamente WdfPerfEnhancedVerifier.cmd para o novo driver.

Analisando o traço

Para começar a analisar o desempenho do driver, localize o Explorador do Graph à esquerda, abra a categoria Computação e arraste o gráfico UMDF ou KMDF para a área de trabalho principal, na guia Análise . Esta captura de tela mostra o painel do Explorador do Graph :

Captura de tela do painel Explorador do Graph no Windows Performance Analyzer.

Há uma tabela dedicada para UMDF e outra para drivers KMDF.

Gráfico de solicitação de E/S do UMDF e tabela de resumo

O WPT pode exibir a taxa de transferência de conclusão da solicitação de E/S do WDF de duas maneiras:

  • Número de solicitações de E/S concluídas por segundo
  • Duração de cada solicitação de E/S (formatada como um gráfico de Gantt)

A captura de tela a seguir mostra gráficos e tabelas de resumo de exemplo para desempenho de solicitação de E/S da CPU e UMDF. No gráfico Taxa de conclusão de solicitação de E/S do UMDF, o número de solicitações por segundo é mostrado no eixo y.

Captura de tela de gráficos de resumo de exemplo para solicitações de E/S do UMDF e uso da CPU (amostrado).

Na tabela de resumo, a maioria das colunas é autoexplicativa, mas há algumas coisas a serem observadas. A coluna WdfDevice contém o identificador WDFDEVICE associado à solicitação de E/S. O ActivityID contém um identificador exclusivo para a solicitação de E/S. A estrutura cria esse identificador quando entrega uma solicitação de E/S ao driver. Se um identificador de atividade já estiver associado ao IRP correspondente, a estrutura usará esse identificador. Para obter mais informações, consulte Usando identificadores de atividade.

A hora de entrada é o carimbo de data/hora de rastreamento quando a estrutura entregou a solicitação ao driver e a hora de saída é o carimbo de data/hora quando o driver chamou WdfRequestComplete ou um método relacionado para concluir a solicitação.

Gráfico de solicitação de E/S KMDF e tabela de resumo

Aqui está uma captura de tela semelhante mostrando informações de solicitação de E/S para um driver KMDF.

Captura de tela de um gráfico para o desempenho da solicitação de E/S do KMDF.

Gráfico de retorno de chamada de energia PnP e tabela de resumo

O WPT também pode exibir o tempo de processamento de cada PnP e retorno de chamada de energia. A captura de tela a seguir mostra a duração do retorno de chamada EvtDeviceD0Entry, EvtDeviceD0Exit e EvtDevicePrepareHardware para um driver KMDF de exemplo e um driver UMDF de exemplo.

A coluna WdfDevice contém o identificador WDFDEVICE associado ao retorno de chamada. O ActivityID contém um identificador exclusivo para a instância de retorno de chamada.

Captura de tela de um gráfico de retorno de chamada de energia PnP para drivers KMDF e UMDF.

Quais chamadas são instrumentadas?

Esta seção descreve quais eventos são usados para criar os gráficos e tabelas mostrados acima.

Depois de executar WdfPerfEnhancedVerifier.cmd para um driver específico, a estrutura registra eventos no log de rastreamento ETL quando o sistema chama alguns dos retornos de chamada do driver especificado e também quando o driver especificado chama alguns métodos de estrutura.

Para determinar quando as solicitações de E/S são iniciadas, a estrutura registra eventos quando chama os seguintes retornos de chamada:

A estrutura também registra eventos de início de solicitação de E/S quando o driver chama os seguintes métodos:

Para determinar quando as solicitações de E/S são concluídas, a estrutura rastreia quando o driver chama:

Por fim, para determinar a duração do retorno de chamada para retornos de chamada PnP/Power, a estrutura registra quando chama as seguintes rotinas de retorno de chamada fornecidas pelo driver e quando elas terminam:

Recursos e solução de problemas

  • Certifique-se de reinicializar depois de executar o script WdfPerfEnhancedVerifier.cmd.

  • Para determinar se o driver está configurado para registrar um log de eventos, use o ! Comando do depurador de kernel WdfKd.wdfdriverinfo . Se o driver estiver configurado para rastreamento de desempenho, você verá uma saída como esta:

    !WdfKd.WdfDriverInfo Echo.sys
    …
    …
    ----------------------------------
    
    WDF Verifier settings for echo.sys is ON
      Enhanced verifier: performance analysis hooking ON
    ----------------------------------
    
  • Somente para fins de desenvolvimento e teste, a imposição da política de assinatura de código de driver pode ser desabilitada temporariamente. Para obter mais informações, consulte Instalando um pacote de driver não assinado durante o desenvolvimento e o teste.

Windows Performance Analyzer