Usando o WPT (Windows Performance Toolkit) com o WDF

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

Como as extensões do WDF (Windows Driver Frameworks) 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.
  • Identificar 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 de CPU de exemplo 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: Gravador de Desempenho do Windows e WPA (Windows Performance Analyzer). Neste tópico, usamos a 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, watch o vídeo a seguir ou leia as etapas abaixo do vídeo. O vídeo e as etapas abrangem o mesmo procedimento.

Gravando e exibindo um log de eventos para um driver WDF

  1. Instale o driver, se ele 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>

    Nota WdfPerfEnhancedVerifier.cmd deve ser copiado do local em que você instalou o WPT. Se você instalou o WPT em um computador de desenvolvimento, precisará copiar o script do diretório de instalação do WPT para o computador de destino.

Esse script define entradas de 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 inicia a gravação de um rastreamento.

    Nota Como na etapa 2, Wpr.exe deve ser copiado do local em que você instalou o WPT. Se você instalou o WPT em um computador de desenvolvimento, copie esses arquivos do diretório de instalação do WPT para o computador de destino.

    Em 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 rastreamentos de gravação. Em mais opções, expanda Análise de Recursos e selecione Atividade do Driver do WDF.

  3. Exerça seu cenário de interesse.

  4. Parar a sessão de rastreamento 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 rastreamento

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

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

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

Grafo 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 do tempo de cada solicitação de E/S (formatada como um gráfico de Gantt)

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

Captura de tela de grafos de resumo de exemplo para solicitações de E/S umDF e uso de 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.

O tempo 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 chamado WdfRequestComplete ou um método relacionado para concluir a solicitação.

Grafo de solicitação de E/S do 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 grafo para o desempenho da solicitação de E/S do KMDF.

Gráfico de retorno de chamada do PnP Power 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 grafo de retorno de chamada do PnP Power para drivers KMDF e UMDF.

Quais chamadas são instrumentadas?

Esta seção descreve quais eventos são usados para criar os grafos 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 da 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 acompanha 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

  • Reinicialize 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 do driver pode ser temporariamente desabilitada. Para obter mais informações, consulte Instalando um pacote de driver sem sinal durante o desenvolvimento e o teste.

Windows Performance Analyzer