다음을 통해 공유


WDF와 함께 WPT(Windows Performance Toolkit) 사용

Windows 10부터 WPT(Windows Performance Toolkit)를 사용하여 지정된 KMDF(커널 모드 드라이버 프레임워크) 또는 UMDF(사용자 모드 드라이버 프레임워크) 2 드라이버에 대한 성능 데이터를 볼 수 있습니다.

WPT용 WDF(Windows 드라이버 프레임워크) 확장은 어떻게 도움이 될 수 있나요?

WPT를 사용하여 성능 인사이트를 얻거나 성능 문제를 해결할 수 있습니다. 예시:

  • 드라이버의 WDF I/O 요청 완료율, CPU 사용률 및 PnP 및 전원 콜백에 소요된 시간을 검사합니다.
  • UMDF 2 드라이버를 유사한 KMDF 드라이버와 비교하고 UMDF가 성능 요구 사항을 충족하는지 확인합니다.
  • WDF I/O 경로의 성능 결함을 식별합니다.
  • 지정된 콜백의 인스턴스가 오래 걸리는지 확인합니다. 그런 다음 샘플링된 CPU 사용량을 검사하여 그 이유를 이해합니다.
  • 디바이스가 D0 전원 상태의 전원을 너무 자주 전환하고 있는지 확인합니다.

시작

WPT는 Windows ADK(평가 및 배포 키트)의 일부입니다. 다운로드에서 ADK를 설치하고 Windows ADK를 설치할 수 있습니다.

WPT는 Windows 성능 레코더와 WPA(Windows 성능 분석기)의 두 가지 도구로 구성됩니다. 이 항목에서는 WPR을 사용하여 추적을 기록한 다음 WPA를 사용하여 구성 가능한 GUI 형식으로 추적을 봅니다.

Windows 성능 도구 키트를 사용하여 WDF 드라이버의 성능을 측정하는 방법을 알아보려면 다음 비디오를 시청하거나 비디오 아래 단계를 읽어보세요. 비디오와 단계는 동일한 절차를 다룹니다.

WDF 드라이버에 대한 이벤트 로그 기록 및 보기

  1. 아직 설치되지 않은 경우 드라이버를 설치합니다.

  2. 관리자 권한 명령 프롬프트에서 다음 명령을 입력합니다.

    <WdfPerfEnhancedVerifier.cmd ServiceName><UMDF 또는 KMDF>

    WPT 를 설치한 위치에서 WdfPerfEnhancedVerifier.cmd 복사해야 합니다. 개발 컴퓨터에 WPT를 설치한 경우 WPT 설치 디렉터리에서 대상 컴퓨터로 스크립트를 복사해야 합니다.

이 스크립트는 4단계에서 ETW 공급자를 사용할 때 성능 분석을 사용하도록 설정하는 데 필요한 이벤트를 프레임워크에서 기록하도록 지정된 드라이버에 대한 레지스트리 항목을 설정합니다.

  1. 컴퓨터를 다시 부팅합니다.

  2. 관리자 권한 명령 프롬프트에서 다음 명령을 입력합니다.

    Wpr.exe -Start WdfTraceLoggingProvider -filemode

    이 명령은 WDF에 대한 ETW 공급자를 사용하도록 설정합니다. 컴퓨터에서 추적 기록을 시작합니다.

    참고 2단계와 마찬가지로 Wpr.exe WPT를 설치한 위치에서 복사해야 합니다. 개발 컴퓨터에 WPT를 설치한 경우 WPT 설치 디렉터리에서 대상 컴퓨터로 이러한 파일을 복사합니다.

    데스크톱용 Windows 10 버전(Home, Pro, Enterprise 및 Education)에서는 추적을 기록하기 위한 GUI를 제공하는 Wprui.exe 추적을 시작할 수도 있습니다. 추가 옵션에서 리소스 분석을 확장하고 WDF 드라이버 작업을 선택합니다.

  3. 관심 있는 시나리오를 연습합니다.

  4. ETW 추적 세션 중지: Wpr.exe -Stop MyPerfTrace.etl

  5. Windows 성능 분석기 뷰어에서 이벤트 추적 로그를 엽니다.

    Wpa.exe MyPerfTrace.etl

동일한 드라이버에 대한 다른 추적을 캡처하려면 Wpr.exe 사용하여 새 추적을 시작하고 중지합니다. 다른 드라이버에 대한 추적을 캡처하려면 먼저 새 드라이버에 대한 WdfPerfEnhancedVerifier.cmd 다시 실행합니다.

추적 분석

드라이버의 성능 분석을 시작하려면 왼쪽에서 그래프 탐색기를 찾아 계산 범주를 연 다음 분석 탭 아래의 주 작업 영역으로 UMDF 또는 KMDF 그래프를 끕니다. 이 스크린샷은 그래프 탐색기 창을 보여줍니다.

Windows 성능 분석기 그래프 탐색기 창의 스크린샷

UMDF 전용 테이블과 KMDF 드라이버용 테이블이 있습니다.

UMDF I/O 요청 그래프 및 요약 테이블

WPT는 다음 두 가지 방법으로 WDF I/O 요청 완료 처리량을 표시할 수 있습니다.

  • 초당 완료되는 I/O 요청 수
  • 각 I/O 요청의 기간(Gantt 차트 형식)

다음 스크린샷은 CPU 및 UMDF I/O 요청 성능에 대한 샘플 요약 그래프 및 테이블을 보여 줍니다. UMDF I/O 요청 완료율 그래프에서 초당 요청 수가 y 축에 표시됩니다.

UMDF I/O 요청 및 CPU 사용량(샘플링)에 대한 샘플 요약 그래프의 스크린샷

요약 표에서 대부분의 열은 설명이 좋지만 주의해야 할 몇 가지 사항이 있습니다. WdfDevice 열에는 I/O 요청과 연결된 WDFDEVICE 핸들이 포함됩니다. ActivityID에는 I/O 요청에 대한 고유 식별자가 포함되어 있습니다. 프레임워크는 드라이버에 I/O 요청을 전달할 때 이 식별자를 만듭니다. 활동 식별자가 이미 해당 IRP와 연결된 경우 프레임워크는 해당 식별자를 사용합니다. 자세한 내용은 활동 식별자 사용을 참조 하세요.

진입 시간은 프레임워크가 드라이버에 요청을 전달한 추적 타임스탬프이며, 종료 시간은 드라이버가 WdfRequestComplete 또는 요청을 완료하기 위한 관련 메서드를 호출할 때의 타임스탬프입니다.

KMDF I/O 요청 그래프 및 요약 테이블

KMDF 드라이버에 대한 I/O 요청 정보를 보여 주는 유사한 스크린샷은 다음과 같습니다.

KMDF I/O 요청 성능에 대한 그래프의 스크린샷

PnP 파워 콜백 그래프 및 요약 테이블

WPT는 각 PnP 및 전원 콜백의 처리 시간을 표시할 수도 있습니다. 다음 스크린샷은 샘플 KMDF 드라이버 및 샘플 UMDF 드라이버에 대한 EvtDeviceD0Entry, EvtDeviceD0ExitEvtDevicePrepareHardware 콜백 기간을 보여줍니다.

WdfDevice 열에는 콜백과 연결된 WDFDEVICE 핸들이 포함됩니다. ActivityID에는 콜백 인스턴스에 대한 고유 식별자가 포함되어 있습니다.

KMDF 및 UMDF 드라이버에 대한 PnP Power 콜백 그래프의 스크린샷.

계측되는 호출은 무엇입니까?

이 섹션에서는 위에 표시된 그래프 및 테이블을 빌드하는 데 사용되는 이벤트를 설명합니다.

특정 드라이버에 대한 WdfPerfEnhancedVerifier.cmd 실행한 후 시스템에서 지정된 드라이버의 콜백 중 일부를 호출할 때 및 지정된 드라이버가 일부 프레임워크 메서드를 호출할 때 프레임워크는 ETL 추적 로그에 이벤트를 기록합니다.

I/O 요청이 시작되는 시기를 확인하기 위해 프레임워크는 다음 콜백을 호출할 때 이벤트를 기록합니다.

또한 프레임워크는 드라이버가 다음 메서드를 호출할 때 I/O 요청 시작 이벤트를 기록합니다.

I/O 요청이 완료되는 시기를 확인하기 위해 프레임워크는 드라이버가 다음을 호출할 때 추적합니다.

마지막으로 PnP/Power 콜백에 대한 콜백 기간을 결정하기 위해 프레임워크는 다음 드라이버 제공 콜백 루틴을 호출할 때와 완료할 때를 기록합니다.

리소스 및 문제 해결

  • WdfPerfEnhancedVerifier.cmd 스크립트를 실행한 후 다시 부팅해야 합니다.

  • 드라이버가 이벤트 로그 를 기록하도록 구성되어 있는지 확인하려면 ! WdfKd.wdfdriverinfo 커널 디버거 명령입니다. 드라이버가 성능 추적을 위해 구성된 경우 다음과 같은 출력이 표시됩니다.

    !WdfKd.WdfDriverInfo Echo.sys
    …
    …
    ----------------------------------
    
    WDF Verifier settings for echo.sys is ON
      Enhanced verifier: performance analysis hooking ON
    ----------------------------------
    
  • 개발 및 테스트 목적으로만 드라이버 코드 서명 정책의 적용을 일시적으로 사용하지 않도록 설정할 수 있습니다. 자세한 내용은 개발 및 테스트 중에 서명되지 않은 드라이버 패키지 설치를 참조하세요.

Windows Performance Analyzer