내보내기(0) 인쇄
모두 확장
정보
요청한 주제가 아래에 표시됩니다. 그러나 이 주제는 이 라이브러리에 포함되지 않습니다.

Windows Phone 8용 Direct3D 앱 프로파일링

2014-06-18

Visual Studio 에서 Direct3D 앱 작업을 하는 동안 Windows Phone 응용프로그램 분석을 시작하면 관리되는 앱을 프로파일링할 때와 다른 옵션과 보고서가 표시됩니다. 네이티브 코드 프로파일러는 Visual Studio 2012에 기본 제공된 프로파일링 기술을 사용하고 결과를 표준 .vspx 파일로 저장합니다.

네이티브 코드 프로파일러를 사용하여 C# 또는 Visual Basic 프로젝트에서 참조되는 Windows Phone 런타임 구성 요소 프로젝트를 프로파일링할 수도 있습니다.

관리되는 앱의 프로파일러에 따른 Windows Phone 프로파일링에 대한 자세한 내용은 Windows Phone 8용 앱 프로파일링을 참조하세요. Direct3D 앱 개발에 대한 자세한 내용은 Windows Phone 8용 Direct3D 앱 개발을 참조하세요.

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

 

Direct3D 앱에 대한 앱 프로파일링을 시작하려면

  1. 앱 프로파일링은 다음 방법 중 하나를 사용하여 실행할 수 있습니다. 이러한 방법을 사용하려면 Visual Studio 에서 Direct3D 프로젝트를 열어 두어야 합니다.

    • 디버그 메뉴에서 Windows Phone 응용프로그램 분석 시작을 선택합니다.

    • Alt + F1을 누릅니다.

  2. Direct3D 앱의 경우 실행 옵션만 사용할 수 있습니다.

  3. 세션 시작을 클릭합니다.

    선택한 에뮬레이터 또는 단말기에서 앱 실행이 시작됩니다.

다음 그림에서는 Direct3D 앱에 대한 앱 프로파일링을 시작하는 화면을 보여 줍니다.

Start screen for native profiler

적합한 활동 샘플링을 프로파일링한 후 세션 끝내기를 클릭합니다.

프로파일링 세션을 중지한 후 도구는 수집한 데이터를 복사하고, 구문 분석하고, 분석합니다. 다음 그림과 같이 결과의 요약 보기가 표시됩니다.

Summary view of profiling results

에뮬레이터에서 앱을 프로파일링할 때보다 휴대폰에서 앱을 프로파일링할 때 프로파일링 데이터 구문 분석 및 보고서 준비에 시간이 더 오래 걸립니다.

프로파일링 결과의 사용 가능한 보고서에 대한 자세한 내용은 Windows 앱에서 Visual C++, Visual C# 및 Visual Basic 코드에 대한 성능 데이터 분석을 참조하세요. 연결된 항목은 Windows 응용프로그램의 컨텍스트에서 프로파일링을 설명하지만 Windows Phone SDK 8.0 에서 Direct3D 앱의 프로파일러는 동일한 보고서를 생성합니다.

사용자 지정 이벤트를 수집하도록 네이티브 프로파일러를 구성할 수 있습니다. 그런 다음 Windows Performance Analyzer에서 이러한 이벤트를 검토할 수 있습니다.

사용자 지정 이벤트를 수집 및 분석하려면

  1. Windows 8용 Windows SDK(소프트웨어 개발 키트)에서 Windows Performance Toolkit가 있는지 확인합니다.

  2. 메시지 컴파일러(MC.exe) 도구를 사용하여 사용자 지정 이벤트에 대한 매니페스트 파일을 사용하고 코드에서 사용할 헤더 파일(.h 파일) 및 리소스 파일(.resx)을 생성합니다.

  3. 생성된 헤더 파일(.h 파일) 및 리소스 파일(.resx)을 프로젝트에 추가합니다. 코드에서 이러한 파일을 사용하여 사용자 지정 이벤트를 등록하거나 등록 취소합니다.

  4. Wevtutil.exe 도구를 사용하여 매니페스트를 이벤트 로거에 등록합니다. 일반적인 명령줄은 다음과 유사합니다.

    wevtutil im <manifest file> /rf:<full path to dll/exe which includes the resources> /mf:<same path as rf>

    매니페스트를 업데이트할 경우 먼저 매니페스트를 제거해야 합니다. 매니페스트를 제거하려면 명령 wevtutil rm <manifest>을 실행합니다.

  5. 사용자 지정 GUID를 다음 폴더에 있는 ProfilerTasks.XML 파일에 추가합니다.

    %ProgramFiles(x86)%\Common Files\Microsoft Shared\Phone Tools\11.0\Profiler\target

    일반적인 진입점은 다음과 유사합니다.

    <EtwProvider Name="CustomEventProducer" GUID="{708BA62D-5B10-4309-AA23-ADC794E60F6C}" />

    이 파일을 편집하려면 관리 권한이 필요합니다.

  6. Visual Studio 로 돌아간 후 Alt+F1을 누르거나 DEBUG 메뉴에서 Windows Phone 응용프로그램 분석 시작을 선택하여 앱 프로파일링을 시작합니다.

    프로파일링 후 로그는 프로파일링 세션에 대한 .vspx 파일 내부에 저장됩니다. 이 파일은 프로젝트 디렉터리에 있습니다.

  7. .vspx 파일의 파일 확장명을 .zip으로 변경한 다음 .vspx 파일의 압축을 풀고 .etl 로그를 추출합니다. 로그는 다음 경로의 파일 내에 있습니다.

    VSProfilingData\VSPerfLog*.etl

  8. 추출된 .etl 파일을 Windows Performance Analyzer 같은 Windows 8용 기본 ETW 파일 뷰어에서 엽니다. 자세한 내용은 WPA(Windows Performance Analyzer)를 참조하세요.

  9. 제네릭 이벤트 그래프를 인스턴스화하여 사용자 지정 이벤트 데이터를 검토합니다.

네이티브 프로파일러를 사용하여 Qualcomm 그래픽 드라이버에서 발생한 이벤트를 수집할 수 있습니다. 그런 다음 Windows Performance Analyzer에서 이러한 이벤트를 검토할 수 있습니다.

Qualcomm 그래픽 드라이버에서 발생한 이벤트는 기본적으로 사용하도록 설정됩니다.

Qualcomm 이벤트를 수집 및 분석하려면

  1. Windows 8용 Windows SDK(소프트웨어 개발 키트)에서 Windows Performance Toolkit가 있는지 확인합니다.

  2. Visual Studio 에서 앱을 연 후 Alt+F1을 누르거나 DEBUG 메뉴에서 Windows Phone 응용프로그램 분석 시작을 선택하여 프로파일링을 시작합니다.

    프로파일링 후 로그는 프로파일링 세션에 대한 .vspx 파일 내부에 저장됩니다. 이 파일은 프로젝트 디렉터리에 있습니다.

  3. .vspx 파일의 파일 확장명을 .zip으로 변경한 다음 .vspx 파일의 압축을 풀고 .etl 로그를 추출합니다. 로그는 다음 경로의 파일 내에 있습니다.

    VSProfilingData\VSPerfLog*.etl

  4. 추출된 .etl 파일을 Windows Performance Analyzer 같은 Windows 8용 기본 ETW 파일 뷰어에서 엽니다. 자세한 내용은 WPA(Windows Performance Analyzer)를 참조하세요.

  5. 그래프 탐색기에서 시스템 활동을 확장하여 제네릭 이벤트를 표시합니다. 그런 다음 제네릭 이벤트를 분석 창으로 끌어 옵니다.

  6. 분석 창에서 QCOM DX9 UMD 공급자를 확장하여 Qualcomm 이벤트를 표시합니다.

    표시되는 작업 이름은 기록된 이벤트를 나타냅니다. Windows Performance Analyzer를 사용하여 보기 범위를 특정 프레임으로 변경할 수 있습니다.

Qualcomm 이벤트

이러한 이벤트는 Qualcomm 그래픽 드라이버에서 수행되는 내부 작업에 대한 정보를 제공합니다. 이러한 이벤트를 사용하면 코드가 GPU를 효율적으로 구동하는지 또는 실수로 드라이버가 값 비싼 보관 작업을 수행하게 하는지 여부를 더 잘 이해할 수 있습니다.

작업 이름

작업 설명

GMemStore

렌더링 결과가 GPU 캐시에서 다시 시스템 메모리에 기록되는 경우를 나타냅니다. 렌더링 데이터를 시스템 메모리로 푸시합니다.

GMemLoad

시스템 메모리에서 이전 렌더링된 비트를 가져오고 GPU 캐시에 로드합니다.

CmdBufferFlush

D3D API 호출에 대한 응답으로 CPU에서 생성된 렌더링 명령이 실행될 GPU 하드웨어로 전송되는 명령 버퍼 플러시를 나타냅니다. 플러시가 많으면 병렬 처리가 감소합니다.

ResourceDiscardWarning

제공된 할당에 대한 이름 변경 제한에 도달했고 모든 기존 이름 변경이 계속 사용되고 있음을 나타냅니다. 이러한 조건에서 드라이버는 지연 잠금을 수행하므로 이 이벤트는 성능 경고입니다. 일반적으로 너무 많은 동적 데이터가 CPU에서 GPU로 전송되고 있음을 나타냅니다.

QueryNotSignaled

API 쿼리에 적용됩니다. 이 이벤트는 쿼리가 수행되기 전에 GetData가 호출되었음을 경고합니다. 이 이벤트가 반복 발생하면 앱이 쿼리 실행과 결과 가져오기 사이에 충분한 작업을 수행하고 있지 않음을 나타냅니다.

OutOfMemory

그래픽 드라이버가 작업을 완료하는 데 충분한 메모리를 사용할 수 없습니다. 할당된 시스템 메모리 또는 동영상 메모리가 부족합니다.

MismatchedConfig

응용프로그램이 호환되지 않는 크기나 형식의 깊이 버퍼 및 렌더링 대상을 지정했음을 나타냅니다. 런타임이 이 상황을 방지하지 않습니다. 이로 인해 예기치 않은 시각적 아티팩트가 발생할 수 있습니다.

Qualcomm 플러시 이유

이 열거형에서는 CmdBufferFlush 이벤트의 원인에 대한 추가 정보를 제공합니다.

메시지

설명

Explicit

플러시가 명시적으로 요청되었습니다(예: 장면 끝에서 Present를 호출하여).

OutOfSpace

GPU 하드웨어의 명령 버퍼에 사용 가능한 추가 공간이 없습니다.

OutOfHandles

명령 버퍼에서 참조되는 모든 메모리를 설명하는 할당 핸들을 나타냅니다. 일반적으로 이 이벤트는 많은 렌더링이 일괄 처리되었음을 나타냅니다. 권장되는 방법은 일괄 처리지만 이 이벤트는 핸들 소진으로 인해 플러시가 발생하고 많은 일괄 처리가 제공된 응용프로그램에 대해 과도할 수 있음을 나타냅니다.

ExternalDependency

플러시로 인해 발생하는 엔진 간 종속성이 있음을 나타냅니다. 예를 들어 화면에 대한 3D 렌더링 다음에 동영상 처리(DXVA) 작업이 수행됩니다. 이 작업 순서에서 3D 렌더링은 스케줄러가 필요한 신호를 확인하고 대기하도록 동영상 처리 작업 전에 플러시되어야 합니다. 이 플러시는 동영상 UMD에 의해 시작됩니다.

AllocationReferenced

이 플러시는 GPU에서 기록된 리소스 할당이 일부 다른 하드웨어 장치 또는 CPU에서 참조될 때 트리거됩니다. 이전 GPU 렌더링은 할당에 대한 다른 참조가 진행되기 전에 플러시되어야 합니다.

비디오

동영상 드라이버가 일부 렌더링 작업을 수행하도록 GPU에 요청했음을 나타냅니다.

표시:
© 2014 Microsoft