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
Instale o driver, se ele ainda não estiver instalado.
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.
Reinicialize o computador.
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.
Exerça seu cenário de interesse.
Parar a sessão de rastreamento etw: Wpr.exe -Stop MyPerfTrace.etl
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:
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.
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.
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.
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.
Tópicos relacionados
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de