사용자 도구

사이트 도구


kb:windowsperformancetoolkit

Windows Performance Toolkit

  • 마이크로소프트에서 제공하는 Profiling 관련 툴들
  • Vista 이상부터 사용 가능
  • 플랫폼 SDK에 포함되어 배포
  • ETW(Event Tracing for Windows, 기존의 성능 카운터랑 뭐가 틀린 건지…?)를 기반으로 동작하므로, 일반적인 프로파일러와 달리 인터럽트라던지, 하드 폴트라던지 이상한 것들까지 모니터링 가능하다.

Xperf

WPT 안에 포함되어 있는 프로파일 생성기

간단한 시작

xperf -on latency -stackwalk profile
  • -on latency:
    • 어떤 이벤트들을 추적할 것인가를 지정한다. 이벤트 플래그를 하나하나 지정해줄 수도 있고, 대표 그룹을 지정해줄 수도 있다. 조합도 가능하다.
    • 플래그나 그룹의 내용은 “xperf -providers k” 명령을 입력하면 자세히 나온다.
    • 여기서 사용한 latency 그룹은 PROC_THREAD+LOADER+DISK_IO+HARD_FAULTS+DPC+INTERRUPT+CSWITCH+PROFILE 플래그의 합이다.
  • -stackwalk profile:
    • 이벤트 발생시 스택 정보를 기록하겠다는 이야기다.
    • 이벤트 목록은 “xperf -help stackwalk” 명령을 입력하면 자세히 나온다.
    • 여기서 입력한 profile은 -on에서 준 profile 플래그와 연동하여, CPU 샘플링 이벤트 발생시 콜스택을 기록하겠다는 이야기다.

간단한 종료

xperf -d result.etl
  • -d result.etl
    • 지정된 파일에다 이때까지 기록한 내용들을 기록하고 종료한다.

주의할 점

64비트 시스템에서는 기본적으로 스택 워킹을 할 수 없다. 할려면 레지스트리를 수정해야 한다. 설치 매뉴얼 참고.

QueryStackwalk64.cmd:

@REG QUERY "HKLM\System\CurrentControlSet\Control\Session Manager\Memory Management" -v DisablePagingExecutive

TurnOnStackwalk64.cmd:

@REG ADD "HKLM\System\CurrentControlSet\Control\Session Manager\Memory Management" -v DisablePagingExecutive -d 0x1 -t REG_DWORD -f
@IF NOT %ERRORLEVEL% == 0 echo error: Could not configure system for 64-bit stackwalking.  Please run this script from an elevated administrator console.

TurnOffStackwalk64.cmd:

@REG ADD "HKLM\System\CurrentControlSet\Control\Session Manager\Memory Management" -v DisablePagingExecutive -d 0x0 -t REG_DWORD -f
@IF NOT %ERRORLEVEL% == 0 echo error: Could not remove 64-bit stackwalking configuration.  Please run this script from an elevated administrator console.

링크


kb/windowsperformancetoolkit.txt · 마지막으로 수정됨: 2014/11/11 15:00 저자 excel96