다음을 통해 공유


WPF용 성능 프로파일링 도구

업데이트: 2007년 11월

WPF는 응용 프로그램의 런타임 동작을 분석하고 적용할 수 있는 성능 최적화 형식을 결정하는 데 사용할 수 있는 성능 프로파일링 도구 집합을 제공합니다. 다음 표에서는 Windows SDK 도구 WPFPerf에 포함된 다섯 가지 성능 프로파일링 도구를 보여 줍니다.

도구

설명

Perforator

렌더링 동작을 분석하는 데 사용합니다.

Visual Profiler

시각적 트리의 요소를 통해 레이아웃 및 이벤트 처리와 같은 WPF 서비스의 사용을 프로파일링하는 데 사용합니다.

Working Set Analyzer

응용 프로그램의 작업 집합 특성을 분석하는 데 사용합니다.

Event Trace

이벤트를 분석하고 이벤트 로그 파일을 생성하는 데 사용합니다.

ETW Trace Viewer

ETW(Windows용 이벤트 추적) 로그 파일을 WPF 사용자 인터페이스 형식으로 기록, 표시 및 검색합니다.

이 항목에는 다음 단원이 포함되어 있습니다.

  • 성능 프로파일링 도구 사용
  • Perforator
  • Visual Profiler
  • Working Set Analyzer
  • Event Trace
  • ETW Trace Viewer
  • 기타 성능 도구 리소스
  • 관련 항목

성능 프로파일링 도구 사용

Windows SDK를 설치한 후 WPF 성능 제품군을 설치할 수 있는 옵션이 있습니다.

참고

성능 제품군을 설치하기 전에 이전 버전의 WPFPerf.exe를 제거합니다.

WPFPerf를 처음 실행하면 Add Tool 대화 상자가 나타납니다.

Add Tool 대화 상자

Add Tool 대화 상자

사용할 도구를 선택하고 OK를 클릭합니다.

참고

성능 프로파일링 도구를 사용하려면 관리 액세스 권한으로 사용자 계정이 실행 중이어야 합니다.

Perforator

Perforator는 렌더링 동작을 분석하기 위한 성능 프로파일링 도구입니다. Perforator 주 창에는 응용 프로그램의 일부에서 매우 특정한 렌더링 동작을 분석할 수 있는 옵션 집합이 표시됩니다.

Perforator 주 창

Perforator 주 창

Perforator를 사용하면 응용 프로그램의 실시간 렌더링 동작에 영향을 주는 여러 옵션을 설정할 수 있습니다.

옵션

설명

자주색 색조를 사용하여 소프트웨어 렌더링 그리기

자주색 색조가 있는 소프트웨어 렌더링 파이프라인을 사용하여 렌더링된 모든 영역을 그립니다. 여기에는 소프트웨어 렌더링 대상, 소프트웨어 3D 콘텐츠 및 기본 형식별 소프트웨어 대체(fallback)가 포함됩니다.

업데이트 전 백 버퍼 지우기

각 그리기 작업 전에 응용 프로그램 창을 지웁니다.

변경 영역 업데이트 오버레이 표시

WPF에 의한 각 화면 업데이트가 다시 칠하기로 표시되도록 합니다. 이렇게 하면 응용 프로그램에서 영역이 다시 그려지는 시기와 위치를 볼 수 있습니다.

변경 영역 지원 사용 안 함

변경이 수행될 때마다 WPF가 전체 창을 다시 그리게 합니다. 일반적으로 변경된 창의 일부만 다시 그려집니다. 이 옵션을 사용하도록 설정하면 응용 프로그램이 훨씬 더 느리게 렌더링됩니다.

불투명 효과 사용 안 함

성능을 저하시킬 수 있는 불투명도가 사용되지 않도록 설정합니다.

기본 형식별 소프트웨어 대체(fallback) 사용 안 함

개별 렌더링 기본 형식에 대해 소프트웨어 대체(fallback)를 사용하지 않도록 설정합니다. 소프트웨어 중간 렌더링 대상 및 기타 소프트웨어 렌더링은 사용하지 않도록 설정할 수 없습니다.

고품질 이미지 크기 재조정 사용 안 함

큰 이미지를 더 작은 크기로 다시 조정하는 기능을 사용하지 않도록 설정합니다.

3차원 렌더링 사용 안 함

모든 3차원 렌더링 작업을 사용하지 않도록 설정합니다.

Enable Debug Control 옵션

Enable Debug Control 확인란을 사용하면 WPF 공유 메모리에 대한 액세스를 사용하거나 사용하지 않도록 설정할 수 있습니다. 기본적으로 Perforator는 시작 시에 이 옵션을 사용하도록 설정하고 종료 시에 사용하지 않도록 설정합니다. Perforator가 비정상적으로 종료된 경우 Perforator를 다시 시작하고 Enable Debug Control 확인란을 선택 취소하여 WPF 공유 메모리에 대한 액세스를 사용하지 않도록 설정합니다. 그런 다음 Perforator 및 프로파일링을 수행 중이던 WPF 응용 프로그램을 다시 시작합니다.

참고

이 옵션을 사용하도록 설정하면 WPF 응용 프로그램 실행 시에 메모리 사용이 약간 증가하고 성능이 약간 저하될 수 있습니다. Perforator에서 올바르게 이 옵션을 사용하지 않도록 설정하는지 확인해야 합니다.

레지스트리 키 설정

Enable Debug Control 확인란은 WPF 레지스트리 키 설정을 추가하거나 삭제합니다. 레지스트리 키 설정을 수동으로 추가하려면 명령 창에서 다음 명령을 실행합니다.

reg add HKLM\SOFTWARE\Microsoft\Avalon.Graphics /v EnableDebugControl /t REG_DWORD /d 1 /f

레지스트리 키 설정을 수동으로 삭제하려면 명령 창에서 다음 명령을 실행합니다.

reg delete HKLM\SOFTWARE\Microsoft\Avalon.Graphics /v EnableDebugControl /f

Perforator 사용

Perforator를 사용하려면 렌더링 동작을 분석할 WPF 응용 프로그램을 시작합니다. 응용 프로그램이 시작되고 나면 Perforator에서 Refresh 단추를 클릭합니다. 이제 WPF 응용 프로그램의 Perforator 목록 상자에 응용 프로그램이 나타나야 합니다. 분석할 응용 프로그램 및 렌더링 옵션을 선택합니다. 프레임 속도와 같은 Perforator 데이터 값은 응용 프로그램의 렌더링 동작을 즉시 반영합니다.

응용 프로그램 및 렌더링 옵션이 선택된 Perforator

옵션이 선택된 Perforator 주 창

다음 스크린 샷에서는 "자주색 색조를 사용하여 소프트웨어 렌더링 그리기" 및 "변경 영역 표시 지원" 렌더링 옵션이 사용하도록 설정된 PhotoDemo 샘플 응용 프로그램을 표시합니다.

렌더링 동작을 표시하는 PhotoDemo 샘플 응용 프로그램

Perforator 렌더링 옵션을 보여 주는 Photodemo 응용 프로그램

다음 단원에서는 렌더링과 관련된 주요 성능 문제와 Perforator 옵션 및 데이터 출력이 이러한 문제를 진단하는 데 도움을 줄 수 있는 방법에 대해 설명합니다.

소프트웨어 렌더링 방지

WPF 하드웨어 렌더링 파이프라인이 소프트웨어 렌더링 파이프라인보다 크게 빠르기 때문에 소프트웨어에서 렌더링되는 응용 프로그램 UI가 적을수록 응용 프로그램이 렌더링되는 속도가 빨라집니다. 일반적으로 소프트웨어에서 영역을 렌더링하는 데 걸리는 시간은 렌더링되는 픽셀 수에 비례하므로 소프트웨어 파이프라인을 사용하여 렌더링되는 큰 영역에 주의해야 합니다. 작은 영역은 크게 신경 쓰지 않아도 됩니다.

다음은 소프트웨어 렌더링 문제를 감지하는 데 도움이 될 수 있는 Perforator 옵션입니다.

  • 자주색 색조를 사용하여 소프트웨어 렌더링 그리기. 자주색 색조가 있는 소프트웨어 렌더링 파이프라인을 사용하여 렌더링된 모든 영역을 그립니다. 여기에는 소프트웨어 렌더링 대상, 소프트웨어 3D 콘텐츠 및 기본 형식별 소프트웨어 대체(fallback)가 포함됩니다.

  • 소프트웨어 렌더링 대상 수 계산. 전적으로 소프트웨어에서 실행 중인 전체 창 렌더링 대상 수를 계산합니다. 개수가 0이 아닌 경우 일반적으로 시스템 구성이나 계층화된 창 존재와 관련된 중요한 성능 문제를 나타냅니다. Microsoft Direct3D를 사용하도록 설정했는지(dxdiag 실행), 모든 모니터가 32 BPP(픽셀당 비트 수) 비트 깊이로 설정되었는지, Microsoft DirectX 9.0에서 그래픽 카드가 지원되는지 확인합니다.

  • 하드웨어 렌더링 대상 수 계산. 하드웨어에서 실행 중인 전체 창 렌더링 대상 수를 계산합니다. 이 수는 응용 프로그램에 대한 창 수(때때로 디스플레이 어댑터 수)와 같아야 합니다. 이는 응용 프로그램이 가능한 경우에 항상 하드웨어 가속되고 있다는 것을 나타냅니다.

많은 수의 중간 렌더링 대상 방지

중간 렌더링 대상. 콘텐츠를 화면에 그릴 준비를 하기 위해 WPF에서 그려야 하는 추가 이미지입니다.

  • 프레임당 최대 SW/HW IRT. 응용 프로그램의 임의 프레임 하나를 렌더링하기 위해 적용되고 있는 소프트웨어 또는 하드웨어 중간 렌더링 대상의 최대 개수를 표시합니다. 일반적으로 중간 렌더링 대상은 VisualDrawingBrush, VisualBrush, Opacity 또는 TileBrush의 바둑판 모드 사용으로 인해 발생합니다. 이 수가 너무 높은 경우 응용 프로그램을 렌더링하기 위해 WPF 런타임에서 많은 작업을 수행 중이라는 것을 나타낼 수 있습니다.

유용한 성능 메트릭

  • 변경 영역 추가 속도. 응용 프로그램에서 빠른 업데이트가 트리거되는 중이라는 것을 나타냅니다.

  • 프레임 속도. 응용 프로그램이 화면에 렌더링되고 있는 속도를 보고합니다. 애니메이션이 없는 응용 프로그램의 경우 필요할 경우를 제외하고는 변경 영역 최적화로 인해 그리기가 방지되어야 하므로 이 값은 0에 가까워야 합니다. 이 숫자를 추정 값으로 간주해야 합니다.

  • **예상 비디오 메모리 사용량.**WPF에 의해 직접 수행된 큰 비디오 메모리 할당을 추적합니다(질감 및 렌더링 대상). 렌더링 도중 지정된 비디오 드라이버에 의해 수행된 할당, 픽셀 또는 꼭지점 셰이더의 컴파일 및 로드에 의한 할당 또는 꼭지점 또는 인덱스 버퍼에 대한 할당은 추적하지 않습니다. 사용 가능한 질감 메모리 양을 초과할 경우 일반적으로 WPF 렌더링 논리가 소프트웨어로 넘어가고 여러 디스플레이(다중 모니터)는 응용 프로그램에 필요한 비디오 메모리 양을 배가시킵니다.

변경 영역 지원

WPF(Windows Presentation Foundation)이 필요에 따라 창의 일부만 업데이트하므로 언제든지 업데이트 중인 창의 일부를 시각화하면 도움이 될 수 있습니다. 다음은 업데이트 동작을 시각화하는 데 도움이 되는 옵션입니다.

  • **변경 영역 업데이트 오버레이 표시.**WPF에 의한 각 화면 업데이트가 다시 칠하기로 표시되도록 합니다. 이렇게 하면 실행 중인 응용 프로그램에서 다시 그려지는 영역과 그 시기를 볼 수 있습니다.

  • 렌더링 전 백 버퍼 지우기. 각 그리기 작업 전에 창이 지워지게 합니다.

  • 변경 영역 지원 사용 안 함. 변경된 창의 일부만 다시 그리는 대신에 변경이 수행될 때마다 WPF에서 전체 창을 다시 그리게 합니다. 이 옵션은 전체 창의 업데이트를 강제하는 데 유용할 수 있지만 응용 프로그램의 렌더링이 훨씬 느려지게 된다는 경고가 표시됩니다.

렌더링 기능 사용 안 함

Perforator에서는 성능을 많이 소비하는 작업을 사용하지 않게 설정하여 이러한 작업이 응용 프로그램에서 병목 현상을 일으키고 있는지 확인할 수 있습니다.

  • 불투명 효과 사용 안 함. 성능을 저하시킬 수 있는 불투명도가 사용되지 않도록 설정합니다. 일반적으로 이 성능 문제를 방지하려면 Button과 같은 상위 수준 개체 대신에 Brush와 같은 하위 수준 개체에서 불투명도를 설정하는 것을 고려합니다.

  • 기본 형식별 소프트웨어 대체(fallback) 사용 안 함. 개별 렌더링 기본 형식에 대해 소프트웨어 대체(fallback)를 사용하지 않도록 설정합니다. 소프트웨어 중간 렌더링 대상 및 기타 소프트웨어 렌더링은 사용하지 않도록 설정할 수 없습니다.

  • **고품질 이미지 크기 재조정 사용 안 함.**WPF 큰 이미지가 작은 크기로 표시되고 있는 경우 모양이 나아지도록 크기를 다시 조정합니다. 이 작업은 특히 많은 수의 이미지가 화면에서 줄어든 크기로 표시되는 응용 프로그램에서 성능을 많이 소비합니다. 이 옵션을 사용하면 이 크기 재조정을 사용하지 않도록 설정하여 성능 문제의 원인인지 여부를 확인할 수 있습니다. 이 문제를 방지하려면 이미지를 표시될 크기에 가까운 크기로 디코딩하는 것을 고려합니다.

  • 3차원 렌더링 사용 안 함. 모든 3차원 그리기 작업을 해제합니다.

Visual Profiler

Visual Profiler는 시각적 트리의 요소를 통해 레이아웃 및 이벤트 처리와 같은 WPF 서비스의 사용을 프로파일링하는 성능 도구입니다. 이 도구의 프로파일링 출력을 분석하여 성능 병목 현상을 일으킨 응용 프로그램의 시각적 요소를 확인할 수 있습니다. Visual Profiler 주 창에는 응용 프로그램을 프로파일링할 방법을 지정할 수 있는 옵션 집합이 표시됩니다.

  • 업데이트 간격. 프로파일링 도중 사용할 시간의 세분성입니다.

  • 오버레이 표시. 오버레이 표시 옵션을 사용하면 CPU 리소스 사용량을 표시할 수 있습니다. 더 짙은 빨간색 오버레이는 CPU 리소스가 더 크다는 것을 나타냅니다.

시각적 프로파일링 값

WPF Visual Profiler는 응용 프로그램에서 시각적 장면을 생성하는 데 사용되는 기본 빌딩 블록의 컨텍스트에서 성능 문제를 제공합니다. 이러한 빌딩 블록은 ButtonTextBlock 컨트롤과 같은 상위 수준 개체뿐만 아니라 LineEllipse 요소와 같은 하위 수준 개체를 포함합니다. 함수 이름의 호출 그래프와 관련하여 성능 문제를 설명하는 대신에 Visual Profiler는 표시 개체를 표현하여 이러한 문제를 설명합니다. 이는 Windows SDK 도구인 UI Spy가 정보를 나타내는 방법과 비슷합니다. 자세한 내용은 UI Spy(UISpy.exe)를 참조하십시오.

광범위한 WPF 성능 문제를 분석하려면 기본 WPF 서비스의 역할과 범위를 이해하는 것이 필요합니다. 이러한 서비스에는 레이아웃, 렌더링 및 애니메이션이 포함됩니다. Visual Profiler는 응용 프로그램 개체 간에 WPF 서비스가 할당되는 방법에 대한 그래픽 표현을 제공합니다. 예를 들어, Visual Profiler는 응용 프로그램 개체의 시각적 트리를 표시할 경우 개체에서 사용 중인 리소스의 상대적인 양을 나타내기 위해 개체에서 빨간색의 다양한 음영을 겹쳐서 표시합니다. 빨간색 오버레이가 더 짙은 개체는 빨간색 오버레이가 더 연한 개체보다 리소스의 많은 비율을 사용한다는 것을 나타냅니다. 더욱 중요한 사실은 Visual Profiler에서 개체가 소비하는 특정 WPF 리소스의 양을 세부적으로 보여 준다는 것입니다.

Visual Profiler 사용

Visual Profiler를 사용하려면 Start Profiling 단추를 클릭하고 Launch 또는 Attach을 선택합니다. Attach 옵션을 사용하려면 프로파일링하고 있는 응용 프로그램과 WPFPerf가 관리 액세스 권한으로 실행 중이어야 합니다. 또한 Attach 옵션에서는 오버레이 기능이 사용하지 않도록 설정되며 사용할 수 있는 이벤트가 더 적습니다. Launch 옵션을 사용하는 것이 좋습니다.

이벤트 탭을 사용하면 프로파일링할 응용 프로그램 및 요소 이벤트를 선택할 수 있습니다.

Visual Profiler 구성을 설정하여 다음 응용 프로그램 이벤트의 프로파일링을 사용하거나 사용하지 않도록 설정할 수 있습니다. 메서드인 이러한 이벤트는 메서드 이름 다음에 괄호로 묶인 클래스 이름이 옵니다. 예를 들어 Tick (TimeManager)은 TimeManager.Tick 메서드를 나타냅니다.

응용 프로그램 이벤트

설명

RenderMessageHandler (MediaContext)

렌더링 처리 단계를 시작합니다. 특히 TimeManager.Tick 및 MediaContext.Render 메서드를 호출합니다.

Rendering Thread

렌더링 스레드에서 렌더링 명령을 실행할 경우 발생합니다. 렌더링 바인딩된 응용 프로그램을 탐지하는 데 유용합니다.

Layout

측정, 정렬 및 렌더링 처리 단계 도중에 발생합니다.

UpdateRealizations

텍스트 및 비트맵 효과의 내부 비트맵 표현을 업데이트할 때 발생합니다.

Tick (TimeManager)

애니메이션이 틱할 때 발생합니다. 이 이벤트는 애니메이션 렌더링 처리기를 트리거할 수 있습니다.

UpdateEffectiveValue (DependencyObject)

속성 엔진이 DependencyProperty 값을 변경할 때 발생합니다.

Hit Testing

적중된 표시 개체를 확인하는 적중 테스트 처리 단계 도중에 발생합니다.

AnimatedRenderMessageHandler (MediaContext)

애니메이션이 사용하도록 설정된 경우 이 처리기는 애니메이션을 처리 및 업데이트하여 속성이 변경되고 렌더링이 발생하게 합니다.

Render (MediaContext)

렌더링 처리 단계 도중에 발생합니다. 이 메서드는 결국에 각 요소의 OnRender 메서드를 호출하며 모든 요소에 대한 OnRender의 총 비용을 이해하는 데 유용합니다. 이 이벤트는 VSP(Visual Studio Profiler) 파일에서 MediaContext.Render 메서드에 해당합니다.

FormatLineInternal (TextFormatterImp)

텍스트의 서식을 지정할 때 발생합니다.

MarkVisibleRealizations (Visual)

텍스트의 내부 비트맵 표현을 탐지할 때와 비트맵 효과를 업데이트해야 할 때 발생합니다.

Visual Profiler 구성을 설정하여 다음 요소 이벤트의 프로파일링을 사용하거나 사용하지 않도록 설정할 수 있습니다.

이벤트 요소

설명

Layout

측정, 정렬 및 렌더링 처리 단계 도중에 발생합니다.

MarkVisibleRealizations (Visual)

텍스트의 내부 비트맵 표현을 탐지할 때와 비트맵 효과를 업데이트해야 할 때 발생합니다.

UIElement.OnRender

UIElement 렌더링 작업입니다.

UIElement Layout

UIElement 레이아웃 작업입니다.

응용 프로그램 및 프로파일링 옵션 선택이 끝나면 OK 단추를 클릭하여 응용 프로그램 프로파일링을 시작합니다.

응용 프로그램과 Visual Profiler 도구를 나란히 실행하여 도구에서 변경 값을 살펴봅니다. 시각적 트리 계층을 확장하면 Grid 컨트롤과 같은 프로파일링할 특정 표시 개체를 선택할 수 있습니다. Visual Profiler의 CPU Usage 섹션에서는 개체 및 응용 프로그램별로의 WPF 서비스 사용에 대한 정확한 세부 정보가 제공됩니다. 요소의 CPU Utilization 데이터에는 다음이 나열됩니다.

  • Inclusive Time. 요소 및 요소의 모든 하위 항목에 대한 CPU 사용률입니다.

  • Exclusive Time. 요소에 대한 CPU 사용률입니다.

Visual Profiler 표시 출력

Visual Profiler 표시 출력

Visual Profiler는 개체에서 사용 중인 리소스의 상대적인 양을 나타내기 위해 시각적 트리의 개체에서 빨간색의 다양한 음영을 겹쳐서 표시합니다. 빨간색 오버레이가 더 짙은 개체는 빨간색 오버레이가 더 연한 개체보다 리소스의 많은 비율을 사용한다는 것을 나타냅니다.

Working Set Analyzer

Working Set Analyzer는 지정된 프로세스의 메모리 사용량에 대한 정보를 제공하는 WPF 성능 분석 도구입니다. 이 도구를 사용하면 특정 응용 프로그램 상태에서 응용 프로그램 메모리 사용량 정보의 스냅숏을 생성할 수 있습니다.

응용 프로그램의 작업 집합

응용 프로그램의 작업 집합은 최근에 참조된 해당 가상 주소 공간의 페이지 컬렉션입니다. 작업 집합에는 공유 데이터 및 전용 데이터가 모두 포함됩니다. 공유 데이터에는 사용자 DLL 및 시스템 DLL의 항목을 포함하여 응용 프로그램에서 실행하는 모든 명령이 들어 있는 페이지가 포함되어 있습니다. 작업 집합 크기가 증가하면 필요한 메모리도 증가합니다. 작업 집합에 대한 자세한 내용은 Process Working Set를 참조하십시오.

VaDump(Virtual Address Dump) 유틸리티

VaDump(Virtual Address Dump)는 지정된 프로세스의 메모리 사용량에 대한 정보를 포함하는 목록을 만듭니다. 이 도구는 다음 디렉터리에 있습니다.

~\Program Files\Microsoft Visual Studio 8\Common7\Tools\Bin\winnt

중요

시스템 실행 경로에 VaDump의 디렉터리 위치가 포함되어 있는지 확인해야 합니다. 그렇지 않을 경우 Working Set Analyzer가 올바르게 작동하지 않습니다.

Working Set Analyzer 사용

Working Set Analyzer를 사용하려면 프로파일링할 WPF 응용 프로그램을 시작합니다. Working Set Analyzer를 시작한 후 Select Process 옵션을 선택합니다.

Working Set Analyzer의 Select Process 대화 상자

작업 집합 뷰어 주 창

작업 집합을 분석할 프로세스를 선택한 다음 Capture 단추를 클릭합니다. Working Set Analyzer는 먼저 VaDump를 호출하여 메모리 사용량 정보를 생성합니다. 그런 다음 정보를 구문 분석하여 풍부한 그래픽 형식으로 제공합니다.

참고

작업 집합 데이터는 메모리 사용량의 정적 뷰를 나타냅니다. 응용 프로그램의 다양한 지점에서 작업 집합 데이터의 집합을 여러 개 생성하고 메모리 사용량의 차이를 비교할 수 있습니다.

작업 집합 데이터를 볼 준비가 된 경우 Working Set Analyzer는 동적 데이터, 시스템 데이터 및 응용 프로그램 모듈을 나타내는 트리 뷰를 생성합니다.

Working Set Analyzer 메모리 사용량 범주

작업 집합 뷰어 사용 범주

WPF 응용 프로그램의 경우 WPF 모듈 범주에는 WPF에 대한 시스템 고유의 모듈이 포함되어 있습니다. 표시할 범주를 클릭하면 파이 차트 집합이 표시됩니다. 예를 들어 WPF 모듈 범주를 클릭하면 창 왼쪽에 다음 정보가 표시됩니다.

WPF 모듈에 대한 Working Set Analyzer의 메모리 사용량 파이 차트

작업 집합 뷰어 메모리 사용 원형 차트

맨 위의 캡션에는 작업 집합 범주의 총 크기가 표시됩니다. 이 경우 WPF 모듈은 9160KB의 메모리 사용량을 나타냅니다. 이 파이 차트는 WPF 모듈 범주를 정의하는 모든 모듈의 개별 메모리 사용량을 나타냅니다.

참고

메모리 사용량 범주의 크기는 작업 집합 정보가 캡처되었던 시점의 응용 프로그램의 메모리 사용량을 반영합니다.

작은 테이블은 공유된 바이트, 공유 가능한 바이트 및 전용 바이트의 메모리 사용량을 나타냅니다.

Working Set Analyzer 메모리 사용량 테이블

작업 집합 뷰어 메모리 사용 원형 차트

공유된 바이트 범주는 다른 WPF 응용 프로그램에서 공유할 수 있는 메모리 양을 나타냅니다.

응용 프로그램 메모리 사용량 보기

응용 프로그램의 메모리 사용량을 보려면 작업 집합 트리 뷰의 기타 모듈 범주에서 실행 파일의 이름을 선택합니다.

Working Set Analyzer 메모리 사용량 범주

작업 집합 뷰어 사용 범주

Working Set Analyzer 파일 저장 및 다시 로드

현재 작업 집합 사용량 정보를 저장하려면 Working Set Analyzer의 주 메뉴에서 파일을 선택합니다. 그런 다음 Save VADump output 단추를 클릭합니다. 작업 집합 사용량 정보를 저장한 다음 Capture 단추를 클릭하여 메모리 사용량의 다른 스냅숏을 생성할 수 있습니다. VADump 콘텐츠를 포함하는 파일을 다시 로드하려면 Working Set Analyzer의 주 메뉴에서 파일을 선택합니다. 그런 다음 Open VADump output 단추를 클릭합니다.

타이머 지연을 사용하여 작업 집합 정보 캡처

Working Set Analyzer는 지정된 시간 간격 이후에 작업 집합 사용량 정보를 캡처할 수 있게 하는 시간 지연 기능을 제공합니다. Working Set Analyzer의 주 메뉴에서 Actions를 선택합니다. 그런 다음 Launch Process... 단추를 클릭합니다.

필요한 경우 Browse 단추를 사용하여 실행할 응용 프로그램을 지정합니다. 그런 다음 응용 프로그램에 대한 모든 인수를 입력합니다. 마지막으로 메모리 사용량 정보의 캡처를 지연시킬 시간(초)을 입력합니다. 그런 다음 Launch 단추를 클릭합니다. Working Set Analyzer 아래의 상태 텍스트에는 캡처할 때까지 남은 시간(초)이 카운트다운되며 이 기간 동안 응용 프로그램 상태를 수정할 수 있는 시간이 있습니다. 캡처가 완료되고 나면 상태 텍스트에는 "Done"이 표시됩니다.

Event Trace

ETW(Windows용 이벤트 추적)는 커널 또는 응용 프로그램 정의 이벤트를 로그 파일에 기록할 수 있도록 하는 효율적인 커널 수준의 추적 기능입니다. 실시간으로 또는 로그 파일에서 이벤트를 사용하여 응용 프로그램을 디버깅하거나 응용 프로그램에서 성능 문제가 발생하는 위치를 확인할 수 있습니다. WPF Event Trace 프로파일링 도구는 이벤트 로깅을 위해 ETW를 사용합니다. ETW에 대한 자세한 내용은 Event Tracing을 참조하십시오.

Event Trace는 WPF 성능 프로파일링 도구 제품군인 WPFPerf(WpfPerf.exe)의 일부입니다. 자세한 내용은 성능 프로파일링 도구 사용 단원을 참조하십시오.

Event Trace 사용

Event Trace 주 창에는 이벤트 로깅 정보를 추가, 저장 및 볼 수 있는 옵션 집합이 표시됩니다.

Event Trace 주 창

이벤트 추적 주 창

새 이벤트 로거 추가

새 이벤트 로거를 추가하려면 Event Trace 주 창에서 Add 단추를 클릭합니다. Add New Logger 대화 상자에는 정의할 정보 집합이 표시됩니다. Logger Name은 사용자에게 친숙한 로거 이름을 나타냅니다. GUID라는 레이블이 있는 드롭다운 목록 상자에서 이벤트 로거의 네 가지 유형 중 하나를 선택합니다.

  • NT 커널 로거

  • 공용 언어 런타임 가비지 수집

  • Windows Presentation Foundation - 성능 전용

  • Windows Presentation Foundation - 모두

WPF 이벤트 로거에는 두 가지 유형이 있습니다. "성능 전용" 버전은 "모두" 버전의 축소된 하위 집합입니다. Log File을 사용하면 이벤트 로그 파일의 파일 이름을 정의할 수 있습니다. "…" 레이블이 있는 단추를 클릭하여 파일 이름을 정의합니다. 이벤트 로그 파일에는 기본 파일 확장명 "etl"이 사용됩니다.

Level 옵션은 사용할 수 있는 다음과 같은 심각도 수준을 나타냅니다. 숫자가 높으면 더 낮은 수준을 갖게 된다는 것을 의미합니다. 예를 들어 3을 지정할 경우 모든 경고, 오류 및 중요 이벤트를 받게 됩니다.

Level

설명

1

비정상 종료 이벤트입니다.

2

심각한 오류 이벤트입니다.

3

할당 오류와 같은 경고 이벤트입니다.

4

엔트리 또는 종료 이벤트와 같은 오류가 아닌 이벤트입니다.

5

세부 추적 이벤트입니다.

Flags 옵션은 WPF 이벤트의 클래스를 지정합니다. 대부분의 경우 기본값으로 충분합니다.

새 이벤트 로깅 정보 만들기가 끝나면 Add New Logger 대화 상자의 Add 단추를 클릭하여 로거를 Event Trace에 추가합니다. 추가 이벤트 로거를 만들어 Event Trace에 추가할 수 있습니다. 모든 이벤트 로거의 추가가 끝나면 Done 단추를 클릭합니다.

Add New Logger 대화 상자

Add New Logger 대화 상자

특정 이벤트 로거를 제거하려면 목록 상자에서 이벤트 로거를 선택하고 Remove 단추를 클릭합니다. 모든 이벤트 로거를 제거하려면 Clear 단추를 클릭합니다.

이벤트 로깅 사용

Event Trace 주 창의 이벤트 로거 목록에서 이벤트 로거를 선택합니다. Start 단추를 클릭하여 로깅을 사용하도록 설정합니다. 이벤트 로거의 상태가 Enabled로 표시되어야 합니다.

이벤트 로거가 선택된 Event Trace 주 창

이벤트 로거가 있는 이벤트 추적 주 창

응용 프로그램에 대한 이벤트 로깅이 끝나면 Stop 단추를 클릭합니다. 이벤트 로깅 정보를 캡처했는지 확인하기 위해 이벤트 로그 파일을 볼 수 있습니다. 이벤트 로그 파일을 보려면 Open Log 단추를 클릭합니다.

이벤트 로그 정보가 있는 Event Trace 주 창

이벤트 로깅 정보가 있는 이벤트 추적 주 창

이벤트 로그 파일에는 각 이벤트에 대한 다섯 개의 정보 열이 나열됩니다.

설명

Time

CPU Tick의 현재 시간입니다.

Guid

이벤트에 해당하는 GUID입니다.

Name

이벤트 이름입니다.

Event type

정보, 시작 또는 종료 이벤트입니다. 시작 이벤트는 대응하는 종료 이벤트가 있습니다.

Data

특정 이벤트 형식과 관련된 데이터입니다.

이 형식의 이벤트 로그 정보는 별로 유용하지 않습니다. WPFETW Trace Viewer 프로파일링 도구를 사용하여 Event Trace로 만들어진 이벤트 로그 파일의 출력을 분석합니다.

ETW Trace Viewer

ETW(Windows용 이벤트 추적)는 사용자 모드 응용 프로그램에 의해 발생한 이벤트를 추적 및 기록하기 위한 메커니즘을 제공합니다. Windows 운영 체제에서 구현되는 ETW는 빠르고 다양하며 신뢰할 수 있는 이벤트 추적 기능 집합을 개발자에게 제공합니다. Event Trace 도구를 사용하면 WPF 기능과 관련된 사용자 인터페이스 형식으로 ETW 로그 파일을 기록, 표시 및 탐색할 수 있습니다.

ETW Trace View 주 창

Trace View 주 창

ETW Trace Viewer 사용

WPFEvent Trace 프로파일링 도구를 사용하여 만들고 저장한 ETW 로그 파일을 볼 수 있습니다. 이벤트 로그 파일에는 기본 파일 확장명 "etl"이 사용됩니다. ETW Trace Viewer의 주 메뉴에서 File을 선택합니다. 그런 다음 Open을 클릭하여 원하는 로그 파일을 로드합니다.

로그 파일이 있는 ETW Trace Viewer 주 창

이벤트 로그가 있는 Trace View 주 창

로그 파일이 로드되고 나면 ETW Trace Viewer는 이벤트 로그 캡처의 기간을 나타내는 Timeline을 표시합니다. Timeline의 측정 단위를 초 또는 밀리초로 변경할 수 있습니다. 특정 이벤트 형식을 사용하거나 사용하지 않도록 설정하여 보려는 이벤트 형식을 선택할 수 있습니다. 적은 수의 이벤트 형식을 보려면 Disable All 단추를 클릭하여 모든 이벤트를 사용하지 않도록 설정하고 사용할 이벤트에 대한 확인란을 클릭하면 됩니다. Timeline에 대해 사용하도록 설정된 이벤트 형식은 ETW Trace Viewer의 오른쪽 아래에 표시됩니다.

Timeline에서 마우스를 클릭하고 끌어서 Timeline의 선택한 영역 도중에 발생한 이벤트만 볼 수 있습니다. Timeline의 선택한 영역을 확대하려면 마우스 오른쪽 단추를 클릭하여 다음 스크린 샷에 있는 팝업 메뉴를 표시합니다.

팝업 메뉴가 있는 ETW Trace Viewer 주 창

이벤트 로그가 있는 Trace View 주 창

이 팝업 메뉴를 사용하면 Timeline을 확대 및 축소할 수 있을 뿐만 아니라 모든 이벤트를 표시하고 Timeline의 선택한 영역을 지울 수 있습니다. Timeline을 확대 및 축소할 경우 파란색으로 표시된 시간 간격은 확대한 Timeline의 길이를 나타냅니다. 아래에 검은색으로 표시된 시간 간격은 이벤트 로그 캡처의 전체 기간을 기준으로 하는 시간을 나타냅니다.

확대한 데이터가 있는 ETW Trace Viewer 주 창

이벤트 로그가 있는 Trace View 주 창

Timeline에서 작은 상자를 클릭하여 특정 이벤트에 대한 정보를 표시할 수 있습니다.

이벤트 로그 파일 생성

Start capture 단추를 클릭하여 이벤트 로깅을 시작하고 Stop capture 단추를 클릭하여 이벤트 로깅을 종료하여 ETW Trace Viewer에서 ETW 이벤트 로그 파일을 만들 수도 있습니다. 이 방법을 사용하여 생성된 이벤트 로거에서는 이벤트 필터링을 위한 설정을 사용자 지정할 수 없습니다. 사용자 지정 이벤트 로거를 만들려면 Event Trace 도구를 사용합니다.

기타 성능 도구 리소스

WPF(Windows Presentation Foundation)는 또한 디버그 추적 지원을 제공합니다.

WPF용 디버그 추적 지원

PresentationTraceSources 클래스는 WPF(Windows Presentation Foundation) 응용 프로그램을 위한 디버그 추적 지원을 제공합니다. 추적은 응용 프로그램의 진행을 추적할 수 있는 진단 시스템입니다. WriteLine 메서드가 흔히 사용되는 방법과 같이 추적 문에서 정보를 보고합니다. 그러나 구성 파일을 사용하여 추적 문을 켜거나 끌 수 있습니다. 또한 추적 문의 출력을 사용자 지정할 수 있습니다.

다른 관련 .NET Framework 진단 클래스는 System.Diagnostics를 참조하십시오.

참고 항목

개념

WPF 응용 프로그램 성능 최적화

그래픽 렌더링 계층

Windows Presentation Foundation 그래픽 렌더링 개요

UI Spy(UISpy.exe)