Aracılığıyla paylaş


WDF ile Windows Performans Araç Seti'ni (WPT) kullanma

Windows 10'dan başlayarak, belirli bir Kernel-Mode Driver Framework (KMDF) veya User-Mode Driver Framework (UMDF) 2 sürücüsünün performans verilerini görüntülemek için Windows Performans Araç Seti'ni (WPT) kullanabilirsiniz.

WPT için Windows Sürücü Çerçeveleri (WDF) uzantıları nasıl yardımcı olabilir?

Performans içgörüleri elde etmek veya performans sorunlarını gidermek için WPT'yi kullanabilirsiniz. Örneğin:

  • Sürücünün WDF G/Ç isteği tamamlanma oranını, CPU kullanımını ve PnP ve güç geri çağırmalarında harcanan zamanı inceleyin.
  • UMDF 2 sürücüsünü benzer bir KMDF sürücüsüyle karşılaştırın ve UMDF'nin performans gereksinimlerinizi karşılayıp karşılamadığını belirleyin.
  • WDF G/Ç yolundaki performans aksaklıklarını tanımlayın.
  • Belirtilen bir callback'in hangi örneğinin uzun sürdüğünü belirleyin. Ardından nedenini anlamak için örnek cpu kullanımını inceleyin.
  • Cihazın D0 güç durumuna çok sık güç geçişi yapıp yapmadığını kontrol edin.

Başlangıç Yapmak

WPT, Windows Değerlendirme ve Dağıtım Seti'nin (ADK) bir parçasıdır. ADK'yi İndirme ve Windows ADK'yi yükleme kısmından yükleyebilirsiniz.

WPT iki ayrı araçdan oluşur: Windows Performans Kaydedicisi ve Windows Performans Çözümleyicisi (WPA). Bu konu başlığında, bir izleme kaydetmek için WPR'yi, sonra da izlemeyi yapılandırılabilir GUI biçiminde görüntülemek için WPA'yı kullanırız.

WDF sürücüsünün performansını ölçmek için Windows Performans Araç Seti'ni kullanmayı öğrenmek için aşağıdaki videoyu izleyin veya videonun altındaki adımları okuyun. Video ve adımlar aynı yordamı kapsar.

WDF sürücüsü için olay günlüğünü kaydetme ve görüntüleme

  1. Henüz yüklü değilse sürücünüzü yükleyin.

  2. Yükseltilmiş bir komut isteminde aşağıdaki komutu girin.

    <WdfPerfEnhancedVerifier.cmd ServiceName><UMDF veya KMDF>

    Not WdfPerfEnhancedVerifier.cmd WPT'yi yüklediğiniz konumdan kopyalanmalıdır. WPT'yi bir geliştirme makinesine yüklediyseniz, betiği WPT yükleme dizininden hedef makineye kopyalamanız gerekir.

Bu betik, 4. adımda ETW sağlayıcısı etkinleştirildiğinde çerçevenin performans analizini etkinleştirmek için gereken olayları günlüğe kaydedebilmesi için belirtilen sürücü için kayıt defteri girdilerini ayarlar.

  1. Bilgisayarı yeniden başlatın.

  2. Yükseltilmiş bir komut isteminde aşağıdaki komutu girin.

    Wpr.exe-Start WdfTraceLoggingProvider -filemode

    Bu komut, WDF için ETW sağlayıcısını etkinleştirir. Bilgisayar bir iz kaydı tutmaya başlar.

    Not 2. adımda olduğu gibi, Wpr.exe WPT'yi yüklediğiniz konumdan kopyalanmalıdır. WpT'yi bir geliştirme makinesine yüklediyseniz, bu dosyaları WPT yükleme dizininden hedef makineye kopyalayın.

    Masaüstü sürümleri için Windows 10'da (Home, Pro, Enterprise ve Education), izlemeleri kaydetmek için bir GUI sağlayan Wprui.exeile de izlemenin başlatılabileceğini unutmayın. Diğer seçenekler'in altında Kaynak Analizi'ni genişletin ve WDF Sürücü Etkinliği'ni seçin.

  3. İlgilendiğiniz senaryoyu uygulayın.

  4. ETW izleme oturumunu durdurma: MyPerfTrace.etlWpr.exe -Stop

  5. Windows Performans Çözümleyicisi görüntüleyicisinde olay izleme günlüğünü açın:

    Wpa.exe MyPerfTrace.etl

Aynı sürücü için başka bir izleme yakalamak için yeni bir izleme başlatmak ve durdurmak için Wpr.exe kullanın. Farklı bir sürücüye ilişkin bir izleme yakalamak için önce yeni sürücü için WdfPerfEnhancedVerifier.cmd yeniden çalıştırın.

İzi analiz etme

Sürücünün performansını analiz etmeye başlamak için sol taraftaki Grafik Gezgini'ni bulun, Hesaplama kategorisini açın ve ardından ÇÖZÜMLEME sekmesinin altındaki UMDF veya KMDF grafiğini ana çalışma alanına sürükleyin. Bu ekran görüntüsünde Graf Gezgini bölmesi gösterilmektedir:

Windows Performans Çözümleyicisi'nde Grafik Gezgini bölmesinin ekran görüntüsü.

UMDF için ayrılmış bir tablo ve KMDF sürücüleri için başka bir tablo vardır.

UMDF G/Ç İstek Grafiği ve özet tablosu

WPT, WDF G/Ç isteklerinin tamamlanma aktarım hızını iki şekilde görüntüleyebilir.

  • Saniye başına tamamlayan G/Ç isteklerinin sayısı
  • Her G/Ç isteğinin süre süresi (Gantt grafiği olarak biçimlendirilmiş)

Aşağıdaki ekran görüntüsünde CPU ve UMDF G/Ç isteği performansına yönelik örnek özet grafikler ve tablolar gösterilmektedir. UMDF G/Ç İsteği Tamamlanma Hızı grafiğinde saniye başına istek sayısı y ekseninde gösterilir.

UMDF G/Ç İstekleri ve CPU Kullanımı (Örneklenmiş) için örnek özet grafiklerin ekran görüntüsü.

Özet tablosunda çoğu sütun kendi kendine açıklayıcıdır, ancak dikkate alınacak birkaç nokta vardır. WdfDevice sütunu G/Ç isteğiyle ilişkili WDFDEVICE tanıtıcısını içerir. ActivityID, G/Ç isteği için benzersiz bir tanımlayıcı içerir. Çerçeve, sürücüye bir G/Ç isteği teslim ettiğinde bu tanımlayıcıyı oluşturur. Bir etkinlik tanımlayıcısı ilgili IRP ile zaten ilişkiliyse, çerçeve bu tanımlayıcıyı kullanır. Daha fazla bilgi için bkz. Etkinlik Tanımlayıcılarını Kullanma.

Giriş zamanı, çerçevenin isteği sürücüye teslim ettiği zamana işaret eden izleme zaman damgasıdır; çıkış zamanı ise, sürücü WdfRequestComplete veya benzeri bir yöntemi çağırarak isteği tamamladığında alınan zaman damgasıdır.

KMDF G/Ç İstek Grafiği ve özet tablosu

KmDF sürücüsü için G/Ç isteği bilgilerini gösteren benzer bir ekran görüntüsü aşağıdadır.

KMDF G/Ç isteği performansı grafiğinin ekran görüntüsü.

PnP Power geri çağırma grafiği ve özet tablosu

WPT, her PnP'nin ve güç geri çağırmasının işlem süresini de görüntüleyebilir. Aşağıdaki ekran görüntüsünde örnek KMDF sürücüsü ve örnek UMDF sürücüsü için EvtDeviceD0Entry, EvtDeviceD0Exit ve EvtDevicePrepareHardware geri çağırma süresi gösterilmektedir.

WdfDevice sütunu, geri çağırma ile ilişkili WDFDEVICE tanıtıcısını içerir. ActivityID, geri çağırma örneği için benzersiz bir tanımlayıcı içerir.

KMDF ve UMDF sürücüleri için PnP Güç geri çağırma grafiğinin ekran görüntüsü.

Hangi aramalar araçlandırılır?

Bu bölümde, yukarıda gösterilen grafikleri ve tabloları oluşturmak için hangi olayların kullanıldığı açıklanmaktadır.

Belirli bir sürücü için WdfPerfEnhancedVerifier.cmd çalıştırdıktan sonra, sistem belirtilen sürücünün bazı geri çağrılarını çağırdığında ve ayrıca belirtilen sürücü bazı çerçeve yöntemlerini çağırdığında çerçeve ETL izleme günlüğüne olayları kaydeder.

G/Ç isteklerinin ne zaman başlayacağını belirlemek için, çerçeve aşağıdaki geri çağırmaları çağırdığında olayları kaydeder:

Çerçeve ayrıca sürücü aşağıdaki yöntemleri çağırdığında G/Ç isteği başlatma olaylarını da kaydeder:

G/Ç isteklerinin ne zaman tamamlanmasını belirlemek için, çerçeve sürücünün ne zaman çağırdığını izler:

Son olarak, PnP/Power geri çağrılarının süresini belirlemek için, framework, sürücü tarafından sağlanan aşağıdaki geri çağrıları ne zaman çağırdığını ve bunlar sona erdiğinde kaydeder.

Kaynaklar ve Sorun Giderme

  • WdfPerfEnhancedVerifier.cmd betiğini çalıştırdıktan sonra yeniden başlatmayı unutmayın.

  • Sürücünüzün bir olay günlüğü kaydedecek şekilde yapılandırılıp yapılandırılmadığını belirlemek için !WdfKd.wdfdriverinfo çekirdek hata ayıklayıcısı komutunu kullanın. Sürücü performans izleme için yapılandırılmışsa aşağıdaki gibi bir çıkış görürsünüz:

    !WdfKd.WdfDriverInfo Echo.sys
    …
    …
    ----------------------------------
    
    WDF Verifier settings for echo.sys is ON
      Enhanced verifier: performance analysis hooking ON
    ----------------------------------
    
  • Yalnızca geliştirme ve test amacıyla, sürücü kodu imzalama ilkesinin uygulanması geçici olarak devre dışı bırakılabilir. Daha fazla bilgi için bkz . Geliştirme ve Test Sırasında İmzasız Sürücü Paketi Yükleme.

Windows Performans Çözümleyicisi