Dela via


Använda Windows Performance Toolkit (WPT) med WDF

Från och med Windows 10 kan du använda WINDOWS Performance Toolkit (WPT) för att visa prestandadata för en viss Kernel-Mode Driver Framework (KMDF) eller User-Mode Driver Framework (UMDF) 2-drivrutinen.

Hur kan WDF-tillägg (Windows Driver Frameworks) för WPT hjälpa till?

Du kan använda WPT för att få prestandainsikter eller felsöka prestandaproblem. Till exempel:

  • Granska drivrutinens slutförandefrekvens för I/O-begäranden för WDF, processoranvändning och tid i PnP och återanrop av ström.
  • Jämför en UMDF 2-drivrutin med en liknande KMDF-drivrutin och avgör om UMDF uppfyller dina prestandakrav.
  • Identifiera prestandastörningar i WDF:s I/O-sökväg.
  • Ta reda på vilken instans av ett givet återanrop som tar lång tid. Granska sedan cpu-exempelanvändningen för att förstå varför.
  • Kontrollera om enheten gör strömövergångar in och ut ur D0-strömtillståndet för ofta.

Komma igång

WPT är en del av Windows Assessment and Deployment Kit (ADK). Du kan installera ADK från Ladda ned och installera Windows ADK-.

WPT består av två separata verktyg: Windows Performance Recorder och Windows Performance Analyzer (WPA). I det här avsnittet använder vi WPR för att registrera en spårning och sedan WPA för att visa spårningen i ett konfigurerbart GUI-format.

Om du vill lära dig hur du använder Windows Performance Toolkit för att mäta prestanda för en WDF-drivrutin kan du antingen titta på följande video eller läsa stegen under videon. Videon och stegen beskriver samma procedur.

Inspelning och visning av en händelselogg för en WDF-drivrutin

  1. Installera drivrutinen om den inte redan är installerad.

  2. I en kommandotolk med höga behörigheter ska du ange följande kommando.

    WdfPerfEnhancedVerifier.cmd<ServiceName><UMDF eller KMDF>

    Observera WdfPerfEnhancedVerifier.cmd ska kopieras från den plats där du installerade WPT. Om du har installerat WPT på en utvecklingsdator måste du kopiera skriptet från WPT-installationskatalogen till måldatorn.

Det här skriptet anger registerposter för den angivna drivrutinen så att ramverket loggar de händelser som krävs för att aktivera prestandaanalys när ETW-providern är aktiverad i steg 4.

  1. Starta om datorn.

  2. I en upphöjd kommandotolk anger du följande kommando.

    Wpr.exe-Start WdfTraceLoggingProvider -filemode

    Det här kommandot aktiverar ETW-providern för WDF. Datorn börjar spela in en logg.

    Observera Som i steg 2 bör Wpr.exe kopieras från den plats där du installerade WPT. Om du har installerat WPT på en utvecklingsdator kopierar du filerna från WPT-installationskatalogen till måldatorn.

    På Windows 10 för skrivbordsversioner (Home, Pro, Enterprise och Education) kan du också starta spårningen med Wprui.exe, som tillhandahåller ett GUI för att registrera spårningar. Under Fler alternativ expanderar du Resursanalys och väljer WDF-drivrutinsaktivitet.

  3. Utöva det scenario som intresserar dig.

  4. Stoppa ETW-spårningssessionen: Wpr.exe -Stop MyPerfTrace.etl

  5. Öppna händelsespårningsloggen i Visningsprogrammet för Windows Performance Analyzer:

    Wpa.exe MyPerfTrace.etl

Om du vill samla in en annan spårning för samma drivrutin använder du Wpr.exe för att starta och stoppa en ny spårning. Om du vill samla in en spårning för en annan drivrutin kör du först om WdfPerfEnhancedVerifier.cmd för den nya drivrutinen.

Analysera spårningen

Om du vill börja analysera drivrutinens prestanda hittar du Graph Explorer- till vänster, öppnar kategorin Computation och drar sedan DIAGRAMMET UMDF eller KMDF till huvudarbetsytan under fliken Analysis. Den här skärmbilden visar fönstret Graph Explorer:

Skärmbild av fönstret Graph Explorer i Windows Performance Analyzer.

Det finns en dedikerad tabell för UMDF och en annan för KMDF-drivrutiner.

DIAGRAM och sammanfattningstabell för UMDF-I/O-begäran

WPT kan visa dataflödet för slutförande av WDF-I/O-begäranden på två sätt:

  • Antal I/O-begäranden som slutförs per sekund
  • Tidsåtgång för varje I/O-begäran (formaterad som ett Gantt-schema)

Följande skärmbild visar exempelsammanfattningsdiagram och tabeller för PROCESSOR- och UMDF I/O-begärandeprestanda. I diagrammet UMDF I/O-begärandens slutförandefrekvens visas antalet begäranden per sekund på y-axeln.

Skärmbild av exempelsammanfattningsdiagram för UMDF-I/O-begäranden och CPU-användning (exempel).

I sammanfattningstabellenär de flesta kolumnerna självförklarande, men det finns några saker att notera. Kolumnen WdfDevice innehåller WDFDEVICE-referensen som är associerad med I/O-begäran. ActivityID innehåller en unik identifierare för I/O-begäran. Ramverket skapar den här identifieraren när den överför en I/O-begäran till drivrutinen. Om en aktivitetsidentifierare redan är associerad med motsvarande IRP använder ramverket den identifieraren. Mer information finns i Använda aktivitetsidentifierare.

Starttiden är tidsstämpeln för spårning när ramverket levererade begäran till drivrutinen, och sluttiden är tidsstämpeln när drivrutinen anropade WdfRequestComplete eller en relaterad metod för att slutföra begäran.

KMDF I/O-begäransdiagram och sammanfattningstabell

Här är en liknande skärmbild som visar I/O-begärandeinformation för en KMDF-drivrutin.

Skärmbild av ett diagram för KMDF I/O-begärandeprestanda.

PnP Power återkallningsdiagram och sammanfattningstabell

WPT kan också visa bearbetningstiden för varje PnP- och strömåterkallning. Följande skärmbild visar EvtDeviceD0Entry, EvtDeviceD0Exit och EvtDevicePrepareHardware varaktighet för återanrop för en KMDF-exempeldrivrutin och en UMDF-exempeldrivrutin.

Kolumnen WdfDevice innehåller WDFDEVICE-handtaget som är associerat med återanropet. ActivityID:et innehåller en unik identifierare för återuppringningsinstansen.

Skärmbild av en PnP Power-återuppringningsdiagram för KMDF- och UMDF-drivrutiner.

Vilka anrop är instrumenterade?

I det här avsnittet beskrivs vilka händelser som används för att skapa diagram och tabeller som visas ovan.

När du har kört WdfPerfEnhancedVerifier.cmd för en specifik drivrutin registrerar ramverket händelser i ETL-spårningsloggen när systemet anropar några av de angivna drivrutinsåteranropen, och även när den angivna drivrutinen anropar vissa ramverksmetoder.

För att avgöra när I/O-begäranden startar registrerar ramverket händelser när det anropar följande återanrop:

Ramverket registrerar även starthändelser för I/O-begäranden när drivrutinen anropar följande metoder:

För att avgöra när I/O-begäranden slutförs spårar ramverket när drivrutinen anropar:

Slutligen, för att fastställa återanropets varaktighet för PnP/Power-återanrop, registrerar ramverket när det anropar följande återanropsrutiner som tillhandahålls av drivrutinen och när de är klara:

Resurser och felsökning

  • Se till att starta om när du har kört skriptet WdfPerfEnhancedVerifier.cmd.

  • Om du vill ta reda på om drivrutinen är konfigurerad för att registrera en händelselogg använder du ! WdfKd.wdfdriverinfo kernel debugger-kommando. Om drivrutinen har konfigurerats för prestandaspårning visas utdata så här:

    !WdfKd.WdfDriverInfo Echo.sys
    …
    …
    ----------------------------------
    
    WDF Verifier settings for echo.sys is ON
      Enhanced verifier: performance analysis hooking ON
    ----------------------------------
    
  • Endast i utvecklings- och testningssyfte kan tillämpningen av principen för signering av drivrutinskod tillfälligt inaktiveras. Mer information finns i Installera ett osignerat drivrutinspaket under utveckling och test.

Windows Performance Analyzer