Perfview는 CPU 및 메모리 관련 성능 문제를 분리하는 데 도움이되는 무료 성능 분석 도구입니다. Windows 도구이지만 Linux 시스템에서 수집 된 데이터 분석을 지원합니다. 다양한 시나리오에서 작동하지만 .NET 런타임을 위해 작성된 코드의 성능 문제를 조사하기위한 여러 가지 특수 기능이 있습니다.
Perfview에 익숙하지 않은 경우 Perfview 비디오 자습서가 있습니다. 또한 Vance Morrison의 블로그는 개요와 시작 정보를 제공합니다.
Perfview의 현재 버전을 다운로드하기위한 링크 및 지침은 Perfview 다운로드 페이지를 참조하십시오.
Perfview에는 .NET 프레임 워크 4.7.2 이상이 필요하며 모든 지원되는 Windows 버전에서 널리 사용됩니다.
Perfview는 Windows (ETW) 및 EventPipe (.NET Core Trace) 데이터를 수집하고 구문 분석하는 방법을 알고있는 Microsoft.diagnostics.traceing.traceevent라는 라이브러리에 구축됩니다. 따라서 Perfview가 수집하는 정보와 프로세스를 프로그래밍 방식으로 조작하려는 프로세스가 있으면 TraceEvent 라이브러리 문서에 관심이있을 것입니다.
시나리오 문서를 참조하여 무엇을하려고하는지에 가장 적합한 선택을 결정하십시오.
PerfView 사용자 안내서는 응용 프로그램 자체의 일부입니다. 또한 사용자 안내서 링크를 클릭하여 브라우저에서 렌더링 된 GitHub HTML 소스 파일을 볼 수 있습니다. 위의 지침을 사용하여 Perfview를 다운로드하고 도움말 -> 사용자 안내서 메뉴 항목을 선택할 수도 있습니다.
PerfView에 대한 질문이 있으면 첫 번째 반응은 사용자 안내서 (HELP -> 사용자 안내서)를 검색하고 이미 답변을 찾을 수 있는지 확인해야합니다. 그것이 작동하지 않으면 새로운 Perfview 문제를 만들어 질문을 할 수 있습니다. 제목에 간결하게 질문을하고, 필요한 경우 문제의 본문에 세부 사항을 제시하면 '질문'이라는 문제 태그가 있습니다. 질문이 특정 트레이스 (*.etl.zip 파일)에만 해당되는 경우 해당 파일을 문제로 드래그 할 수 있으며 다운로드됩니다. 이를 통해 문제를 시청하면 환경을 재현하고 훨씬 더 상세하고 유용한 답변을 제공 할 수 있습니다.
질문에 답변 한 후에는 문제가 일반적인 경우 정보를 포함하도록 문서를 업데이트하는 것을 강력히 고려해야합니다. 문서는 단 하나의 파일 https://github.com/microsoft/perfview/blob/main/src/perfview/supportfiles/usersguide.htm입니다. 리포지토리를 복제하고 풀 요청을 만들어야합니다 (풀 요청을 설정하고 생성하기위한 지침은 OpenSourceGitworkFlow 참조.
버그보고는 질문을하는 것과 거의 같은 방식으로 작동합니다. 문제를 재현하는 데 필요한 *.etl.zip 파일을 포함시키고 싶을 가능성이 높습니다.
성능 조사를 원한다면 Perfview를 직접 구축 할 필요가 없습니다. Perfview 다운로드 페이지에서 하나를 사용하십시오. 그러나 새로운 기능을 원하거나 Perfview에 기여하여 더 나은 기능을 수행하고 싶다면 (사람들이 원하는 문제를위한 문제 참조) 나머지 지침을 따르면 그렇게 할 수 있습니다.
Perfview를 구축하는 데 필요한 유일한 도구는 Visual Studio 2022입니다. Visual Studio 2022 Community Edition은 무료로 다운로드 할 수 있으며 Github에서 Perfview를 가져 오는 데 필요한 모든 것이 있습니다. Visual Studio 2022가 없다면 Visual Studio 2022 Community Edition을 다운로드 할 것으로 기대합니다.
Visual Studio를 설치할 때 다음 워크로드와 구성 요소가 설치되어 있는지 확인해야합니다.
.vsconfig 파일은 필요한 구성 요소를 설치하는 데 사용할 수있는 저장소의 루트에 포함되어 있습니다. Visual Studio에서 솔루션을 열 때 설치에서 누락 된 것으로 생각되는 구성 요소를 설치하라는 메시지가 표시됩니다. 또는 Visual Studio Installer에서 .vsconfig 를 가져올 수 있습니다.
ETWCLRCompiler 프로젝트를 컴파일하는 오류가 발생하면 Windows 10 SDK가 설치되어 있지 않거나 스펙트럼 미지화 된 LIB가 설치되어 있지 않기 때문일 수 있습니다. 자세한 내용은 문제 해결 섹션을 참조하십시오.
Perfview 소스 코드를 시작하는 첫 번째 단계는 Perfview Github 저장소를 복제하는 것입니다. Git, Github 및 Visual Studio 2022 GIT 지원이 어떻게 작동하는지에 대해 이미 익숙하다면이 섹션을 건너 뛸 수 있습니다. 그러나 그렇지 않은 경우 Visual Studio 2022 문서를 사용하여 로컬 Github 저장소를 설정하면이 작업의 기본 사항을 이끌어냅니다. Visual Studio 2022가 설치되어 있다고 가정합니다.
Perfview는 C# 7.3을 통해 기능을 사용하여 Visual Studio 2022에서 개발되었습니다.
솔루션 파일은 perfview.sln입니다. Visual Studio 에서이 파일을 열거나 Windows 탐색기에서 두 번 클릭하고 빌드 -> 빌드 솔루션을 선택하면 빌드됩니다. 저장소 기반의 msbuild 또는 build.cmd 파일을 사용하여 명령 줄에서 비 데그 버전을 빌드 할 수도 있습니다. 이 빌드는 표준 Visual Studio Concentions를 따르고 결과 Perfview.exe 파일은 src/perfview/bin/ buildtype /perfview.exe로 끝납니다. 사용하려면이 exe 만 배포하면됩니다.
이 솔루션은 지원 DLL 및 메인 EXE를 나타내는 여러 프로젝트로 구성됩니다. 디버거에서 Perfview를 실행하려면 '시작 프로젝트'가 'Perfview'프로젝트로 설정되어 메인 엑스를 시작하도록해야합니다 . 솔루션 탐색기 (오른쪽의)의 PerfView 프로젝트가 대담하지 않은 경우 Perfview 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 '시작 프로젝트로 설정'을 선택하십시오. 이 작업을 수행 한 후 '디버깅 시작'(F5)이 작동합니다.
Perfview의 'Debug'버전 대신 '릴리스'를 배포하려고합니다. 따라서 먼저 빌드 구성을 '릴리스'로 설정하십시오 (상단 도구 모음의 텍스트 창 또는 .SLN 파일 -> 구성 관리자 -> 활성 솔루션 구성)를 마우스 오른쪽 버튼으로 클릭하십시오). 다음 빌드 (빌드-> 빌드 솔루션 (Ctrl-Shift-B)). 결과는 src perfview bin net462 release 디렉토리에서 Perfview.exe가있는 것들이 있습니다. 이 파일은 배포해야 할 전부입니다. 앱을 배포하려는 위치에 간단히 복사하십시오.
Perfview의 특이한 점 중 하나는 지원 DLL을 EXE 자체에 통합하고 첫 번째 출시시 포장을 풀 었다는 것입니다. 이것은 빌드에 전형적인 의존성이 까다로운 종속성이 있음을 의미합니다. 빌드 초기에 빌드 문제가 있으면 특정 DLL을 찾을 수 없다는 오류가 표시됩니다. 일반적으로 누락 된 파일이 마지막 컴파일에서 존재하기 때문에 일반 (비 청반) 빌드를 수행하여 간단히 해결할 수 있습니다. 이것이 문제를 해결하지 못하면, 찾은 DLL이 실제로 존재하는지 확인하십시오 (그렇다면 재건이 수정해야합니다). 프로젝트를 하나씩 내려 가서 개별적으로 구축하여 어떤 것이 '우선'에 실패하는지 확인하는 것이 합리적 일 수 있습니다.
Perfview의 또 다른 특이한 점은 샘플이 완성 된 확장 메커니즘을 포함한다는 것입니다. 이 확장 메커니즘은 '글로벌'프로젝트입니다 (명령에 명시 적 '범위'가없는 글로벌 확장자이기 때문에) 일부 참조를 해결하려면 Perfview를 참조해야합니다. 따라서 '글로벌'프로젝트에서 많은 '찾을 수없는'문제를 얻을 수 있습니다. 빌드의 다른 모든 부분이 작동 할 때까지 무시할 수 있습니다.
Repo의 불변 중 하나는 Visual Studio 2022를 실행하고 단순히 perfview.sln 파일을 동기화하고 빌드하는 경우 '그냥 작동'한다는 것입니다. 그렇지 않으면 위의 조언이 도움이되지 않으면 저장소를 수정하거나 위의 조언을 업데이트해야합니다. 따라서 Github 문제를 열는 것이 합리적입니다. 이렇게하면 목표는 문제를 해결하는 것입니다. 즉, 문제에 충분한 정보를 넣어야합니다. 여기에는 시도한 내용과 오류 메시지가 포함됩니다.
명령 줄에서 perfview를 빌드 할 수도 있습니다 (그러나 여전히 Visual Studio 2022가 설치되어야 함). 두 단계 프로세스입니다. 먼저 필요한 모든 Nuget 패키지를 복원 한 다음 빌드 자체를 수행해야합니다. 이것을하기 위해 :
"MSB8036 : Windows SDK 버전 10.0.17763.0이 찾을 수 없었거나 'assert.h'를 얻지 못하거나 ETWCLRPROFILER DLLS를 구축하는 것과 관련된 오류가 발생하지 않으면 Windows 10 SDK가 설치되어 있는지 확인해야합니다. 불행히도이 라이브러리는 명시 적으로 요청하지 않는 한 더 이상 Visual Studio와 함께 설치되지 않는 경향이 있습니다. 수정하려면 Visual Studio 설치 프로그램을 시작하고 설치를 수정 한 다음 C ++ 데스크탑 개발을보고 Windows SDK 10.0.17763.0 옵션이 선택되었는지 확인하십시오. 그렇지 않은 경우 선택하고 계속하십시오. 그런 다음 Perfview를 다시 구축해보십시오.
이 프로젝트에 "MSB8040 : Spectre-Mitigated Libraries가 필요하다"는 오류가 발생하면 비주얼 스튜디오 설치를 수정하여 설치된 'MSVC V143-vs 2022 C ++ X64/X86 Spectre-Mitigated LIBS (최신)'구성 요소가 있는지 확인하십시오.
Perfview에는 자동화 된 테스트가있는 여러 *.estest 프로젝트가 있습니다. 테스트 -> 런 -> 모든 테스트 메뉴 항목을 선택하여 Visual Studio에서 실행할 수 있습니다. 가장 철저한 결과를 얻으려면 (그리고 변경 사항을 제출하려는 경우) 제품의 디버그 빌드로 이러한 테스트를 실행해야합니다 (상단 도구 모음의 텍스트 창을 참조하십시오. '디버그'또는 '릴리스'). 테스트가 실패하면 실패한 테스트를 마우스 오른쪽 버튼으로 클릭하고 '디버그'컨텍스트 메뉴 항목을 선택하여 디버거 아래에서 테스트를 실행하여 무엇이 잘못되었는지 알아 낼 수 있습니다.
이 저장소는 Azure DevOps를 사용하여 풀 요청을 자동으로 빌드 및 테스트하여 커뮤니티가 빌드 결과를 쉽게 볼 수 있도록합니다. 여기에 반영된 빌드 및 상태는 메인 브랜치의 Azure DevOps 빌드 상태입니다.
켈 Azure DevOps에 의해 제작 된 빌드는 공식적인 성능의 빌드로 간주되지 않으며 어떤 식 으로든 안전 또는 보안을 위해 서명하거나 검증되지 않습니다. 이 빌드 통합은 커뮤니티 참가자에게 편의성으로 제공되지만 Microsoft는 승인하지 않으며 어떤 식 으로든 공식 릴리스 채널로 간주되지 않습니다. 공식 빌드에 대한 자세한 내용은 Perfview 다운로드 페이지 페이지를 참조하십시오.
코드를 직접 구축하거나 디버그하거나 로컬의 전문화 된 기능을 만들 수있게하여 소스 코드 기반에서 많은 가치를 얻을 수 있지만 공유 코드 기반에 다시 기여하여 커뮤니티 전체를 도울 때 오픈 소스 소프트웨어의 실제 전력이 발생합니다. 우리는 이것을 권장하지만, 당신은 훨씬 더 많은 노력이 필요합니다 . Stepping Up에 관심이 있으시면 시작하기 전에 Perfview Contribution Guide 및 Perfview Coding 표준을 참조하십시오.
코드는 여러 주요 섹션으로 나뉩니다.