다음을 통해 공유


명령줄에서 애플리케이션 성능 측정

명령줄 도구를 사용하여 애플리케이션에 대한 성능 정보를 수집할 수 있습니다. CPU 사용량, .NET 메모리 할당, 계측 및 데이터베이스 쿼리에 대한 성능 데이터를 수집할 수 있습니다.

이 문서에 설명된 예제에서는 Microsoft 메모장에 대한 성능 정보를 수집하지만 동일한 방법을 사용하여 모든 프로세스를 프로파일할 수 있습니다.

메모

명령줄에서 계측된 C/C++ 구성 요소를 생성하려면 이 문서의 다음 단계 전에 네이티브 독립 실행형 구성 요소 계측을 참조하세요. CPU 사용량 데이터의 경우 이 문서에 설명된 절차를 사용할 수 있습니다.

필수 구성 요소

  • Visual Studio 2019 이상 버전

  • 명령줄 도구에 대한 친숙함

  • Visual Studio가 설치되지 않은 원격 머신에서 성능 정보를 수집하려면 원격 컴퓨터에 Remote Tools for Visual Studio 설치합니다. 도구 버전은 Visual Studio 버전과 일치해야 합니다.

대부분의 컬렉션 에이전트는 .NET Core, .NET 5+, .NET Framework 및 C++를 지원합니다. 그러나 지원은 해당 성능 도구에서 제공하는 지원으로 제한됩니다. 예를 들어 Database 컬렉션 에이전트는 .NET Core 및 .NET 5+로 제한됩니다.

성능 데이터 수집

Visual Studio Diagnostics CLI 도구를 사용한 프로파일링은 수집기 에이전트 중 하나와 함께 프로파일링 도구를 프로세스에 연결하여 작동합니다. 프로파일링 도구를 연결할 때 도구가 중지될 때까지 프로파일링 데이터를 캡처하고 저장하는 진단 세션을 시작합니다. 이때 데이터가 .diagsession 파일로 내보내집니다. 그런 다음 Visual Studio에서 이 파일을 열어 결과를 분석할 수 있습니다.

  1. 메모장을 시작한 다음 작업 관리자를 열어 PID(프로세스 ID)를 가져옵니다. 작업 관리자의 세부 정보 탭에서 PID를 찾습니다.

  2. 명령 프롬프트를 열고 컬렉션 에이전트 실행 파일을 사용하여 디렉터리로 변경합니다(일반적으로 Visual Studio Enterprise의 경우).

    <Visual Studio installation folder>\2022\Enterprise\Team Tools\DiagnosticsHub\Collector\

    <Visual Studio installation folder>\2019\Enterprise\Team Tools\DiagnosticsHub\Collector\

    원격 도구의 경우 컬렉션 에이전트 실행 파일은 다음 위치에 있습니다.

    Program Files\Microsoft Visual Studio 17.0\Team Tools\DiagnosticsHub\Collector\

    Program Files\Microsoft Visual Studio 16.0\Team Tools\DiagnosticsHub\Collector\

    메모

    원격 시나리오에서 명령줄을 사용하는 경우 원격 컴퓨터에서 명령줄 지침을 실행해야 합니다. Visual Studio에서 원격 컴퓨터에 연결하려면 Visual Studio에서 성능 프로파일러를 대신 사용합니다.

  3. 다음 명령을 입력하여 VSDiagnostics.exe 시작합니다.

    VSDiagnostics.exe start <id> /attach:<pid> /loadConfig:<configFile>
    

    포함해야 하는 인수는 다음과 같습니다.

    • < ID> 컬렉션 세션을 식별합니다. ID는 1-255 사이의 숫자여야 합니다.
    • < pid>, 프로파일하려는 프로세스의 PID(이 경우 1단계에서 찾은 PID)입니다.
    • configFile><시작하려는 컬렉션 에이전트에 대한 구성 파일입니다. 자세한 내용은 에이전트에 대한구성 파일을 참조하세요.

    예를 들어 앞에서 설명한 대로 pid 대체하여 CPUUsageBase 에이전트에 대해 다음 명령을 사용할 수 있습니다.

    VSDiagnostics.exe start 1 /attach:<pid> /loadConfig:AgentConfigs\CPUUsageLow.json
    

    또는 launch 명령을 사용하여 실행 파일을 시작할 수 있습니다. 이 시나리오에서는 프로세스 ID를 가져와서 연결할 필요가 없습니다. 계측 및 .NET 할당 도구와 같은 attach지원하지 않는 도구도 있지만 모든 도구는 launch 명령을 지원합니다. 예를 들어 다음을 사용하여 실행 파일을 시작하고 계측 데이터를 수집합니다.

    VSDiagnostics start <id> /launch:<ExeToProfile> /loadConfig:AgentConfigs\PerfInstrumentation.json
    
  4. 메모장의 크기를 조정하거나 흥미로운 프로파일링 정보가 수집되도록 메모장에 내용을 입력합니다.

  5. 다음 명령을 입력하여 컬렉션 세션을 중지하고 파일에 출력을 보냅니다.

    VSDiagnostics.exe stop <id> /output:<path to file>
    
  6. 이전 명령에서 .diagsession 파일 출력을 찾아 Visual Studio(파일>열기)에서 열어 수집된 정보를 검사합니다.

    결과를 분석하려면 해당 성능 도구에 대한 설명서를 참조하세요. 예를 들어 CPU 사용량, .NET 개체 할당 도구, 계측또는 데이터베이스 도구일 수 있습니다.

에이전트 구성 파일

컬렉션 에이전트는 측정하려는 항목에 따라 다양한 형식의 데이터를 수집하는 교환 가능한 구성 요소입니다.

편의를 위해 에이전트 구성 파일에 해당 정보를 저장하는 것이 좋습니다. 구성 파일은 .dll 및 해당 COM CLSID의 이름을 최소한 포함하는 .json 파일입니다. 기본적으로 다음 폴더에서 예제 구성 파일을 찾을 수 있습니다.

Program Files\Microsoft Visual Studio\<version>\<sku>\Team Tools\DiagnosticsHub\Collector\AgentConfigs

CpuUsage 구성(기본/높음/낮음)은 CPU 사용량 프로파일링 도구에 대해 수집된 데이터에 해당합니다. DotNetObjectAlloc 구성(Base/Low)은 .NET 개체 할당 도구대해 수집된 데이터에 해당합니다.

기본/낮음/높음 구성은 샘플링 속도를 나타냅니다. 예를 들어 Low는 샘플 100개/초이고 높음은 4000개 샘플/초입니다.

VSDiagnostics.exe 도구가 컬렉션 에이전트와 함께 작동하려면 적절한 에이전트에 DLL 및 COM CLSID가 모두 필요합니다. 에이전트에는 구성 파일에 지정되어 올바르게 이스케이프된 JSON으로 형식이 지정된 모든 옵션을 포함하는 추가 구성 옵션이 있을 수도 있습니다.

권한

상승된 권한이 필요한 애플리케이션을 프로파일하려면 관리자 권한 명령 프롬프트에서 프로파일을 수행해야 합니다.