Share via


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

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

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

참고 항목

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

필수 조건

  • Visual Studio 2019 이상 버전

  • 명령줄 도구 사용 경험

  • Visual Studio가 설치되어 있지 않은 원격 머신에서 성능 정보를 수집하려면 원격 머신에 Visual Studio용 원격 도구를 설치합니다. 도구의 버전이 Visual Studio의 버전과 일치해야 합니다.

성능 데이터 수집

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

  1. 메모장을 시작한 다음, 작업 관리자를 열어 프로세스 ID(PID)를 가져옵니다. 작업 관리자의 세부 정보 탭에서 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 할당 도구와 같이 일부 도구는 지원하지 않지만 모든 도구는 명령을 지원 launchattach합니다. 예를 들어 다음을 사용하여 실행 파일을 시작하고 계측 데이터를 수집합니다.

    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 구성(기본/낮음)은 .NET 개체 할당 도구에 대해 수집된 데이터에 해당합니다.

기본/낮음/높음 구성은 샘플링 주기를 참조하세요. 예를 들어 낮음은 100 샘플/초이고 높음은 4000 샘플/초입니다.

VSDiagnostics.exe 도구가 수집 에이전트에서 작동하려면 해당 에이전트의 DLL 및 COM CLSID가 둘 다 필요합니다. 에이전트에는 추가 구성 옵션도 있을 수 있습니다. 해당 옵션은 적절하게 이스케이프된 JSON으로 형식이 지정된 구성 파일에 지정되는 옵션입니다.

사용 권한

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