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
Instale o driver, se 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>
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.
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 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.
Exercite seu cenário de interesse.
Interrompa a sessão de rastreamento do 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 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 :
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.
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.
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.
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.