다음을 통해 공유


Visual Studio 성능 프로파일러, Windows 성능 도구 키트 및 PerfView 중에서 선택

이 가이드에서는 Microsoft의 주요 범용 성능 프로파일링 기술인 Visual Studio 성능 프로파일러, Windows 성능 도구 키트 및 PerfView에 대한 일반적인 비교를 제시합니다.

두 도구를 사용하여 Windows에서 애플리케이션의 성능 특성을 진단하고 이해할 수 있습니다. 이 가이드의 목적은 여러 기능 중 하나를 선택해야 하는 경우의 개요를 제시하고, 각 기능의 강점을 부각하고, 포함된 기능을 개괄적으로 설명하는 것입니다.

개요

Visual Studio Performance Profiler는 Visual Studio 팀이 기존 Visual Studio 프로젝트 시스템 내에서 개발 중인 애플리케이션의 성능 특성을 신속하게 파악하기 위해 만들었습니다. 활성 개발 프로젝트와 긴밀하게 통합되어 가장 일반적인 성능 시나리오의 분석을 간소화하고 단일 애플리케이션을 빠르고 쉽게 수집할 수 있다는 장점이 있습니다.

Windows Performance Toolkit은 Windows 팀이 전체 PC의 시스템 수준 특성을 한 번에 파악하기 위해 만들었습니다. 시발점은 하드웨어 및 드라이버 분석이었지만 소프트웨어 문제 파악에도 매우 효과적입니다. 전체 머신에서 대량의 정보를 한꺼번에 수집할 수 있다는 장점이 있으므로, 다중 프로세스 문제(하드웨어 또는 드라이버를 처리하는 문제) 및 복잡한 시나리오에는 이 도구가 적절합니다.

PerfView는 .NET 팀에서 .NET 애플리케이션의 성능을 파악하기 위해 만듭니다. Windows 성능 도구 키트와 마찬가지로, 전체 컴퓨터에서 한 번에 많은 양의 정보 수집이 가능합니다. 가비지 수집, 적시 컴파일, 관리형 스레드 풀과 같은 .NET 런타임 서비스에 대해 상세한 정보를 표시하는 기능으로 차별화됩니다. 관리형, 네이티브 및 혼합 모드 애플리케이션에 PerfView를 사용할 수 있습니다.

이 도구들 간에는 중복되는 부분이 있습니다. 때로는 한 도구에서 문제를 탐색하기 시작했다가 다른 도구로 전환하여 동일한 시나리오를 다른 관점으로 볼 수 있습니다. 다른 경우에는 한 도구가 다른 도구보다 더 효과적일 수도 있습니다.

설치

Visual Studio Performance Profiler는 Visual Studio 자체의 구성 요소이며 나머지 개발 환경과 동일한 설치 마법사를 통해 설치할 수 있습니다.

Windows Performance Toolkit은 Windows Assessment and Deployment Kit의 일부로 별도로 다운로드할 수 있습니다. 하지만 명령줄 성능 기록 도구는 Windows 10 및 Windows 11에 wpr.exe(으)로 사전 설치되어 있으며 PowerShell 및 명령 프롬프트와 같은 셸의 기본 경로 변수에서 사용 가능합니다.

Performance Analyzer는 Microsoft Store의 애플리케이션으로 제공됩니다.

PerfView는 PerfView GitHub 릴리스 페이지에서 독립 실행형 다운로드로 사용할 수 있습니다. 설치가 필요하지 않습니다.

고급 성능 분석 시나리오를 위한 사용자 지정

Windows Performance Toolkit은 고급 성능 분석 시나리오를 지원할 수 있는 두 가지 확장 지점을 추가로 제공합니다.

  • Microsoft performance Toolkit SDK는 추적 데이터 처리를 수행하고 개발자가 Windows Performance Analyzer 내에서 볼 수 있도록 자체 플러그 인을 빌드할 수 있게 합니다.
  • .NET TraceProcessing은 추적 정보를 결과 테이블로 처리할 수 있는 사용자 지정 도구를 제작할 수 있으며, 대량 추적 데이터의 자동 분석에 특히 유용합니다.

PerfView도 이와 유사하게 프로그래밍 방식으로 성능 추적을 사용하는 .NET TraceEvent 라이브러리를 기반으로 합니다. 성능 추적 데이터의 사용자 지정 분석을 위해 PerfView와 독립적으로 TraceEvent를 사용할 수 있습니다.

참고 항목

성능 분석 시나리오가 작동하려면 테스트할 Windows 애플리케이션과 상관 관계를 지정하는 기호에 대한 액세스 권한이 필요합니다. Visual Studio에서 앱을 빌드하는 경우 솔루션을 사용하든 기호 서버에서 캡처하든 디버깅 시나리오 설정과 동일하게 배치됩니다. 다른 라이브러리나 구성 요소를 분석할 때 해당 구성 요소에 대한 기호를 찾아 분석을 완료해야 합니다.

도구 선택 시 고려 사항

살펴보려는 성능 시나리오에 따라 선택할 도구가 달라집니다. 각 도구의 기능과 특성을 비교한 표는 아래와 같습니다.

가능하다면 Visual Studio Profiling으로 시작하는 것이 일반적입니다. Visual Studio 도구로 가능한 작업의 한계에 도달하면 Windows 성능 도구 키트 또는 PerfView로 이동합니다.

상황 Visual Studio 성능 프로파일러 Windows 성능 도구 키트 PerfView
일반적인 사용 고려 사항
추적 파일 크기 ✔️ 🆗 🆗
도구 획득 ✔️ ✔️ ✔️
확장 키트 ✔️ ✔️
작업 범위 고려 사항
단일 프로세스 또는 프로젝트 ✔️ 🆗 🆗
다중 프로세스 ✔️ ✔️
하드웨어 고려 사항
CPU 사용량 ✔️ ✔️ ✔️
GPU 사용량 ✔️ ✔️
메모리 사용량 ✔️ ✔️ ✔️
디바이스 입/출력 ✔️ ✔️
소비 전력 ✔️
시스템 핸들 ✔️ ✔️
코드 언어 지원 고려 사항
C/C++ 지원 ✔️ ✔️ ✔️
.NET 지원 ✔️ ✔️ ✔️
JavaScript 지원 🆗 🆗 🆗
시나리오 고려 사항
Windows용 이벤트 추적 🆗 ✔️ ✔️
작성 ✔️
HTML/Edge/Internet Explorer/Webview ✔️
XAML/WinUI 🆗 ✔️ ✔️
오디오/비디오 파이프라인 및 결함 ✔️
데이터베이스 타이밍 ✔️
관리형 개체 할당 및 가비지 수집 ✔️ ✔️
사용자 지정 시나리오 ✔️ ✔️

  • ✔️ 잘 지원됨: 의도한 작업을 위해 설계되었으며 견고하고 구체적인 결과를 달성합니다.
  • 🆗 지원됨: 원하는 결과를 얻으려면 추가 구성 또는 단계가 필요할 수 있습니다. 범주 내에서 작업 범위가 제한될 수 있습니다.
  • ❌ 지원되지 않음: 이 용도로 설계되지 않았습니다.

일반적인 사용 고려 사항

성능 분석을 이제 막 시작하는 경우에는 기존 Visual Studio 개발 도구 모음 내에 잘 통합된 기능으로 Visual Studio Performance Profiler를 사용하는 것이 좋습니다. 요건을 충족하는 경우 PerfView보다는 Visual Studio 성능 프로파일러 사용을 권장합니다.

보다 강력하고 다양한 기능이 필요한 보다 복잡한 시스템 성능 분석에는 성능 분석 작업을 수행하는 데 사용되는 두 가지 도구로 구성된 Windows Performance Toolkit을 사용하는 것이 좋습니다.

  • 명령줄 도구와 그래픽 인터페이스로 모두 사용할 수 있는 Windows Performance Recorder는 추적 세션 캡처를 담당합니다.
  • Windows Performance Analyzer는 나중에 수집된 데이터를 후처리하고 고도로 사용자 지정 가능한 분석 보기를 제공하기 위해 열립니다.

Visual Studio Performance Profiler가 제공하는 이점은 다음과 같습니다.

  • 주 도메인의 성능 분석에 쉽게 도입할 수 있습니다.
  • 프로젝트 구성에 따라 분석 및 디버깅의 많은 복잡성을 자동으로 처리합니다.
  • 중요한 관심 영역을 자동으로 강조 표시합니다.
  • 더 작고 집중된 데이터 세트와 더 작은 컬렉션 범위를 사용하기 때문에 단일 애플리케이션에 집중하는 데 적합합니다.
  • 보다 구체적이기 때문에 프로파일링하는 동안 다른 애플리케이션 및 머신 하드웨어에 미치는 영향이 적고, 생성 및 저장되는 추적 파일의 전체 크기가 작고, 수집이 완료된 후 정보를 검토하기 위한 처리 속도가 향상됩니다.
  • 추적을 시작하고 완료하는 데 걸리는 시간이 짧고, Visual Studio Performance Profiler가 전체 시스템이 아닌 애플리케이션에만 관여하기 때문에 보다 빠르게 검토하고 해결할 수 있습니다.
  • 데이터 수집 및 결과 분석은 모두 Visual Studio 내에서 수행되며, 수집이 완료되면 분석 페이지가 자동으로 시작됩니다. 또한 보고서 뷰는 자동으로 핫 스폿 또는 작업 영역에 초점을 맞추는 경향이 있습니다.

Windows Performance Toolkit이 제공하는 이점은 다음과 같습니다.

  • 시작하는 고객에게 도움을 드리기 위해 Windows 성능 및 진단 팀에서 충분한 설명서블로그를 제공합니다.
  • 특히 백그라운드 작업이 진행 중인 시스템에서 매우 큰 파일을 수집하는 데 적합합니다. 이 도구는 정보를 수집하기 위한 모든 기능을 지원하는 도구이며 수집된 정보는 나중에 Windows Performance Analyzer 인터페이스에서 필터링됩니다.
  • 확장 지점을 사용하여 고급 성능 분석 시나리오에 맞게 사용자 지정할 수 있습니다. (아래 참조)

PerfView의 몇 가지 장점은 다음과 같습니다.

  • 포괄적인 기본 제공 설명서 및 인터넷으로 액세스할 수 있는 사용법 동영상(앱 내)이 링크되어 있습니다.
  • erfView.exe를 복사만 하면 프로덕션 환경에 e쉽게 배포 가능합니다.
  • 재현하기 어려운 문제를 캡처하기 위한 플라이트 레코더 모드.
  • .NET 런타임 서비스에 대한 구체적인 진단.
  • 사용자 지정 보기 확장 가능.

작업 범위 고려 사항

단일 애플리케이션, 특히 단일 프로세스를 중심으로 분석한다면, 모든 도구는 성능을 수집하고 해석하는 데 상당히 유용합니다. 그러나 특히 애플리케이션 소스와 프로젝트 시스템을 이미 사용할 수 있는 경우에는 Visual Studio Performance Profiler가 더 좋습니다. Visual Studio Performance Profiler 엔진은 F5 디버깅 기능과 비슷한 방식으로 이진 파일에서 CPU, GPU 및 메모리 정보를 수집하도록 설계되었습니다. 단일 애플리케이션에만 초점을 맞추는 이 수집 메커니즘은 보다 긴밀한 반환 시간과 개발자 루프를 제공합니다.

Visual Studio에 필요한 기능이 없거나, 컬렉션 요구 사항(프로덕션 환경에서 일반적)으로 인해 실행할 수 없거나, 더 자세한 .NET 진단 기능이 필요한 경우 PerfView를 선택합니다.

다중 프로세스 간 요청, 하드웨어 디바이스 및 해당 드라이버 또는 Windows 플랫폼 기술에 대한 심층 분석이 포함된 매우 복잡한 상황에는 Windows Performance Toolkit을 선택하는 것이 가장 좋습니다.

하드웨어 고려 사항

Visual Studio 성능 프로파일러, Windows 성능 도구 키트 및 PerfView는 주요 하드웨어 구성 요소에 대한 CPU 및 메모리를 진단할 수 있으며, Visual Studio 성능 프로파일러와 Windows 성능 도구 키트는 GPU를 추가로 지원합니다. 이 도구는 주로 이러한 영역의 입문 분석에 적합합니다.

CPU 사용량은 세 가지 도구 모두로 분석할 수 있으며, 대개는 샘플링을 통해 캡처합니다. 샘플링은 애플리케이션에서 주기적으로 스택 추적을 캡처하고 표시되는 빈도에 대한 순위를 제공합니다. 두 도구 모두 정확한 집계를 위해 계측을 사용하도록 이 동작을 조정할 수 있습니다.

GPU 사용량은 Visual Studio 성능 프로파일러와 Windows 성능 도구 키트 모두에서 일반적인 개요 정보를 캡처하여 분석하면 됩니다.

세 가지 도구 모두 힙 공간 및 힙 할당과 관련된 스택에 대한 정보를 수집하여 메모리 사용량을 분석할 수 있습니다.

네트워킹, 디스크, 디바이스, 핸들 또는 시스템의 전체 소비 전력 분석과 같은 보다 복잡한 시나리오가 발생하는 경우에는 더 많은 분석 기능을 갖춘 Windows Performance Toolkit이 더 적합합니다. 이 데이터는 다양한 하드웨어 구성 요소에 요청을 보내기 때문에 운영 체제에서 직접 수집하는 것이 가장 좋습니다. Windows Performance Toolkit은 운영 체제와 함께 개발되었기 때문에 보다 시스템 중심의 정보 범주를 즉시 수집할 수 있습니다.

코드 언어 지원 고려 사항

Windows Performance Toolkit은 주로 Windows 운영 체제 코드 베이스에 사용되는 C 및 C++ 지원에 초점을 맞추고 있습니다.

Visual Studio Performance Profiler 지원은 C# 및 ASP.NET과 같은 .NET 원조 기술부터 시작하여 외부로 확장하는 광범위한 프로그래밍 언어에 초점을 맞추고 있습니다.

PerfView는 .NET 및 네이티브(C 및 C++) 애플리케이션을 지원합니다. .NET 런타임에 대한 심층 지식과 ASP.NET 웹 워크로드에 대한 기능을 갖추고 있습니다.

그렇다고 해서 Visual Studio가 C 또는 C++ 코드를 분석할 수 없거나, Windows 성능 분석기가 .NET 애플리케이션을 분석할 수 없거나, PerfView가 웹 애플리케이션을 분석할 수 없다는 의미는 아닙니다. 분석하려는 애플리케이션에 가장 적합한 도구를 사용하여 각 도구의 장점을 활용하는 것이 가장 좋습니다.

시나리오 고려 사항

모든 도구에는 애플리케이션 성능을 연구하기 위한 여러 시나리오 기반 옵션이 포함됩니다.

Visual Studio Performance Profiler 옵션은 .NET, UI(사용자 인터페이스) 및 분석되는 애플리케이션의 내부에 있는 데이터베이스에 집중하는 경향이 있습니다.

Windows Performance Toolkit은 실시간 처리 파이프라인의 컴퍼지션, 브라우저 보기 및 결함과 같은 운영 체제 구성 요소와 프레임워크에 집중하는 경향이 있습니다.

고도로 사용자 지정 가능한 솔루션이 필요한 시나리오의 경우 Windows Performance Recorder는 시스템 수준 수집과 애플리케이션 관련 수집 데이터를 단일 기록 세션으로 결합할 수 있습니다. 이 기능을 통해 애플리케이션 개발자는 제품을 개발하는 데 사용되는 것과 다를 수 있는 하드웨어의 성능 데이터를 요청하기 위해 고객에게 배포하는 전체 솔루션을 제공할 수 있습니다. 이 메커니즘에 대한 자세한 내용은 Windows 성능 및 진단 팀의 사용자 지정 프로필 작성 블로그 시리즈에서 찾을 수 있습니다.

PerfView는 .NET 애플리케이션 및 런타임에 대한 심층 조사를 대상으로 하지만, 다중 프로세스 및 운영 체제 수준 조사도 동일하게 실행할 수 있습니다.

요약

Visual Studio 성능 프로파일러, Windows 성능 도구 키트 및 PerfView는 애플리케이션의 성능을 파악하는 데 유용한 Microsoft의 세 가지 뛰어난 도구입니다. 요구 사항에 가장 적합한 도구를 선택하려면 현재 상황과 관련된 다양한 사항을 고려해야 합니다. 이 가이드에서는 적절한 성능 분석 도구를 선택하는 데 필요한 정보를 제공하며, 아래에서 이 페이지에 대한 피드백을 남기거나 Windows 개발 성능 리포지토리에서 개발 성능 관련 문제를 제출해 주세요.